커널 블럭 디바이스 드라이버의 make_request()에 대해서 질문

ndmnwg의 이미지

리눅스 커널 블럭 디바이스 드라이버에서 make_request()에 들어오는 I/O를 컨트롤하기 위해

wait_event()이나 spin_lock()을 사용해서 대기하고 쓰레드에서 간단한 처리를 한 뒤 다음 코드를 진행하게 하려고 하는데요

해당 블럭 디바이스에 I/O가 발생하면 멈춰버리네요.

make_request()에서 wait_event()이나 spin_lock()을 쓰면 안되는 건가요?

wait_event()이나 spin_lock()을 안쓰고 하면 정상적으로 동작하는데 동기화 문제 때문에 사용을 해야되거든요.