From b777c8891b30a2f16638fd0763a20eb4096c70fd Mon Sep 17 00:00:00 2001 From: bwzhou <bwzhou> Date: Fri, 11 Jan 2008 09:59:47 +0000 Subject: [PATCH] Branch HEAD b=12191 r=adilger, johann Add verbosity control to liblustreapi messages. --- lustre/include/lustre/liblustreapi.h | 19 ++ lustre/utils/liblustreapi.c | 366 ++++++++++++++++----------- 2 files changed, 244 insertions(+), 141 deletions(-) diff --git a/lustre/include/lustre/liblustreapi.h b/lustre/include/lustre/liblustreapi.h index 696dd2c99b..bc17911a01 100644 --- a/lustre/include/lustre/liblustreapi.h +++ b/lustre/include/lustre/liblustreapi.h @@ -16,7 +16,26 @@ typedef void (*llapi_cb_t)(char *obd_type_name, char *obd_name, char *obd_uuid, void *args); +/* liblustreapi message severity level */ +enum llapi_message_level { + LLAPI_MSG_OFF = 0, + LLAPI_MSG_FATAL = 1, + LLAPI_MSG_ERROR = 2, + LLAPI_MSG_WARN = 3, + LLAPI_MSG_NORMAL = 4, + LLAPI_MSG_INFO = 5, + LLAPI_MSG_DEBUG = 6, + LLAPI_MSG_MAX +}; + +/* the bottom three bits reserved for llapi_message_level */ +#define LLAPI_MSG_MASK 0x00000007 +#define LLAPI_MSG_NO_ERRNO 0x00000010 + /* liblustreapi.c */ +extern void llapi_msg_set_level(int level); +extern void llapi_err(int level, char *fmt, ...); +extern void llapi_printf(int level, char *fmt, ...); extern int llapi_file_create(const char *name, unsigned long stripe_size, int stripe_offset, int stripe_count, int stripe_pattern); diff --git a/lustre/utils/liblustreapi.c b/lustre/utils/liblustreapi.c index 89ca95e24a..8efe2db20d 100644 --- a/lustre/utils/liblustreapi.c +++ b/lustre/utils/liblustreapi.c @@ -96,15 +96,51 @@ static const int S_IFMAX = DT_DOOR; static const int S_IFMAX = DT_SOCK; #endif -static void err_msg(char *fmt, ...) +/* liblustreapi message level */ +static int llapi_msg_level = LLAPI_MSG_MAX; + +void llapi_msg_set_level(int level) +{ + /* ensure level is in the good range */ + if (level < LLAPI_MSG_OFF) + llapi_msg_level = LLAPI_MSG_OFF; + else if (level > LLAPI_MSG_MAX) + llapi_msg_level = LLAPI_MSG_MAX; + else + llapi_msg_level = level; +} + +void llapi_err(int level, char *fmt, ...) { va_list args; int tmp_errno = abs(errno); + if ((level & LLAPI_MSG_MASK) > llapi_msg_level) + return; + va_start(args, fmt); vfprintf(stderr, fmt, args); va_end(args); - fprintf(stderr, ": %s (%d)\n", strerror(tmp_errno), tmp_errno); + + if (level & LLAPI_MSG_NO_ERRNO) + fprintf(stderr, "\n"); + else + fprintf(stderr, ": %s (%d)\n", strerror(tmp_errno), tmp_errno); +} + +#define llapi_err_noerrno(level, fmt, a...) \ + llapi_err((level) | LLAPI_MSG_NO_ERRNO, fmt, ## a) + +void llapi_printf(int level, char *fmt, ...) +{ + va_list args; + + if ((level & LLAPI_MSG_MASK) > llapi_msg_level) + return; + + va_start(args, fmt); + vfprintf(stdout, fmt, args); + va_end(args); } int parse_size(char *optarg, unsigned long long *size, @@ -174,7 +210,7 @@ int llapi_file_open(const char *name, int flags, int mode, if (fd < 0) { rc = -errno; - err_msg("unable to open '%s'", name); + llapi_err(LLAPI_MSG_ERROR, "unable to open '%s'", name); return rc; } @@ -183,29 +219,35 @@ int llapi_file_open(const char *name, int flags, int mode, page_size = LOV_MIN_STRIPE_SIZE; if (getpagesize() > page_size) { page_size = getpagesize(); - fprintf(stderr, "warning: your page size (%u) is larger than " - "expected (%u).\n", page_size, LOV_MIN_STRIPE_SIZE); + llapi_err_noerrno(LLAPI_MSG_WARN, + "warning: your page size (%u) is " + "larger than expected (%u)", page_size, + LOV_MIN_STRIPE_SIZE); } if (stripe_size < 0 || (stripe_size & (LOV_MIN_STRIPE_SIZE - 1))) { errno = rc = -EINVAL; - err_msg("error: bad stripe_size %lu, must be an even " - "multiple of %d bytes", stripe_size, page_size); + llapi_err(LLAPI_MSG_ERROR, "error: bad stripe_size %lu, " + "must be an even multiple of %d bytes", + stripe_size, page_size); goto out; } if (stripe_offset < -1 || stripe_offset > MAX_OBD_DEVICES) { errno = rc = -EINVAL; - err_msg("error: bad stripe offset %d", stripe_offset); + llapi_err(LLAPI_MSG_ERROR, "error: bad stripe offset %d", + stripe_offset); goto out; } if (stripe_count < -1 || stripe_count > LOV_MAX_STRIPE_COUNT) { errno = rc = -EINVAL; - err_msg("error: bad stripe count %d", stripe_count); + llapi_err(LLAPI_MSG_ERROR, "error: bad stripe count %d", + stripe_count); goto out; } if (stripe_count > 0 && (__u64)stripe_size * stripe_count > 0xffffffff){ errno = rc = -EINVAL; - err_msg("error: stripe_size %lu * stripe_count %u " - "exceeds 4GB", stripe_size, stripe_count); + llapi_err(LLAPI_MSG_ERROR, "error: stripe_size %lu * " + "stripe_count %u exceeds 4GB", stripe_size, + stripe_count); goto out; } @@ -222,8 +264,9 @@ int llapi_file_open(const char *name, int flags, int mode, if (errno != EEXIST && errno != EALREADY) errmsg = strerror(errno); - fprintf(stderr, "error on ioctl "LPX64" for '%s' (%d): %s\n", - (__u64)LL_IOC_LOV_SETSTRIPE, name, fd, errmsg); + llapi_err_noerrno(LLAPI_MSG_ERROR, + "error on ioctl "LPX64" for '%s' (%d): %s", + (__u64)LL_IOC_LOV_SETSTRIPE, name, fd, errmsg); } out: if (rc) { @@ -258,8 +301,9 @@ static int common_param_init(struct find_param *param) { param->lumlen = lov_mds_md_size(MAX_LOV_UUID_COUNT); if ((param->lmd = malloc(sizeof(lstat_t) + param->lumlen)) == NULL) { - err_msg("error: allocation of %d bytes for ioctl", - sizeof(lstat_t) + param->lumlen); + llapi_err(LLAPI_MSG_ERROR, + "error: allocation of %d bytes for ioctl", + sizeof(lstat_t) + param->lumlen); return -ENOMEM; } @@ -295,7 +339,7 @@ int llapi_lov_get_uuids(int fd, struct obd_uuid *uuidp, int *ost_count) rc = ioctl(fd, OBD_IOC_GETNAME, (void *) lov_name); if (rc) { rc = errno; - err_msg("error: can't get lov name."); + llapi_err(LLAPI_MSG_ERROR, "error: can't get lov name"); return rc; } @@ -305,7 +349,7 @@ int llapi_lov_get_uuids(int fd, struct obd_uuid *uuidp, int *ost_count) fp = fopen(buf, "r"); if (fp == NULL) { rc = errno; - err_msg("error: opening '%s'", buf); + llapi_err(LLAPI_MSG_ERROR, "error: opening '%s'", buf); return rc; } @@ -340,7 +384,8 @@ static int setup_obd_uuid(DIR *dir, char *dname, struct find_param *param) if (rc) { if (errno != ENOTTY) { rc = errno; - err_msg("error: can't get lov name: %s", dname); + llapi_err(LLAPI_MSG_ERROR, + "error: can't get lov name: %s", dname); } else { rc = 0; } @@ -355,12 +400,12 @@ static int setup_obd_uuid(DIR *dir, char *dname, struct find_param *param) fp = fopen(buf, "r"); if (fp == NULL) { rc = errno; - err_msg("error: opening '%s'", buf); + llapi_err(LLAPI_MSG_ERROR, "error: opening '%s'", buf); return rc; } if (!param->obduuid && !param->quiet && !param->obds_printed) - printf("OBDS:\n"); + llapi_printf(LLAPI_MSG_NORMAL, "OBDS:\n"); while (fgets(buf, sizeof(buf), fp) != NULL) { if (sscanf(buf, "%d: %s", &index, uuid) < 2) @@ -374,7 +419,7 @@ static int setup_obd_uuid(DIR *dir, char *dname, struct find_param *param) } } else if (!param->quiet && !param->obds_printed) { /* Print everything */ - printf("%s", buf); + llapi_printf(LLAPI_MSG_NORMAL, "%s", buf); } } param->obds_printed = 1; @@ -383,8 +428,9 @@ static int setup_obd_uuid(DIR *dir, char *dname, struct find_param *param) if (!param->quiet && param->obduuid && (param->obdindex == OBD_NOT_FOUND)) { - fprintf(stderr, "error: %s: unknown obduuid: %s\n", - __FUNCTION__, param->obduuid->uuid); + llapi_err_noerrno(LLAPI_MSG_ERROR, + "error: %s: unknown obduuid: %s", + __FUNCTION__, param->obduuid->uuid); //rc = EINVAL; } @@ -420,7 +466,7 @@ retry_get_uuids: ret = -ENOMEM; } - fprintf(stderr, "get ost uuid failed: %s\n", strerror(errno)); + llapi_err(LLAPI_MSG_ERROR, "get ost uuid failed"); return ret; } @@ -459,53 +505,62 @@ void lov_dump_user_lmm_v1(struct lov_user_md_v1 *lum, char *path, int is_dir, if (obdindex != OBD_NOT_FOUND) { for (i = 0; !is_dir && i < lum->lmm_stripe_count; i++) { if (obdindex == lum->lmm_objects[i].l_ost_idx) { - printf("%s\n", path); + llapi_printf(LLAPI_MSG_NORMAL, "%s\n", path); obdstripe = 1; break; } } } else if (!quiet) { - printf("%s\n", path); + llapi_printf(LLAPI_MSG_NORMAL, "%s\n", path); obdstripe = 1; } /* if it's a directory */ if (is_dir) { if (obdstripe == 1) { - printf("default stripe_count: %d stripe_size: %u " - "stripe_offset: %d\n", - lum->lmm_stripe_count == (__u16)-1 ? -1 : - lum->lmm_stripe_count, - lum->lmm_stripe_size, - lum->lmm_stripe_offset == (__u16)-1 ? -1 : - lum->lmm_stripe_offset); + llapi_printf(LLAPI_MSG_NORMAL, + "default stripe_count: %d stripe_size: %u " + "stripe_offset: %d\n", + lum->lmm_stripe_count == (__u16)-1 ? -1 : + lum->lmm_stripe_count, + lum->lmm_stripe_size, + lum->lmm_stripe_offset == (__u16)-1 ? -1 : + lum->lmm_stripe_offset); } return; } if (header && (obdstripe == 1)) { - printf("lmm_magic: 0x%08X\n", lum->lmm_magic); - printf("lmm_object_gr: "LPX64"\n", lum->lmm_object_gr); - printf("lmm_object_id: "LPX64"\n", lum->lmm_object_id); - printf("lmm_stripe_count: %u\n", (int)lum->lmm_stripe_count); - printf("lmm_stripe_size: %u\n", lum->lmm_stripe_size); - printf("lmm_stripe_pattern: %x\n", lum->lmm_pattern); + llapi_printf(LLAPI_MSG_NORMAL, + "lmm_magic: 0x%08X\n", lum->lmm_magic); + llapi_printf(LLAPI_MSG_NORMAL, + "lmm_object_gr: "LPX64"\n", lum->lmm_object_gr); + llapi_printf(LLAPI_MSG_NORMAL, + "lmm_object_id: "LPX64"\n", lum->lmm_object_id); + llapi_printf(LLAPI_MSG_NORMAL, + "lmm_stripe_count: %u\n", (int)lum->lmm_stripe_count); + llapi_printf(LLAPI_MSG_NORMAL, + "lmm_stripe_size: %u\n", lum->lmm_stripe_size); + llapi_printf(LLAPI_MSG_NORMAL, + "lmm_stripe_pattern: %x\n", lum->lmm_pattern); } if (body) { if ((!quiet) && (obdstripe == 1)) - printf("\tobdidx\t\t objid\t\tobjid\t\t group\n"); + llapi_printf(LLAPI_MSG_NORMAL, + "\tobdidx\t\t objid\t\tobjid\t\t group\n"); for (i = 0; i < lum->lmm_stripe_count; i++) { int idx = lum->lmm_objects[i].l_ost_idx; long long oid = lum->lmm_objects[i].l_object_id; long long gr = lum->lmm_objects[i].l_object_gr; if ((obdindex == OBD_NOT_FOUND) || (obdindex == idx)) - printf("\t%6u\t%14llu\t%#13llx\t%14llu%s\n", - idx, oid, oid, gr, - obdindex == idx ? " *" : ""); + llapi_printf(LLAPI_MSG_NORMAL, + "\t%6u\t%14llu\t%#13llx\t%14llu%s\n", + idx, oid, oid, gr, + obdindex == idx ? " *" : ""); } - printf("\n"); + llapi_printf(LLAPI_MSG_NORMAL, "\n"); } } @@ -519,53 +574,64 @@ void lov_dump_user_lmm_join(struct lov_user_md_v1 *lum, char *path, if (obdindex != OBD_NOT_FOUND) { for (i = 0; i < lumj->lmm_stripe_count; i++) { if (obdindex == lumj->lmm_objects[i].l_ost_idx) { - printf("%s\n", path); + llapi_printf(LLAPI_MSG_NORMAL, "%s\n", path); obdstripe = 1; break; } } } else if (!quiet) { - printf("%s\n", path); + llapi_printf(LLAPI_MSG_NORMAL, "%s\n", path); obdstripe = 1; } if (header && obdstripe == 1) { - printf("lmm_magic: 0x%08X\n", lumj->lmm_magic); - printf("lmm_object_gr: "LPX64"\n", lumj->lmm_object_gr); - printf("lmm_object_id: "LPX64"\n", lumj->lmm_object_id); - printf("lmm_stripe_count: %u\n", (int)lumj->lmm_stripe_count); - printf("lmm_stripe_size: %u\n", lumj->lmm_stripe_size); - printf("lmm_stripe_pattern: %x\n", lumj->lmm_pattern); - printf("lmm_extent_count: %x\n", lumj->lmm_extent_count); + llapi_printf(LLAPI_MSG_NORMAL, "lmm_magic: 0x%08X\n", + lumj->lmm_magic); + llapi_printf(LLAPI_MSG_NORMAL, "lmm_object_gr: "LPX64"\n", + lumj->lmm_object_gr); + llapi_printf(LLAPI_MSG_NORMAL, "lmm_object_id: "LPX64"\n", + lumj->lmm_object_id); + llapi_printf(LLAPI_MSG_NORMAL, "lmm_stripe_count: %u\n", + (int)lumj->lmm_stripe_count); + llapi_printf(LLAPI_MSG_NORMAL, "lmm_stripe_size: %u\n", + lumj->lmm_stripe_size); + llapi_printf(LLAPI_MSG_NORMAL, "lmm_stripe_pattern: %x\n", + lumj->lmm_pattern); + llapi_printf(LLAPI_MSG_NORMAL, "lmm_extent_count: %x\n", + lumj->lmm_extent_count); } if (body) { unsigned long long start = -1, end = 0; if (!quiet && obdstripe == 1) - printf("joined\tobdidx\t\t objid\t\tobjid\t\t group" - "\t\tstart\t\tend\n"); + llapi_printf(LLAPI_MSG_NORMAL, + "joined\tobdidx\t\t objid\t\tobjid\t\t group" + "\t\tstart\t\tend\n"); for (i = 0; i < lumj->lmm_stripe_count; i++) { int idx = lumj->lmm_objects[i].l_ost_idx; long long oid = lumj->lmm_objects[i].l_object_id; long long gr = lumj->lmm_objects[i].l_object_gr; if (obdindex == OBD_NOT_FOUND || obdindex == idx) - printf("\t%6u\t%14llu\t%#13llx\t%14llu%s", - idx, oid, oid, gr, - obdindex == idx ? " *" : ""); + llapi_printf(LLAPI_MSG_NORMAL, + "\t%6u\t%14llu\t%#13llx\t%14llu%s", + idx, oid, oid, gr, + obdindex == idx ? " *" : ""); if (start != lumj->lmm_objects[i].l_extent_start || end != lumj->lmm_objects[i].l_extent_end) { start = lumj->lmm_objects[i].l_extent_start; - printf("\t%14llu", start); + llapi_printf(LLAPI_MSG_NORMAL, "\t%14llu", start); end = lumj->lmm_objects[i].l_extent_end; if (end == (unsigned long long)-1) - printf("\t\tEOF\n"); + llapi_printf(LLAPI_MSG_NORMAL, + "\t\tEOF\n"); else - printf("\t\t%llu\n", end); + llapi_printf(LLAPI_MSG_NORMAL, + "\t\t%llu\n", end); } else { - printf("\t\t\t\t\n"); + llapi_printf(LLAPI_MSG_NORMAL, "\t\t\t\t\n"); } } - printf("\n"); + llapi_printf(LLAPI_MSG_NORMAL, "\n"); } } @@ -586,7 +652,8 @@ void llapi_lov_dump_user_lmm(struct find_param *param, (param->verbose || !param->obduuid)); break; default: - printf("unknown lmm_magic: %#x (expecting %#x)\n", + llapi_printf(LLAPI_MSG_NORMAL, + "unknown lmm_magic: %#x (expecting %#x)\n", *(__u32 *)¶m->lmd->lmd_lmm, LOV_USER_MAGIC_V1); return; } @@ -651,9 +718,9 @@ int llapi_file_lookup(int dirfd, const char *name) rc = obd_ioctl_pack(&data, &buf, sizeof(rawbuf)); if (rc) { - fprintf(stderr, - "error: IOC_MDC_LOOKUP pack failed for '%s': rc %d\n", - name, rc); + llapi_err(LLAPI_MSG_ERROR, + "error: IOC_MDC_LOOKUP pack failed for '%s': rc %d", + name, rc); return rc; } @@ -681,17 +748,20 @@ int llapi_mds_getfileinfo(char *path, DIR *parent, * Do the regular lstat(2) instead. */ ret = lstat_f(path, st); if (ret) { - err_msg("error: %s: lstat failed for %s", - __FUNCTION__, path); + llapi_err(LLAPI_MSG_ERROR, + "error: %s: lstat failed for %s", + __FUNCTION__, path); return ret; } } else if (errno == ENOENT) { - err_msg("warning: %s: %s does not exist", __FUNCTION__, - path); + llapi_err(LLAPI_MSG_WARN, + "warning: %s: %s does not exist", + __FUNCTION__, path); return -ENOENT; } else { - err_msg("error: %s: IOC_MDC_GETFILEINFO failed for %s", - __FUNCTION__, path); + llapi_err(LLAPI_MSG_ERROR, + "error: %s: IOC_MDC_GETFILEINFO failed for %s", + __FUNCTION__, path); return ret; } } @@ -730,8 +800,8 @@ static int llapi_semantic_traverse(char *path, int size, DIR *parent, d = opendir(path); if (!d && errno != ENOTDIR) { - fprintf(stderr, "%s: Failed to open '%s': %s.", - __FUNCTION__, path, strerror(errno)); + llapi_err(LLAPI_MSG_ERROR, "%s: Failed to open '%s'", + __FUNCTION__, path); return -EINVAL; } else if (!d && !parent) { /* ENOTDIR. Open the parent dir. */ @@ -754,9 +824,9 @@ static int llapi_semantic_traverse(char *path, int size, DIR *parent, path[len] = 0; if ((len + dent->d_reclen + 2) > size) { - fprintf(stderr, - "error: %s: string buffer is too small\n", - __FUNCTION__); + llapi_err(LLAPI_MSG_ERROR, + "error: %s: string buffer is too small", + __FUNCTION__); break; } strcat(path, "/"); @@ -778,8 +848,9 @@ static int llapi_semantic_traverse(char *path, int size, DIR *parent, switch (dent->d_type) { case DT_UNKNOWN: - fprintf(stderr, "error: %s: '%s' is UNKNOWN type %d", - __FUNCTION__, dent->d_name, dent->d_type); + llapi_err(LLAPI_MSG_ERROR, + "error: %s: '%s' is UNKNOWN type %d", + __FUNCTION__, dent->d_name, dent->d_type); break; case DT_DIR: ret = llapi_semantic_traverse(path, size, d, sem_init, @@ -972,18 +1043,20 @@ static int cb_find_init(char *path, DIR *parent, DIR *dir, lustre_fs = 0; ret = lstat_f(path, st); if (ret) { - err_msg("error: %s: lstat failed for %s", - __FUNCTION__, path); + llapi_err(LLAPI_MSG_ERROR, + "error: %s: lstat failed for %s", + __FUNCTION__, path); return ret; } } else if (errno == ENOENT) { - err_msg("warning: %s: %s does not exist", - __FUNCTION__, path); + llapi_err(LLAPI_MSG_WARN, + "warning: %s: %s does not exist", + __FUNCTION__, path); goto decided; } else { - err_msg("error: %s: %s failed for %s", __FUNCTION__, - dir ? "LL_IOC_MDC_GETINFO" : - "IOC_MDC_GETFILEINFO", path); + llapi_err(LLAPI_MSG_ERROR, "error: %s: %s failed for %s", + __FUNCTION__, dir ? "LL_IOC_MDC_GETINFO" : + "IOC_MDC_GETFILEINFO", path); return ret; } } @@ -1083,8 +1156,10 @@ obd_matches: if (ret == -ENODATA || ret == -ENODEV || ret == -EIO) errno = EIO; - printf("obd_uuid: %s failed %s ", - param->obduuid->uuid, strerror(errno)); + llapi_printf(LLAPI_MSG_NORMAL, + "obd_uuid: %s failed %s ", + param->obduuid->uuid, + strerror(errno)); goto print_path; } } @@ -1098,12 +1173,14 @@ obd_matches: if (ret) { if (errno == ENOENT) { - err_msg("warning: %s: %s does not exist", - __FUNCTION__, path); + llapi_err(LLAPI_MSG_ERROR, + "warning: %s: %s does not exist", + __FUNCTION__, path); goto decided; } else { - fprintf(stderr, "%s: IOC_LOV_GETINFO on %s failed: " - "%s.\n", __FUNCTION__, path, strerror(errno)); + llapi_err(LLAPI_MSG_ERROR, + "%s: IOC_LOV_GETINFO on %s failed", + __FUNCTION__, path); return ret; } } @@ -1121,11 +1198,11 @@ obd_matches: print_path: if (decision != -1) { - printf("%s", path); + llapi_printf(LLAPI_MSG_NORMAL, "%s", path); if (param->zeroend) - printf("%c", '\0'); + llapi_printf(LLAPI_MSG_NORMAL, "%c", '\0'); else - printf("\n"); + llapi_printf(LLAPI_MSG_NORMAL, "\n"); } decided: @@ -1151,8 +1228,8 @@ int llapi_find(char *path, struct find_param *param) int ret, len = strlen(path); if (len > PATH_MAX) { - fprintf(stderr, "%s: Path name '%s' is too long.\n", - __FUNCTION__, path); + llapi_err(LLAPI_MSG_ERROR, "%s: Path name '%s' is too long", + __FUNCTION__, path); return -EINVAL; } @@ -1207,19 +1284,23 @@ static int cb_getstripe(char *path, DIR *parent, DIR *d, void *data, if (ret) { if (errno == ENODATA) { if (!param->obduuid && !param->quiet) - printf("%s has no stripe info\n", path); + llapi_printf(LLAPI_MSG_NORMAL, + "%s has no stripe info\n", path); goto out; } else if (errno == ENOTTY) { - fprintf(stderr, "%s: '%s' not on a Lustre fs?\n", - __FUNCTION__, path); + llapi_err(LLAPI_MSG_ERROR, + "%s: '%s' not on a Lustre fs?", + __FUNCTION__, path); } else if (errno == ENOENT) { - err_msg("warning: %s: %s does not exist", - __FUNCTION__, path); + llapi_err(LLAPI_MSG_WARN, + "warning: %s: %s does not exist", + __FUNCTION__, path); goto out; } else { - err_msg("error: %s: %s failed for %s", __FUNCTION__, - d ? "LL_IOC_LOV_GETSTRIPE" : - "IOC_MDC_GETFILESTRIPE", path); + llapi_err(LLAPI_MSG_ERROR, + "error: %s: %s failed for %s", + __FUNCTION__, d ? "LL_IOC_LOV_GETSTRIPE" : + "IOC_MDC_GETFILESTRIPE", path); } return ret; @@ -1241,8 +1322,9 @@ int llapi_getstripe(char *path, struct find_param *param) int ret = 0, len = strlen(path); if (len > PATH_MAX) { - fprintf(stderr, "%s: Path name '%s' is too long.\n", - __FUNCTION__, path); + llapi_err(LLAPI_MSG_ERROR, + "%s: Path name '%s' is too long", + __FUNCTION__, path); return -EINVAL; } @@ -1286,7 +1368,8 @@ int llapi_obd_statfs(char *path, __u32 type, __u32 index, data.ioc_plen2 = sizeof(struct obd_uuid); if ((rc = obd_ioctl_pack(&data, &rawbuf, sizeof(raw))) != 0) { - fprintf(stderr, "llapi_obd_statfs: error packing ioctl data\n"); + llapi_err(LLAPI_MSG_ERROR, + "llapi_obd_statfs: error packing ioctl data"); return rc; } @@ -1296,7 +1379,8 @@ int llapi_obd_statfs(char *path, __u32 type, __u32 index, if (fd < 0) { rc = errno ? -errno : -EBADF; - err_msg("error: %s: opening '%s'", __FUNCTION__, path); + llapi_err(LLAPI_MSG_ERROR, "error: %s: opening '%s'", + __FUNCTION__, path); return rc; } rc = ioctl(fd, IOC_OBD_STATFS, (void *)rawbuf); @@ -1322,7 +1406,7 @@ int llapi_ping(char *obd_type, char *obd_name) fd = open(path, O_WRONLY); if (fd < 0) { rc = errno; - fprintf(stderr, "error opening %s: %s\n", path, strerror(errno)); + llapi_err(LLAPI_MSG_ERROR, "error opening %s", path); return rc; } @@ -1342,8 +1426,7 @@ int llapi_target_iterate(int type_num, char **obd_type, void *args, llapi_cb_t c if (fp == NULL) { rc = errno; - fprintf(stderr, "error: %s opening "DEVICES_LIST"\n", - strerror(errno)); + llapi_err(LLAPI_MSG_ERROR, "error: opening "DEVICES_LIST); return rc; } @@ -1390,9 +1473,9 @@ static void do_target_check(char *obd_type_name, char *obd_name, rc = llapi_ping(obd_type_name, obd_name); if (rc) { - err_msg("error: check '%s'", obd_name); + llapi_err(LLAPI_MSG_ERROR, "error: check '%s'", obd_name); } else { - printf("%s active.\n", obd_name); + llapi_printf(LLAPI_MSG_NORMAL, "%s active.\n", obd_name); } } @@ -1431,15 +1514,15 @@ int llapi_catinfo(char *dir, char *keyword, char *node_name) root = opendir(dir); if (root == NULL) { rc = errno; - err_msg("open %s failed", dir); + llapi_err(LLAPI_MSG_ERROR, "open %s failed", dir); return rc; } rc = ioctl(dirfd(root), OBD_IOC_LLOG_CATINFO, buf); if (rc) - err_msg("ioctl OBD_IOC_CATINFO failed"); + llapi_err(LLAPI_MSG_ERROR, "ioctl OBD_IOC_CATINFO failed"); else - fprintf(stdout, "%s", data.ioc_pbuf1); + llapi_printf(LLAPI_MSG_NORMAL, "%s", data.ioc_pbuf1); closedir(root); return rc; @@ -1465,7 +1548,7 @@ int llapi_quotacheck(char *mnt, int check_type) root = opendir(mnt); if (!root) { - err_msg("open %s failed", mnt); + llapi_err(LLAPI_MSG_ERROR, "open %s failed", mnt); return -1; } @@ -1483,7 +1566,7 @@ int llapi_poll_quotacheck(char *mnt, struct if_quotacheck *qchk) root = opendir(mnt); if (!root) { - err_msg("open %s failed", mnt); + llapi_err(LLAPI_MSG_ERROR, "open %s failed", mnt); return -1; } @@ -1507,7 +1590,7 @@ int llapi_quotactl(char *mnt, struct if_quotactl *qctl) root = opendir(mnt); if (!root) { - err_msg("open %s failed", mnt); + llapi_err(LLAPI_MSG_ERROR, "open %s failed", mnt); return -1; } @@ -1543,18 +1626,19 @@ static int cb_quotachown(char *path, DIR *parent, DIR *d, void *data, if (rc) { if (errno == ENODATA) { if (!param->obduuid && !param->quiet) - fprintf(stderr, "%s has no stripe info\n", - path); + llapi_err(LLAPI_MSG_ERROR, + "%s has no stripe info", path); rc = 0; } else if (errno == ENOENT) { - err_msg("warning: %s: %s does not exist", - __FUNCTION__, path); + llapi_err(LLAPI_MSG_ERROR, + "warning: %s: %s does not exist", + __FUNCTION__, path); rc = 0; } else if (errno != EISDIR) { rc = errno; - err_msg("%s ioctl failed for %s.", - d ? "LL_IOC_MDC_GETINFO" : - "IOC_MDC_GETFILEINFO", path); + llapi_err(LLAPI_MSG_ERROR, "%s ioctl failed for %s.", + d ? "LL_IOC_MDC_GETINFO" : + "IOC_MDC_GETFILEINFO", path); } return rc; } @@ -1566,11 +1650,11 @@ static int cb_quotachown(char *path, DIR *parent, DIR *d, void *data, * invoke syscall directly. */ rc = syscall(SYS_chown, path, -1, -1); if (rc) - err_msg("error: chown %s (%u,%u)", path); + llapi_err(LLAPI_MSG_ERROR,"error: chown %s (%u,%u)", path); rc = chmod(path, st->st_mode); if (rc) - err_msg("error: chmod %s (%hu)", path, st->st_mode); + llapi_err(LLAPI_MSG_ERROR,"error: chmod %s (%hu)", path, st->st_mode); return rc; } @@ -1582,8 +1666,8 @@ int llapi_quotachown(char *path, int flag) int ret = 0, len = strlen(path); if (len > PATH_MAX) { - fprintf(stderr, "%s: Path name '%s' is too long.\n", - __FUNCTION__, path); + llapi_err(LLAPI_MSG_ERROR, "%s: Path name '%s' is too long", + __FUNCTION__, path); return -EINVAL; } @@ -1622,19 +1706,19 @@ int llapi_getfacl(char *fname, char *cmd) fd = open(fname, 0); if (fd == -1) { - err_msg("open %s failed", fname); + llapi_err(LLAPI_MSG_ERROR,"open %s failed", fname); return -1; } rc = ioctl(fd, LL_IOC_GETFACL, &data); close(fd); if (errno == EBADE) { - fprintf(stderr, "Please use getfacl directly!\n"); + llapi_err(LLAPI_MSG_ERROR, "Please use getfacl directly!"); rc = 1; } else if (rc) { - err_msg("getfacl %s failed", fname); + llapi_err(LLAPI_MSG_ERROR,"getfacl %s failed", fname); } else { - printf("%s", out); + llapi_printf(LLAPI_MSG_NORMAL, "%s", out); } return rc; @@ -1653,22 +1737,22 @@ int llapi_setfacl(char *fname, char *cmd) fd = open(fname, 0); if (fd == -1) { - err_msg("open %s failed", fname); + llapi_err(LLAPI_MSG_ERROR,"open %s failed", fname); return -1; } rc = ioctl(fd, LL_IOC_SETFACL, &data); close(fd); if (errno == EBADE) { - fprintf(stderr, "Please use setfacl directly!\n"); + llapi_err(LLAPI_MSG_ERROR, "Please use setfacl directly!"); rc = 1; } else if (errno == EOPNOTSUPP) { - fprintf(stderr, "setfacl: %s: %s\n", fname, strerror(errno)); + llapi_err(LLAPI_MSG_ERROR, "setfacl: %s: %s", fname); rc = 1; } else if (rc) { - err_msg("setfacl %s failed", fname); + llapi_err(LLAPI_MSG_ERROR,"setfacl %s failed", fname); } else { - printf("%s", out); + llapi_printf(LLAPI_MSG_NORMAL, "%s", out); } return rc; -- GitLab