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