|
@@ -863,6 +863,15 @@ cifs_close_dir(const unsigned int xid, struct cifs_tcon *tcon,
|
|
|
return CIFSFindClose(xid, tcon, fid->netfid);
|
|
|
}
|
|
|
|
|
|
+static int
|
|
|
+cifs_oplock_response(struct cifs_tcon *tcon, struct cifs_fid *fid,
|
|
|
+ struct cifsInodeInfo *cinode)
|
|
|
+{
|
|
|
+ return CIFSSMBLock(0, tcon, fid->netfid, current->tgid, 0, 0, 0, 0,
|
|
|
+ LOCKING_ANDX_OPLOCK_RELEASE, false,
|
|
|
+ cinode->clientCanCacheRead ? 1 : 0);
|
|
|
+}
|
|
|
+
|
|
|
struct smb_version_operations smb1_operations = {
|
|
|
.send_cancel = send_nt_cancel,
|
|
|
.compare_fids = cifs_compare_fids,
|
|
@@ -922,6 +931,7 @@ struct smb_version_operations smb1_operations = {
|
|
|
.query_dir_next = cifs_query_dir_next,
|
|
|
.close_dir = cifs_close_dir,
|
|
|
.calc_smb_size = smbCalcSize,
|
|
|
+ .oplock_response = cifs_oplock_response,
|
|
|
};
|
|
|
|
|
|
struct smb_version_values smb1_values = {
|