CIFS: Reset read oplock to NONE if we have mandatory locks after reopen
We are already doing the same thing for an ordinary open case: we can't keep read oplock on a file if we have mandatory byte-range locks because pagereading can conflict with these locks on a server. Fix it by setting oplock level to NONE. Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com> Signed-off-by: Steve French <smfrench@gmail.com>
This commit is contained in:
parent
f2cca6a7c9
commit
de74025052
|
@ -739,6 +739,15 @@ reopen_success:
|
|||
* to the server to get the new inode info.
|
||||
*/
|
||||
|
||||
/*
|
||||
* If the server returned a read oplock and we have mandatory brlocks,
|
||||
* set oplock level to None.
|
||||
*/
|
||||
if (server->ops->is_read_op(oplock) && cifs_has_mand_locks(cinode)) {
|
||||
cifs_dbg(FYI, "Reset oplock val from read to None due to mand locks\n");
|
||||
oplock = 0;
|
||||
}
|
||||
|
||||
server->ops->set_fid(cfile, &cfile->fid, oplock);
|
||||
if (oparms.reconnect)
|
||||
cifs_relock_file(cfile);
|
||||
|
|
Loading…
Reference in New Issue