Whamcloud - gitweb
LU-7122 utils: changelog_{de}register cleanup 41/16341/4
authorHenri Doreau <henri.doreau@cea.fr>
Tue, 28 Apr 2015 14:15:41 +0000 (16:15 +0200)
committerOleg Drokin <oleg.drokin@intel.com>
Wed, 14 Oct 2015 04:57:25 +0000 (04:57 +0000)
Document the -n switch for "changelog_register" in the man page.
Apply coding style and remove unneeded code.

Signed-off-by: Henri Doreau <henri.doreau@cea.fr>
Change-Id: I38431d371bc08f5068e5b7e3e62a7847dc64283d
Reviewed-on: http://review.whamcloud.com/16341
Tested-by: Jenkins
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Frank Zago <fzago@cray.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/doc/lctl.8
lustre/utils/obd.c

index c3a3379..b7fb090 100644 (file)
@@ -283,9 +283,12 @@ Acquire which lustre file was attached to the device node.
 .PP
 .SS Changelogs
 .TP
-.BI changelog_register
+.BI changelog_register " [-n]"
 Register a new changelog user for a particular device.  Changelog entries
 will not be purged beyond any registered users' set point. (See lfs changelog_clear.)
+.br
+.B -n
+Print only the ID of the newly registered user.
 .TP
 .BI changelog_deregister " <id>"
 Unregister an existing changelog user.  If the user's "clear" record number
index 06414a4..cfb1a03 100644 (file)
@@ -4252,125 +4252,104 @@ int jt_get_obj_version(int argc, char **argv)
 
 int jt_changelog_register(int argc, char **argv)
 {
-        char rawbuf[MAX_IOC_BUFLEN], *buf = rawbuf;
-        struct obd_ioctl_data data;
-        char devname[30];
-        int rc;
+       struct obd_ioctl_data    data = { 0 };
+       char                     rawbuf[MAX_IOC_BUFLEN] = "";
+       char                    *buf = rawbuf;
+       char                    *device = lcfg_get_devname();
+       bool                     print_name_only = false;
+       int                      c;
+       int                      rc;
 
-        if (argc > 2)
-                return CMD_HELP;
-        else if (argc == 2 && strcmp(argv[1], "-n") != 0)
-                return CMD_HELP;
-        if (cur_device < 0)
-                return CMD_HELP;
+       if (argc > 2)
+               return CMD_HELP;
 
-        memset(&data, 0, sizeof(data));
-        data.ioc_dev = cur_device;
-        memset(buf, 0, sizeof(rawbuf));
-        rc = obd_ioctl_pack(&data, &buf, sizeof(rawbuf));
-        if (rc) {
-                fprintf(stderr, "error: %s: invalid ioctl\n",
-                        jt_cmdname(argv[0]));
-               return rc;
-        }
+       while ((c = getopt(argc, argv, "hn")) >= 0) {
+               switch (c) {
+               case 'n':
+                       print_name_only = true;
+                       break;
+               case 'h':
+               default:
+                       return CMD_HELP;
+               }
+       }
 
-        rc = l2_ioctl(OBD_DEV_ID, OBD_IOC_CHANGELOG_REG, buf);
-        if (rc < 0) {
-                fprintf(stderr, "error: %s: %s\n", jt_cmdname(argv[0]),
-                        strerror(rc = errno));
-                return rc;
-        }
-        obd_ioctl_unpack(&data, buf, sizeof(rawbuf));
+       if (cur_device < 0 || device == NULL)
+               return CMD_HELP;
+
+       data.ioc_dev = cur_device;
+
+       rc = obd_ioctl_pack(&data, &buf, sizeof(rawbuf));
+       if (rc < 0) {
+               fprintf(stderr, "error: %s: cannot pack ioctl: %s\n",
+                       jt_cmdname(argv[0]), strerror(-rc));
+              return rc;
+       }
+
+       rc = l2_ioctl(OBD_DEV_ID, OBD_IOC_CHANGELOG_REG, buf);
+       if (rc < 0) {
+               rc = -errno;
+               fprintf(stderr, "error: %s: %s\n", jt_cmdname(argv[0]),
+                       strerror(-rc));
+               return rc;
+       }
+
+       obd_ioctl_unpack(&data, buf, sizeof(rawbuf));
 
        if (data.ioc_u32_1 == 0) {
                fprintf(stderr, "received invalid userid!\n");
                return -EPROTO;
        }
 
-       if (lcfg_get_devname() != NULL) {
-               if (strlen(lcfg_get_devname()) > sizeof(devname)-1) {
-                       fprintf(stderr, "Dev name too long\n");
-                       return -E2BIG;
-               }
-               strncpy(devname, lcfg_get_devname(), sizeof(devname));
-       } else {
-               if (snprintf(devname, sizeof(devname), "dev %d", cur_device) >=
-                   sizeof(devname)) {
-                       fprintf(stderr, "Dev name too long\n");
-                       return -E2BIG;
-               }
-       }
+       if (print_name_only)
+               printf("%s%u\n", CHANGELOG_USER_PREFIX, data.ioc_u32_1);
+       else
+               printf("%s: Registered changelog userid '%s%u'\n",
+                      device, CHANGELOG_USER_PREFIX, data.ioc_u32_1);
 
-        if (argc == 2)
-                /* -n means bare name */
-                printf(CHANGELOG_USER_PREFIX"%u\n", data.ioc_u32_1);
-        else
-                printf("%s: Registered changelog userid '"CHANGELOG_USER_PREFIX
-                       "%u'\n", devname, data.ioc_u32_1);
-        return 0;
+       return 0;
 }
 
 int jt_changelog_deregister(int argc, char **argv)
 {
-        char rawbuf[MAX_IOC_BUFLEN], *buf = rawbuf;
-        struct obd_ioctl_data data;
-        char devname[30];
-        int id, rc;
-
-        if (argc != 2 || cur_device < 0)
-                return CMD_HELP;
+       struct obd_ioctl_data    data = { 0 };
+       char                     rawbuf[MAX_IOC_BUFLEN] = "";
+       char                    *buf = rawbuf;
+       char                    *device = lcfg_get_devname();
+       int                      id;
+       int                      rc;
 
-        id = strtol(argv[1] + strlen(CHANGELOG_USER_PREFIX), NULL, 10);
-        if ((id == 0) || (strncmp(argv[1], CHANGELOG_USER_PREFIX,
-                                  strlen(CHANGELOG_USER_PREFIX)) != 0)) {
-                fprintf(stderr, "expecting id of the form '"
-                        CHANGELOG_USER_PREFIX"<num>'; got '%s'\n", argv[1]);
-                return CMD_HELP;
-        }
+       if (argc != 2 || cur_device < 0 || device == NULL)
+               return CMD_HELP;
 
-        memset(&data, 0, sizeof(data));
-        data.ioc_dev = cur_device;
-        data.ioc_u32_1 = id;
-        memset(buf, 0, sizeof(rawbuf));
-        rc = obd_ioctl_pack(&data, &buf, sizeof(rawbuf));
-        if (rc) {
-                fprintf(stderr, "error: %s: invalid ioctl\n",
-                        jt_cmdname(argv[0]));
-                return rc;
-        }
+       rc = sscanf(argv[1], CHANGELOG_USER_PREFIX"%d", &id);
+       if (rc != 1 || id <= 0) {
+               fprintf(stderr,
+                       "error: %s: expected id of the form %s<num> got '%s'\n",
+                       jt_cmdname(argv[0]), CHANGELOG_USER_PREFIX, argv[1]);
+               return CMD_HELP;
+       }
 
-        rc = l2_ioctl(OBD_DEV_ID, OBD_IOC_CHANGELOG_DEREG, buf);
-        if (rc < 0) {
-                fprintf(stderr, "error: %s: %s\n", jt_cmdname(argv[0]),
-                        strerror(rc = errno));
-                return rc;
-        }
-        obd_ioctl_unpack(&data, buf, sizeof(rawbuf));
+       data.ioc_dev = cur_device;
+       data.ioc_u32_1 = id;
 
-       if (data.ioc_u32_1 != id) {
-               fprintf(stderr, "No changelog user '%s'.  Blocking user"
-                       " is '"CHANGELOG_USER_PREFIX"%d'.\n", argv[1],
-                       data.ioc_u32_1);
-               return -ENOENT;
+       rc = obd_ioctl_pack(&data, &buf, sizeof(rawbuf));
+       if (rc < 0) {
+               fprintf(stderr, "error: %s: invalid ioctl\n",
+                       jt_cmdname(argv[0]));
+               return rc;
        }
 
-       if (lcfg_get_devname() != NULL) {
-               if (strlen(lcfg_get_devname()) > sizeof(devname)-1) {
-                       fprintf(stderr, "Dev name too long\n");
-                       return -E2BIG;
-               }
-               strncpy(devname, lcfg_get_devname(), sizeof(devname));
-       } else {
-               if (snprintf(devname, sizeof(devname), "dev %d", cur_device) >=
-                   sizeof(devname)) {
-                       fprintf(stderr, "Dev name too long\n");
-                       return -E2BIG;
-               }
+       rc = l2_ioctl(OBD_DEV_ID, OBD_IOC_CHANGELOG_DEREG, buf);
+       if (rc < 0) {
+               fprintf(stderr, "error: %s: %s\n", jt_cmdname(argv[0]),
+                       strerror(rc = errno));
+               return rc;
        }
 
-        printf("%s: Deregistered changelog user '"CHANGELOG_USER_PREFIX"%d'\n",
-               devname, data.ioc_u32_1);
-        return 0;
-}
-
+       obd_ioctl_unpack(&data, buf, sizeof(rawbuf));
+       printf("%s: Deregistered changelog user '%s%u'\n",
+              device, CHANGELOG_USER_PREFIX, data.ioc_u32_1);
 
+       return 0;
+}