+/* Get echo client's stripe meta-data for the given object
+ */
+int jt_obd_get_stripe (int argc, char **argv)
+{
+ struct obd_ioctl_data data;
+ __u64 id;
+ int rc;
+ char *end;
+
+ if (argc != 2)
+ return (CMD_HELP);
+
+ id = strtoull (argv[1], &end, 0);
+ if (*end) {
+ fprintf (stderr, "Error: %s: invalid object id '%s'\n",
+ cmdname (argv[0]), argv[1]);
+ return (CMD_HELP);
+ }
+
+ memset (&lsm_buffer, 0, sizeof (lsm_buffer));
+
+ IOC_INIT (data);
+ data.ioc_obdo1.o_id = id;
+ data.ioc_obdo1.o_mode = S_IFREG | 0644;
+ data.ioc_obdo1.o_valid = OBD_MD_FLID | OBD_MD_FLMODE;
+ data.ioc_pbuf1 = (char *)&lsm_buffer;
+ data.ioc_plen1 = sizeof (lsm_buffer);
+
+ IOC_PACK(argv[0], data);
+ rc = l_ioctl(OBD_DEV_ID, ECHO_IOC_GET_STRIPE, buf);
+ IOC_UNPACK(argv[0], data);
+
+ if (rc != 0) {
+ fprintf (stderr, "Error: %s: rc %d(%s)\n",
+ cmdname (argv[0]), rc, strerror (errno));
+ return (rc);
+ }
+
+ printf ("%s\n", lsm_string (&lsm_buffer.lsm));
+
+ return (rc);
+}
+
+/* Set stripe meta-data for 1 or more objects. Object must be new to
+ * this echo client instance.
+ */
+int jt_obd_set_stripe (int argc, char **argv)
+{
+ struct obd_ioctl_data data;
+ char *end;
+ int count = 1;
+ int i;
+ int rc;
+
+ if (argc < 2 || argc > 3)
+ return CMD_HELP;
+
+ rc = parse_lsm (&lsm_buffer, argv[1]);
+ if (rc != 0) {
+ fprintf (stderr, "error: %s: invalid object '%s'\n",
+ cmdname (argv[0]), argv[1]);
+ return CMD_HELP;
+ }
+
+ if (argc > 2) {
+ count = strtol (argv[2], &end, 0);
+ if (*end != 0) {
+ fprintf (stderr, "error: %s: invalid count '%s'\n",
+ cmdname (argv[0]), argv[1]);
+ return CMD_HELP;
+ }
+ }
+
+ for (i = 0; i < count; i++) {
+ IOC_INIT (data);
+ data.ioc_obdo1.o_id = lsm_buffer.lsm.lsm_object_id + i;
+ data.ioc_obdo1.o_mode = S_IFREG | 0644;
+ data.ioc_obdo1.o_valid = OBD_MD_FLID | OBD_MD_FLMODE;
+ data.ioc_pbuf1 = (char *)&lsm_buffer;
+ data.ioc_plen1 = sizeof (lsm_buffer);
+
+ IOC_PACK (argv[0], data);
+ rc = l_ioctl (OBD_DEV_ID, ECHO_IOC_SET_STRIPE, buf);
+ IOC_UNPACK (argv[0], data);
+
+ if (rc != 0) {
+ fprintf (stderr, "Error: %s: rc %d(%s)\n",
+ cmdname (argv[0]), rc, strerror (errno));
+ return (rc);
+ }
+ }
+
+ return (0);
+}
+
+/* Clear stripe meta-data info for an object on this echo-client instance
+ */
+int jt_obd_unset_stripe (int argc, char **argv)
+{
+ struct obd_ioctl_data data;
+ char *end;
+ obd_id id;
+ int rc;
+
+ if (argc != 2)
+ return CMD_HELP;
+
+ id = strtoull (argv[1], &end, 0);
+ if (*end != 0) {
+ fprintf (stderr, "error: %s: invalid object id '%s'\n",
+ cmdname (argv[0]), argv[1]);
+ return CMD_HELP;
+ }