[PATCH] vfs_gpfs: Asjust debug level when get_winattrs returns EBADF

Christof Schmitt cs at samba.org
Thu May 24 23:19:43 UTC 2018


On Thu, May 24, 2018 at 09:52:52AM +0200, Swen Schillig wrote:
> Hi Christof
> 
> > I don't think you want to return with NT_STATUS_OK 
> > in case of errno == EBADF.
> > 
> > Why not consolidating the errors a bit with a switch statement?
> > So something like this 
> Ok, my suggestion is wrong as well (ret could change during the error
> processing for gpfswrap_get_winattrs_path) but I still think you need
> to modify yours.

Yes, you are correct. The easiest way is probably adding the additional
return to keep the same logic. See attached patch.

Christof
-------------- next part --------------
From 92fc86bc793c88965e65b445aea7c80f22655138 Mon Sep 17 00:00:00 2001
From: Christof Schmitt <cs at samba.org>
Date: Wed, 23 May 2018 15:04:08 -0700
Subject: [PATCH] vfs_gpfs: Adjust debug level when get_winattrs returns EBADF

This is returned for a get_winattrs call against a non-gpfs file system.
This can happen for the .. entry when listing a share on the file system
root.

Signed-off-by: Christof Schmitt <cs at samba.org>
---
 source3/modules/vfs_gpfs.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/source3/modules/vfs_gpfs.c b/source3/modules/vfs_gpfs.c
index a0fd48f..965dfac 100644
--- a/source3/modules/vfs_gpfs.c
+++ b/source3/modules/vfs_gpfs.c
@@ -1612,7 +1612,16 @@ static NTSTATUS vfs_gpfs_get_dos_attributes(struct vfs_handle_struct *handle,
 	if (ret == -1 && errno == EACCES) {
 		ret = get_dos_attr_with_capability(smb_fname, &attrs);
 	}
-	if (ret == -1) {
+
+	if (ret == -1 && errno == EBADF) {
+		/*
+		 * Returned for directory listings in gpfs root for
+		 * .. entry which steps out of gpfs.
+		 */
+		DBG_DEBUG("Getting winattrs for %s returned EBADF.\n",
+			  smb_fname->base_name);
+		return map_nt_error_from_unix(errno);
+	} else if (ret == -1) {
 		DBG_WARNING("Getting winattrs failed for %s: %s\n",
 			    smb_fname->base_name, strerror(errno));
 		return map_nt_error_from_unix(errno);
-- 
1.8.3.1



More information about the samba-technical mailing list