From: Vladimir Saveliev Date: Tue, 14 Dec 2010 12:30:12 +0000 (+0300) Subject: b=13698 llapi_get_version X-Git-Tag: 1.8.5.51~14 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=f98517914ea8fdde8df2828453f39501cb54e80d;p=fs%2Flustre-release.git b=13698 llapi_get_version this uses OBD_GET_VERSION ioctl to obtain lustre version i=andreas.dilger --- diff --git a/lustre/include/lustre/liblustreapi.h b/lustre/include/lustre/liblustreapi.h index 394253b..17c6a00 100644 --- a/lustre/include/lustre/liblustreapi.h +++ b/lustre/include/lustre/liblustreapi.h @@ -178,6 +178,7 @@ extern int parse_size(char *optarg, unsigned long long *size, extern void llapi_ping_target(char *obd_type, char *obd_name, char *obd_uuid, void *args); extern int llapi_path2fid(const char *path, lustre_fid *fid); +extern int llapi_get_version(char *buffer, int buffer_size, char **version); struct mntent; #define HAVE_LLAPI_IS_LUSTRE_MNT diff --git a/lustre/utils/liblustreapi.c b/lustre/utils/liblustreapi.c index e7e30a1..16ef8b9 100644 --- a/lustre/utils/liblustreapi.c +++ b/lustre/utils/liblustreapi.c @@ -2427,3 +2427,31 @@ int llapi_get_connect_flags(const char *mnt, __u64 *flags) "ioctl on %s for getting connect flags failed", mnt); return rc; } + +int llapi_get_version(char *buffer, int buffer_size, + char **version) +{ + int rc; + int fd; + struct obd_ioctl_data *data = (struct obd_ioctl_data *)buffer; + + fd = open(OBD_DEV_PATH, O_RDONLY); + if (fd == -1) + return -errno; + + memset(buffer, 0, buffer_size); + data->ioc_version = OBD_IOCTL_VERSION; + data->ioc_inllen1 = buffer_size - size_round(sizeof(*data)); + data->ioc_inlbuf1 = buffer + size_round(sizeof(*data)); + data->ioc_len = obd_ioctl_packlen(data); + + rc = ioctl(fd, OBD_GET_VERSION, buffer); + if (rc == -1) { + rc = errno; + close(fd); + return -rc; + } + close(fd); + *version = data->ioc_bulk; + return 0; +} diff --git a/lustre/utils/obd.c b/lustre/utils/obd.c index 3251777..ba8e7f8 100644 --- a/lustre/utils/obd.c +++ b/lustre/utils/obd.c @@ -910,24 +910,18 @@ int jt_obd_abort_recovery(int argc, char **argv) int jt_get_version(int argc, char **argv) { int rc; - char rawbuf[MAX_IOC_BUFLEN], *buf = rawbuf; - struct obd_ioctl_data *data = (struct obd_ioctl_data *)buf; + char rawbuf[MAX_IOC_BUFLEN]; + char *version; if (argc != 1) return CMD_HELP; - memset(buf, 0, sizeof(rawbuf)); - data->ioc_version = OBD_IOCTL_VERSION; - data->ioc_inllen1 = sizeof(rawbuf) - size_round(sizeof(*data)); - data->ioc_inlbuf1 = buf + size_round(sizeof(*data)); - data->ioc_len = obd_ioctl_packlen(data); - - rc = l2_ioctl(OBD_DEV_ID, OBD_GET_VERSION, buf); - if (rc < 0) + rc = llapi_get_version(rawbuf, MAX_IOC_BUFLEN, &version); + if (rc) fprintf(stderr, "error: %s: %s\n", jt_cmdname(argv[0]), - strerror(rc = errno)); + strerror(-rc)); else { - printf("Lustre version: %s\n", data->ioc_bulk); + printf("Lustre version: %s\n", version); } printf("lctl version: %s\n", BUILD_VERSION);