Как синхронно закрыть файл в модуле ядра Linux cifsfs или вообще в модулях vfs
Я пытаюсь настроить модуль cifsfs для своего собственного варианта использования, один из случаев, когда мне нужно открыть файл и прочитать его содержимое в cifs_unlink()
позвони, я использую filp_open()
чтобы открыть, прочитайте это тогда filp_close()
затем перейдите к обычному коду unlink()
Я мог бы получить содержание просто отлично.
Проблема в том, filp_close()
звонок будет задерживать запрос smb, пока я не выйду из unlink()
функция, так что запрос Unlink smb прибудет раньше, чем close()
и это вызывает 0xc0000043 NT_STATUS_SHARING_VIOLATION
то разорвать связь не получится с device busy
, пытался позвонить cifs_close()
вместо filp_close()
, тот же результат.
Интересно, как я могу синхронно close()
файл, чтобы избежать этого сбоя.