Как синхронно закрыть файл в модуле ядра 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() файл, чтобы избежать этого сбоя.

0 ответов

Другие вопросы по тегам