우리는 커널 3.12를 실행하는 BBB 기반의 맞춤형 보드를 가지고 있습니다.
제거 및 동기화에 관해 질문이 있습니다.
스크립트가 파티션을 마운트 해제한다고 가정하면 보류 중인 쓰기를 완료하기 전에 명령을 실행해야 합니까 sync
? umount
?
답변1
sync
아니요, 이전에는 달릴 필요가 없었습니다 umount
. umount
보류 중인 모든 쓰기는 파일 시스템이 실제로 마운트 해제되기 전에 완료됩니다. 또한 일부 프로세스가 여전히 파일 시스템(예: 현재 작업 디렉터리)을 사용하고 있는 경우 마운트 해제를 거부합니다.
편집하다: 제거는 주로 에서 처리됩니다 fs/namespace.c
. 거기에서 명시적인 호출을 찾을 수는 없지만 sync
"이 마운트 지점을 마운트 해제로 표시하고 추가 작업을 거부하거나 모든 작업이 완료되면 마운트 해제합니다."와 같은 설명이 표시됩니다. 명시적인 사용 중 검사도 볼 수 있습니다.
보류 중인 모든 작업을 실제로 완료 했는지 쉽게 테스트할 수 있습니다 umount
. 느린 USB 스틱을 마운트하고 대용량 파일을 여기에 복사한 후 umount
직접 호출합니다 cp
. 새 프롬프트를 보려면 몇 초 정도 걸립니다. dstat
다른 창에서 등을 실행하면 쓰기가 여전히 진행 중인 것을 볼 수 있습니다. 이는 입력한 대로 정확하게 작동합니다 sync
.