diff --git a/lustre/mds/mds_lsd.c b/lustre/mds/mds_lsd.c index 3e7bd1240145ffc918ef481a64d9c1ff46fc48ed..13451d37368f70b3261ecde95b42e4a09007b5c0 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 9e1f6409bdd9548eabd92246d44cdde0c5728ef0..1fbd45a1299dc76427637493f81cde09246ac0c7 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)); } }