]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blobdiff - fs/cifs/cifsglob.h
smb3: add mount option to allow RW caching of share accessed by only 1 client
[mirror_ubuntu-jammy-kernel.git] / fs / cifs / cifsglob.h
index 3f12da7f2f7f6e708f6e09fc8319a3a82099fa14..fa5abe3a8514842adde9962f2ef32bc8b623d673 100644 (file)
@@ -560,6 +560,7 @@ struct smb_vol {
        bool direct_io:1;
        bool strict_io:1; /* strict cache behavior */
        bool cache_ro:1;
+       bool cache_rw:1;
        bool remap:1;      /* set to remap seven reserved chars in filenames */
        bool sfu_remap:1;  /* remap seven reserved chars ala SFU */
        bool posix_paths:1; /* unset to not ask for posix pathnames. */
@@ -622,7 +623,7 @@ struct smb_vol {
                         CIFS_MOUNT_CIFS_BACKUPUID | CIFS_MOUNT_CIFS_BACKUPGID | \
                         CIFS_MOUNT_UID_FROM_ACL | CIFS_MOUNT_NO_HANDLE_CACHE | \
                         CIFS_MOUNT_NO_DFS | CIFS_MOUNT_MODE_FROM_SID | \
-                        CIFS_MOUNT_RO_CACHE)
+                        CIFS_MOUNT_RO_CACHE | CIFS_MOUNT_RW_CACHE)
 
 /**
  * Generic VFS superblock mount flags (s_flags) to consider when
@@ -1370,7 +1371,7 @@ void cifsFileInfo_put(struct cifsFileInfo *cifs_file);
 
 #define CIFS_CACHE_READ(cinode) ((cinode->oplock & CIFS_CACHE_READ_FLG) || (CIFS_SB(cinode->vfs_inode.i_sb)->mnt_cifs_flags & CIFS_MOUNT_RO_CACHE))
 #define CIFS_CACHE_HANDLE(cinode) (cinode->oplock & CIFS_CACHE_HANDLE_FLG)
-#define CIFS_CACHE_WRITE(cinode) (cinode->oplock & CIFS_CACHE_WRITE_FLG)
+#define CIFS_CACHE_WRITE(cinode) ((cinode->oplock & CIFS_CACHE_WRITE_FLG) || (CIFS_SB(cinode->vfs_inode.i_sb)->mnt_cifs_flags & CIFS_MOUNT_RW_CACHE))
 
 /*
  * One of these for each file inode