umount 호출이 보류 중인 쓰기를 완료하기 위해 동기화되는지 여부

umount 호출이 보류 중인 쓰기를 완료하기 위해 동기화되는지 여부

우리는 커널 3.12를 실행하는 BBB 기반의 맞춤형 보드를 가지고 있습니다.

제거 및 동기화에 관해 질문이 있습니다.

스크립트가 파티션을 마운트 해제한다고 가정하면 보류 중인 쓰기를 완료하기 전에 명령을 실행해야 합니까 sync? umount?

답변1

sync아니요, 이전에는 달릴 필요가 없었습니다 umount. umount보류 중인 모든 쓰기는 파일 시스템이 실제로 마운트 해제되기 전에 완료됩니다. 또한 일부 프로세스가 여전히 파일 시스템(예: 현재 작업 디렉터리)을 사용하고 있는 경우 마운트 해제를 거부합니다.

편집하다: 제거는 주로 에서 처리됩니다 fs/namespace.c. 거기에서 명시적인 호출을 찾을 수는 없지만 sync"이 마운트 지점을 마운트 해제로 표시하고 추가 작업을 거부하거나 모든 작업이 완료되면 마운트 해제합니다."와 같은 설명이 표시됩니다. 명시적인 사용 중 검사도 볼 수 있습니다.

보류 중인 모든 작업을 실제로 완료 했는지 쉽게 테스트할 수 있습니다 umount. 느린 USB 스틱을 마운트하고 대용량 파일을 여기에 복사한 후 umount직접 호출합니다 cp. 새 프롬프트를 보려면 몇 초 정도 걸립니다. dstat다른 창에서 등을 실행하면 쓰기가 여전히 진행 중인 것을 볼 수 있습니다. 이는 입력한 대로 정확하게 작동합니다 sync.

관련 정보