From 8a7631e872c0b58feedb9094eb3389670e42eff7 Mon Sep 17 00:00:00 2001 From: ericm <ericm> Date: Thu, 11 Aug 2005 23:47:58 +0000 Subject: [PATCH] add some error message, try to catch the occasional lsd upcall failure. --- lustre/mds/mds_lsd.c | 10 ++++++---- lustre/utils/lsd_upcall.c | 18 +++++++++++++++++- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/lustre/mds/mds_lsd.c b/lustre/mds/mds_lsd.c index 3e7bd12401..13451d3736 100644 --- a/lustre/mds/mds_lsd.c +++ b/lustre/mds/mds_lsd.c @@ -63,8 +63,8 @@ static struct upcall_cache _lsd_cache; static struct list_head _lsd_hashtable[MDS_LSD_HASHSIZE]; #define MDS_LSD_UPCALL_PATH "/usr/sbin/lsd_upcall" -#define MDS_LSD_ACQUIRE_EXPIRE (5) -#define MDS_LSD_ENTRY_EXPIRE (5 * 60) +#define MDS_LSD_ACQUIRE_EXPIRE (10) +#define MDS_LSD_ENTRY_EXPIRE (10 * 60) #define MDS_LSD_ERR_ENTRY_EXPIRE (30) struct upcall_cache *__mds_get_global_lsd_cache() @@ -136,7 +136,8 @@ static int lsd_make_upcall(struct upcall_cache *cache, "/proc/fs/lustre/mds/lsd_upcall\n", argv[0], argv[1], rc); } else { - CDEBUG(D_SEC, "Invoked upcall %s %s\n", argv[0], argv[1]); + CWARN("%lu: lsd %p Invoked upcall %s %s\n", + get_seconds(), entry, argv[0], argv[1]); } RETURN(rc); } @@ -189,7 +190,8 @@ static int lsd_parse_downcall(struct upcall_cache *cache, lsd->lsd_ginfo = ginfo; lsd->lsd_nperms = lsd_args->nperms; - CWARN("LSD: %d:%d, ngrps %u, nperms %u\n", lsd->lsd_uid, lsd->lsd_gid, + CWARN("LSD (%p): %d:%d, ngrps %u, nperms %u\n", + lentry, lsd->lsd_uid, lsd->lsd_gid, lsd->lsd_ginfo ? lsd->lsd_ginfo->ngroups : 0, lsd->lsd_nperms); RETURN(0); diff --git a/lustre/utils/lsd_upcall.c b/lustre/utils/lsd_upcall.c index 9e1f6409bd..1fbd45a129 100644 --- a/lustre/utils/lsd_upcall.c +++ b/lustre/utils/lsd_upcall.c @@ -29,6 +29,7 @@ #include <fcntl.h> #include <pwd.h> #include <grp.h> +#include <syslog.h> #include <liblustre.h> #include <linux/lustre_idl.h> @@ -353,6 +354,14 @@ void show_result(struct lsd_downcall_args *dc) dc->perms[i].nid, dc->perms[i].perm); } +#define log_msg(testing, fmt, args...) \ + { \ + if (testing) \ + printf(fmt, ## args); \ + else \ + syslog(LOG_ERR, fmt, ## args); \ + } + void usage(char *prog) { printf("Usage: %s [-t] uid\n", prog); @@ -409,11 +418,18 @@ do_downcall: } else { dc_fd = open(dc_name, O_WRONLY); if (dc_fd < 0) { - printf("can't open device %s\n", dc_name); + log_msg(testing, "can't open device %s: %s\n", + dc_name, strerror(errno)); + return -errno; } rc = write(dc_fd, &ioc_data, sizeof(ioc_data)); + if (rc != sizeof(ioc_data)) { + log_msg(testing, "partial write ret %d: %s\n", + rc, strerror(errno)); + } + return (rc != sizeof(ioc_data)); } } -- GitLab