At 2020-09-15 00:54:31, "Jeff Layton" <jlayton@redhat.com> wrote: >On Mon, 2020-09-14 at 09:26 -0400, Jeff Layton wrote: >> On Mon, 2020-09-14 at 19:32 +0800, liuwei wrote: >> > Hi, >> > I found many error info in the ganesha.log when stop nfs-ganesha.service, as follows. >> > ganesha.log: >> > £ºganesha.nfsd-1550083[Admin] mdcache_lru_clean INODE:F_DBG:Trusting op_ctx export id 2 >> > £ºganesha.nfsd-1550083[Admin] posix2fsal_error:FSAL:CRIT:Default case mapping Transport endpoint is not connected (107) to ERR_FSAL_SERVERFAULT >> > £ºganesha.nfsd-1550083[Admin] >> > mdcache_Iru_clean:INODE LRU:CRIT:Error closing file in cleanup:Undefined server error >> > My version info: Ganesha-3.3+FSAL_CEPH(ceph version 14.2.10)£» >> > > >We should probably add a patch similar to this. I don't have the cycles >to test this at the moment. liuwei, would you be able to do so? > >---------------------------8<---------------------------- > >FSAL_CEPH: paper over -ENOTCONN return from close when shutting down > >When we're shutting down the server, we'll usually abort the connection >first. The mdcache will then try to clean up entries and issue a ->close >to each, and FSAL_CEPH ends up returning -ENOTCONN in that situation >which causes a lot of log spam. > >Fix this by just ignoring -ENOTCONN errors in ceph_close_my_fd when >ganesha is shutting down. > >Change-Id: If8231998a61e759be4d044f102ae6dbcebfdc975 >Reported-by: liuwei <liuwei_coder@163.com> >Signed-off-by: Jeff Layton <jlayton@redhat.com> >--- > src/FSAL/FSAL_CEPH/handle.c | 14 +++++++++++--- > 1 file changed, 11 insertions(+), 3 deletions(-) > >diff --git a/src/FSAL/FSAL_CEPH/handle.c b/src/FSAL/FSAL_CEPH/handle.c >index 464db598e6c8..c5891894bd01 100644 >--- a/src/FSAL/FSAL_CEPH/handle.c >+++ b/src/FSAL/FSAL_CEPH/handle.c >@@ -45,6 +45,7 @@ > #include "nfs_exports.h" > #include "sal_data.h" > #include "statx_compat.h" >+#include "nfs_core.h" > #include "linux/falloc.h" > > /** >@@ -863,15 +864,22 @@ static fsal_status_t ceph_open_my_fd(struct ceph_handle *myself, > > static fsal_status_t ceph_close_my_fd(struct ceph_fd *my_fd) > { >- int rc = 0; > fsal_status_t status = fsalstat(ERR_FSAL_NO_ERROR, 0); > struct ceph_export *export = > container_of(op_ctx->fsal_export, struct ceph_export, export); > > if (my_fd->fd != NULL && my_fd->openflags != FSAL_O_CLOSED) { >- rc = ceph_ll_close(export->cmount, my_fd->fd); >- if (rc < 0) >+ int rc = ceph_ll_close(export->cmount, my_fd->fd); >+ >+ if (rc < 0) { >+ /* >+ * We expect -ENOTCONN errors on shutdown. Ignore >+ * them so we don't spam the logs. >+ */ >+ if (rc == -ENOTCONN && admin_shutdown) >+ rc = 0; > status = ceph2fsal_error(rc); >+ } > my_fd->fd = NULL; > my_fd->openflags = FSAL_O_CLOSED; > } >-- >2.26.2 > >_______________________________________________ >Devel mailing list -- devel@lists.nfs-ganesha.org >To unsubscribe send an email to devel-leave@lists.nfs-ganesha.org