smbd: Change logging when SET_OFFLINE is not supported
authorChristof Schmitt <christof.schmitt@us.ibm.com>
Thu, 6 Jun 2013 00:08:03 +0000 (17:08 -0700)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 6 Jun 2013 02:30:26 +0000 (04:30 +0200)
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@us.ibm.com>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
Autobuild-Date(master): Thu Jun  6 04:30:26 CEST 2013 on sn-devel-104

source3/smbd/dosmode.c

index 04d27c7a2eb4e6c268bf5758b6cbe1ae52966967..a6ad107a01e68c40b100fc8365770df495a47bf5 100644 (file)
@@ -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)));
                        }
                }
        }