Whamcloud - gitweb
fix endian mixup from previous patches
[fs/lustre-release.git] / lustre / utils / obd.c
index bdd533a..3a4089a 100644 (file)
@@ -60,6 +60,9 @@
 #include <stdio.h>
 
 #define SHMEM_STATS 1
+#define MAX_STRING_SIZE 128
+#define DEVICES_LIST "/proc/fs/lustre/devices"
+
 #if SHMEM_STATS
 # include <sys/ipc.h>
 # include <sys/shm.h>
@@ -168,10 +171,10 @@ char *obdo_print(struct obdo *obd)
         sprintf(buf, "id: "LPX64"\ngrp: "LPX64"\natime: "LPU64"\nmtime: "LPU64
                 "\nctime: "LPU64"\nsize: "LPU64"\nblocks: "LPU64
                 "\nblksize: %u\nmode: %o\nuid: %d\ngid: %d\nflags: %x\n"
-                "obdflags: %x\nnlink: %d,\nvalid %x\n",
+                "misc: %x\nnlink: %d,\nvalid %x\n",
                 obd->o_id, obd->o_gr, obd->o_atime, obd->o_mtime, obd->o_ctime,
                 obd->o_size, obd->o_blocks, obd->o_blksize, obd->o_mode,
-                obd->o_uid, obd->o_gid, obd->o_flags, obd->o_obdflags,
+                obd->o_uid, obd->o_gid, obd->o_flags, obd->o_misc,
                 obd->o_nlink, obd->o_valid);
         return strdup(buf);
 }
@@ -774,26 +777,25 @@ int jt_get_version(int argc, char **argv)
 int jt_obd_list(int argc, char **argv)
 {
         int rc;
-        char buf[OBD_MAX_IOCTL_BUFFER];
-        struct obd_ioctl_data *data = (struct obd_ioctl_data *)buf;
-
+        char buf[MAX_STRING_SIZE];
+        FILE *fp = fopen(DEVICES_LIST, "r");
+                                                                                                                                               
+        if (fp == NULL) {
+                fprintf(stderr, "error: %s: %s could not open file " 
+                        DEVICES_LIST " .\n",
+                        jt_cmdname(argv[0]), strerror(rc =  errno));
+                return rc;
+        }
+                                                                                                                                               
         if (argc != 1)
                 return CMD_HELP;
-
-        memset(buf, 0, sizeof(buf));
-        data->ioc_version = OBD_IOCTL_VERSION;
-        data->ioc_inllen1 = sizeof(buf) - size_round(sizeof(*data));
-        data->ioc_len = obd_ioctl_packlen(data);
-
-        rc = l2_ioctl(OBD_DEV_ID, OBD_IOC_LIST, data);
-        if (rc < 0)
-                fprintf(stderr, "error: %s: %s\n", jt_cmdname(argv[0]),
-                        strerror(rc = errno));
-        else {
-                printf("%s", data->ioc_bulk);
-        }
-
-        return rc;
+                                                                                                                                               
+        while (fgets(buf, sizeof(buf), fp) != NULL)
+                printf("%s", buf);
+                                                                                                                                               
+        fclose(fp);
+                                                                                                                                               
+        return 0;
 }
 
 /* Get echo client's stripe meta-data for the given object
@@ -1240,6 +1242,7 @@ int jt_obd_test_brw(int argc, char **argv)
         struct timeval start, next_time;
         __u64 count, next_count, len, thr_offset = 0, objid = 3;
         int write = 0, verbose = 1, cmd, i, rc = 0, pages = 1;
+        int repeat_offset = 0;
         char *end;
 
         if (argc < 2 || argc > 7) {
@@ -1265,8 +1268,11 @@ int jt_obd_test_brw(int argc, char **argv)
         if (argc >= 3) {
                 if (argv[2][0] == 'w' || argv[2][0] == '1')
                         write = 1;
-                else if (argv[2][0] == 'r' || argv[2][0] == '0')
-                        write = 0;
+                /* else it's a read */
+
+                if (argv[2][0] != 0 &&
+                    argv[2][1] == 'r')
+                        repeat_offset = 1;
         }
 
         if (argc >= 4) {
@@ -1351,7 +1357,7 @@ int jt_obd_test_brw(int argc, char **argv)
 
         cmd = write ? OBD_IOC_BRW_WRITE : OBD_IOC_BRW_READ;
         for (i = 1, next_count = verbose; i <= count; i++) {
-                data.ioc_obdo1.o_valid &= ~(OBD_MD_FLBLOCKS|OBD_MD_FLRDEV);
+                data.ioc_obdo1.o_valid &= ~(OBD_MD_FLBLOCKS|OBD_MD_FLGRANT);
                 IOC_PACK(argv[0], data);
                 rc = l2_ioctl(OBD_DEV_ID, cmd, buf);
                 SHMEM_BUMP();
@@ -1364,7 +1370,8 @@ int jt_obd_test_brw(int argc, char **argv)
                         printf("%s: %s number %dx%d\n", jt_cmdname(argv[0]),
                                write ? "write" : "read", i, pages);
 
-                data.ioc_offset += len;
+                if (!repeat_offset)
+                        data.ioc_offset += len;
         }
 
         if (!rc) {
@@ -1758,6 +1765,29 @@ int jt_cfg_dump_log(int argc, char **argv)
         return rc;
 }
 
+int jt_cfg_clear_log(int argc, char **argv)
+{
+        struct obd_ioctl_data data;
+        int rc;
+
+        IOC_INIT(data);
+
+        if (argc != 2)
+                return CMD_HELP;
+
+        data.ioc_inllen1 = strlen(argv[1]) + 1;
+        data.ioc_inlbuf1 = argv[1];
+
+        IOC_PACK(argv[0], data);
+        rc = l_ioctl(OBD_DEV_ID, OBD_IOC_CLEAR_LOG, buf);
+        if (rc < 0)
+                fprintf(stderr, "OBD_IOC_CLEAR_LOG failed: %s\n",
+                        strerror(errno));
+
+        return rc;
+}
+
+
 
 int jt_cfg_endrecord(int argc, char **argv)
 {