[PATCH] smb3: log warning if CSC policy conflicts with linux kernel client cache mount option

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



If the server config (e.g. Samba smb.conf "csc policy = disable)
for the share indicates that the share should not be cached, log
a warning message in the Linux kernel client if forced client side
caching ("cache=ro" or "cache=singleclient") was requested on mount.

Signed-off-by: Steve French <stfrench@xxxxxxxxxxxxx>
---
 fs/cifs/connect.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index d9a995588c74..85f8d943a05a 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -3478,6 +3478,14 @@ cifs_get_tcon(struct cifs_ses *ses, struct
smb_vol *volume_info)
         tcon->use_resilient = true;
     }

+    /* If the user really knows what they are doing they can override */
+    if (tcon->share_flags & SMB2_SHAREFLAG_NO_CACHING) {
+        if (volume_info->cache_ro)
+            cifs_dbg(VFS, "cache=ro requested on mount but NO_CACHING
flag set on share\n");
+        else if (volume_info->cache_rw)
+            cifs_dbg(VFS, "cache=singleclient requested on mount but
NO_CACHING flag set on share\n");
+    }
+
     /*
      * We can have only one retry value for a connection to a share so for
      * resources mounted more than once to the same server share the last

-- 
Thanks,

Steve
From dae931c02aed14427ea4022c7e8038ab3103b4d9 Mon Sep 17 00:00:00 2001
From: Steve French <stfrench@xxxxxxxxxxxxx>
Date: Tue, 3 Sep 2019 17:49:46 -0500
Subject: [PATCH] smb3: log warning if CSC policy conflicts with cache mount
 option

If the server config (e.g. Samba smb.conf "csc policy = disable)
for the share indicates that the share should not be cached, log
a warning message if forced client side caching ("cache=ro" or
"cache=singleclient") is requested on mount.

Signed-off-by: Steve French <stfrench@xxxxxxxxxxxxx>
---
 fs/cifs/connect.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index d9a995588c74..85f8d943a05a 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -3478,6 +3478,14 @@ cifs_get_tcon(struct cifs_ses *ses, struct smb_vol *volume_info)
 		tcon->use_resilient = true;
 	}
 
+	/* If the user really knows what they are doing they can override */
+	if (tcon->share_flags & SMB2_SHAREFLAG_NO_CACHING) {
+		if (volume_info->cache_ro)
+			cifs_dbg(VFS, "cache=ro requested on mount but NO_CACHING flag set on share\n");
+		else if (volume_info->cache_rw)
+			cifs_dbg(VFS, "cache=singleclient requested on mount but NO_CACHING flag set on share\n");
+	}
+
 	/*
 	 * We can have only one retry value for a connection to a share so for
 	 * resources mounted more than once to the same server share the last
-- 
2.20.1


[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux