如何在Linux内核cifsfs模块或一般的vfs模块中同步关闭文件

时间:2016-11-03 16:38:17

标签: linux linux-kernel vfs cifs

我正在尝试为我自己的用例自定义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 个答案:

没有答案