[PATCH] smbd: Change logging when SET_OFFLINE is not supported

Christof Schmitt christof.schmitt at us.ibm.com
Wed Jun 5 18:08:03 MDT 2013


A client can send a request to set the OFFLINE attribute. In the default
code this is not supported and triggers a log message each time. Change
this to only log with level 0 when an actual errors occurs, and log
ENOTSUP with level 10.

Signed-off-by: Christof Schmitt <christof.schmitt at us.ibm.com>
---
 source3/smbd/dosmode.c |   25 +++++++++++++++----------
 1 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/source3/smbd/dosmode.c b/source3/smbd/dosmode.c
index 04d27c7..a6ad107 100644
--- a/source3/smbd/dosmode.c
+++ b/source3/smbd/dosmode.c
@@ -732,16 +732,21 @@ int file_set_dosmode(connection_struct *conn, struct smb_filename *smb_fname,
 
 	old_mode = dos_mode(conn, smb_fname);
 
-	if (dosmode & FILE_ATTRIBUTE_OFFLINE) {
-		if (!(old_mode & FILE_ATTRIBUTE_OFFLINE)) {
-			lret = SMB_VFS_SET_OFFLINE(conn, smb_fname);
-			if (lret == -1) {
-				DEBUG(0, ("set_dos_mode: client has asked to "
-					  "set FILE_ATTRIBUTE_OFFLINE to "
-					  "%s/%s but there was an error while "
-					  "setting it or it is not "
-					  "supported.\n", parent_dir,
-					  smb_fname_str_dbg(smb_fname)));
+	if ((dosmode & FILE_ATTRIBUTE_OFFLINE) &&
+	    !(old_mode & FILE_ATTRIBUTE_OFFLINE)) {
+		lret = SMB_VFS_SET_OFFLINE(conn, smb_fname);
+		if (lret == -1) {
+			if (errno == ENOTSUP) {
+				DEBUG(10, ("Setting FILE_ATTRIBUTE_OFFLINE for "
+					   "%s/%s is not supported.\n",
+					   parent_dir,
+					   smb_fname_str_dbg(smb_fname)));
+			} else {
+				DEBUG(0, ("An error occurred while setting "
+					  "FILE_ATTRIBUTE_OFFLINE for "
+					  "%s/%s: %s", parent_dir,
+					  smb_fname_str_dbg(smb_fname),
+					  strerror(errno)));
 			}
 		}
 	}
-- 
1.7.1



More information about the samba-technical mailing list