[블럭 디바이스 드라이버] 디스크에 직접 I/O 방법 질문

ndmnwg의 이미지

블럭 디바이스 드라이버에서 제가 정의한 구조체 데이터를 bio를 이용해서 직접 쓰고 읽는 방법을 알고 싶습니다.

md.c의 md_super_write와 sync_page_io(?) 이 두 함수를 참고해서 테스트 해보고 있는데

디스크에 쓰고 나서 바로 읽으면 제가 썻던 데이터를 그대로 읽을 수 있습니다.

문제는 재부팅 혹은 모듈을 내렸다가 다시 올려서 제가 데이터를 썻던 위치에 다시 읽어보면

전혀 다른 쓰레기 값이 읽혀집니다.

제 생각에는 디스크에 쓸 때 버퍼에만 쓰여지고 실제 디스크에는 반영이 되지 않아서 이런 현상이 발생 하는 것 같은데

제 생각이 맞는건지 틀린건지 잘 모르겠습니다.

조언 부탁드립니다.

bushi의 이미지

kernel/power/block_io.c 를 보세요.

ndmnwg의 이미지

kernel/power/block_io.c가 없네요...

현재 커널 2.6.32 버전을 쓰고 있는데

무슨 버전부터 지원이 되는건가요?