[SMB3][PATCH] Add more detailed log information on cache=ro mounts

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

 



Make it easier to tell if the share we are mounting with cache=ro is
considered read only by the server.  Obviously there are cases where
the user could know that no one will be writing to the share but this
additional information could be helpful.

$ dmesg
[374786.661113] CIFS: Attempting to mount //localhost/test
[374786.661130] CIFS VFS: mounting share with read only caching.
Ensure that the share will not be modified while in use.
[374786.662199] CIFS VFS: read only mount of RW share

[374793.473091] CIFS: Attempting to mount //localhost/test-ro
[374793.473109] CIFS VFS: mounting share with read only caching.
Ensure that the share will not be modified while in use.
[374793.474266] CIFS VFS: mounted to read only share


-- 
Thanks,

Steve
From dd2abf8bbeb317555a0aa7132f663dfe30ae2911 Mon Sep 17 00:00:00 2001
From: Steve French <stfrench@xxxxxxxxxxxxx>
Date: Thu, 29 Aug 2019 22:33:38 -0500
Subject: [PATCH] smb3: add some more descriptive messages about share when
 mounting cache=ro

Add some additional logging so the user can see if the share they
mounted with cache=ro is considered read only by the server

CIFS: Attempting to mount //localhost/test
CIFS VFS: mounting share with read only caching. Ensure that the share will not be modified while in use.
CIFS VFS: read only mount of RW share

CIFS: Attempting to mount //localhost/test-ro
CIFS VFS: mounting share with read only caching. Ensure that the share will not be modified while in use.
CIFS VFS: mounted to read only share

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

diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index 4e622953dd5a..072c01f4e9c1 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -4197,8 +4197,16 @@ static int mount_get_conns(struct smb_vol *vol, struct cifs_sb_info *cifs_sb,
 		tcon->unix_ext = 0; /* server does not support them */
 
 	/* do not care if a following call succeed - informational */
-	if (!tcon->pipe && server->ops->qfs_tcon)
+	if (!tcon->pipe && server->ops->qfs_tcon) {
 		server->ops->qfs_tcon(*xid, tcon);
+		if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_RO_CACHE) {
+			if (tcon->fsDevInfo.DeviceCharacteristics &
+			    FILE_READ_ONLY_DEVICE)
+				cifs_dbg(VFS, "mounted to read only share\n");
+			else
+				cifs_dbg(VFS, "read only mount of RW share\n");
+		}
+	}
 
 	cifs_sb->wsize = server->ops->negotiate_wsize(tcon, vol);
 	cifs_sb->rsize = server->ops->negotiate_rsize(tcon, vol);
-- 
2.20.1


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

  Powered by Linux