diff options
Diffstat (limited to 'fs/cifs/smb2ops.c')
-rw-r--r-- | fs/cifs/smb2ops.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c index 192f51a12cf1..35ddc3ed119d 100644 --- a/fs/cifs/smb2ops.c +++ b/fs/cifs/smb2ops.c | |||
@@ -905,6 +905,17 @@ smb2_query_symlink(const unsigned int xid, struct cifs_tcon *tcon, | |||
905 | } | 905 | } |
906 | 906 | ||
907 | static void | 907 | static void |
908 | smb2_downgrade_oplock(struct TCP_Server_Info *server, | ||
909 | struct cifsInodeInfo *cinode, bool set_level2) | ||
910 | { | ||
911 | if (set_level2) | ||
912 | server->ops->set_oplock_level(cinode, SMB2_OPLOCK_LEVEL_II, | ||
913 | 0, NULL); | ||
914 | else | ||
915 | server->ops->set_oplock_level(cinode, 0, 0, NULL); | ||
916 | } | ||
917 | |||
918 | static void | ||
908 | smb2_set_oplock_level(struct cifsInodeInfo *cinode, __u32 oplock, | 919 | smb2_set_oplock_level(struct cifsInodeInfo *cinode, __u32 oplock, |
909 | unsigned int epoch, bool *purge_cache) | 920 | unsigned int epoch, bool *purge_cache) |
910 | { | 921 | { |
@@ -1110,6 +1121,7 @@ struct smb_version_operations smb20_operations = { | |||
1110 | .clear_stats = smb2_clear_stats, | 1121 | .clear_stats = smb2_clear_stats, |
1111 | .print_stats = smb2_print_stats, | 1122 | .print_stats = smb2_print_stats, |
1112 | .is_oplock_break = smb2_is_valid_oplock_break, | 1123 | .is_oplock_break = smb2_is_valid_oplock_break, |
1124 | .downgrade_oplock = smb2_downgrade_oplock, | ||
1113 | .need_neg = smb2_need_neg, | 1125 | .need_neg = smb2_need_neg, |
1114 | .negotiate = smb2_negotiate, | 1126 | .negotiate = smb2_negotiate, |
1115 | .negotiate_wsize = smb2_negotiate_wsize, | 1127 | .negotiate_wsize = smb2_negotiate_wsize, |
@@ -1184,6 +1196,7 @@ struct smb_version_operations smb21_operations = { | |||
1184 | .clear_stats = smb2_clear_stats, | 1196 | .clear_stats = smb2_clear_stats, |
1185 | .print_stats = smb2_print_stats, | 1197 | .print_stats = smb2_print_stats, |
1186 | .is_oplock_break = smb2_is_valid_oplock_break, | 1198 | .is_oplock_break = smb2_is_valid_oplock_break, |
1199 | .downgrade_oplock = smb2_downgrade_oplock, | ||
1187 | .need_neg = smb2_need_neg, | 1200 | .need_neg = smb2_need_neg, |
1188 | .negotiate = smb2_negotiate, | 1201 | .negotiate = smb2_negotiate, |
1189 | .negotiate_wsize = smb2_negotiate_wsize, | 1202 | .negotiate_wsize = smb2_negotiate_wsize, |
@@ -1259,6 +1272,7 @@ struct smb_version_operations smb30_operations = { | |||
1259 | .print_stats = smb2_print_stats, | 1272 | .print_stats = smb2_print_stats, |
1260 | .dump_share_caps = smb2_dump_share_caps, | 1273 | .dump_share_caps = smb2_dump_share_caps, |
1261 | .is_oplock_break = smb2_is_valid_oplock_break, | 1274 | .is_oplock_break = smb2_is_valid_oplock_break, |
1275 | .downgrade_oplock = smb2_downgrade_oplock, | ||
1262 | .need_neg = smb2_need_neg, | 1276 | .need_neg = smb2_need_neg, |
1263 | .negotiate = smb2_negotiate, | 1277 | .negotiate = smb2_negotiate, |
1264 | .negotiate_wsize = smb2_negotiate_wsize, | 1278 | .negotiate_wsize = smb2_negotiate_wsize, |