Whamcloud - gitweb
b=13698 llapi_get_version
authorVladimir Saveliev <vladimir.saveliev@sun.com>
Tue, 14 Dec 2010 12:30:12 +0000 (15:30 +0300)
committerAndrew Perepechko <andrew.perepechko@oracle.com>
Tue, 14 Dec 2010 18:40:04 +0000 (21:40 +0300)
this uses OBD_GET_VERSION ioctl to obtain lustre version

i=andreas.dilger

lustre/include/lustre/liblustreapi.h
lustre/utils/liblustreapi.c
lustre/utils/obd.c

index 394253b..17c6a00 100644 (file)
@@ -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
index e7e30a1..16ef8b9 100644 (file)
@@ -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;
+}
index 3251777..ba8e7f8 100644 (file)
@@ -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);