#define OBD_IOC_GETNAME _IOWR('f', 131, OBD_IOC_DATA_TYPE)
#define OBD_IOC_GETMDNAME _IOR('f', 131, char[MAX_OBD_NAME])
#define OBD_IOC_GETDTNAME OBD_IOC_GETNAME
-#define OBD_IOC_LOV_GET_CONFIG _IOWR('f', 132, OBD_IOC_DATA_TYPE)
+/* OBD_IOC_LOV_GET_CONFIG _IOWR('f', 132, OBD_IOC_DATA_TYPE) until 2.14 */
#define OBD_IOC_CLIENT_RECOVER _IOW('f', 133, OBD_IOC_DATA_TYPE)
/* was OBD_IOC_PING_TARGET _IOW('f', 136, OBD_IOC_DATA_TYPE) until 2.11 */
-
/* OBD_IOC_DEC_FS_USE_COUNT _IO('f', 139) */
/* was OBD_IOC_NO_TRANSNO _IOW('f', 140, OBD_IOC_DATA_TYPE) until 2.14 */
#define OBD_IOC_SET_READONLY _IOW('f', 141, OBD_IOC_DATA_TYPE)
struct obd_device *obd = class_exp2obd(exp);
struct lov_obd *lov = &obd->u.lov;
int i = 0, rc = 0, count = lov->desc.ld_tgt_count;
- struct obd_uuid *uuidp;
ENTRY;
switch (cmd) {
RETURN(-EFAULT);
break;
}
- case OBD_IOC_LOV_GET_CONFIG: {
- struct obd_ioctl_data *data = NULL;
- struct lov_desc *desc;
- __u32 *genp;
-
- len = 0;
- if (obd_ioctl_getdata(&data, &len, uarg))
- RETURN(-EINVAL);
-
- if (sizeof(*desc) > data->ioc_inllen1) {
- OBD_FREE_LARGE(data, len);
- RETURN(-EINVAL);
- }
-
- if (sizeof(uuidp->uuid) * count > data->ioc_inllen2) {
- OBD_FREE_LARGE(data, len);
- RETURN(-EINVAL);
- }
-
- if (sizeof(__u32) * count > data->ioc_inllen3) {
- OBD_FREE_LARGE(data, len);
- RETURN(-EINVAL);
- }
-
- desc = (struct lov_desc *)data->ioc_inlbuf1;
- memcpy(desc, &lov->desc, sizeof(*desc));
-
- uuidp = (struct obd_uuid *)data->ioc_inlbuf2;
- genp = (__u32 *)data->ioc_inlbuf3;
- /* the uuid will be empty for deleted OSTs */
- for (i = 0; i < count; i++, uuidp++, genp++) {
- if (!lov->lov_tgts[i])
- continue;
- *uuidp = lov->lov_tgts[i]->ltd_uuid;
- *genp = lov->lov_tgts[i]->ltd_gen;
- }
-
- if (copy_to_user(uarg, data, len))
- rc = -EFAULT;
- OBD_FREE_LARGE(data, len);
- break;
- }
case OBD_IOC_QUOTACTL: {
struct if_quotactl *qctl = karg;
struct lov_tgt_desc *tgt = NULL;
run_test 44A "zero length read from a sparse stripe"
test_44a() {
- local nstripe=$($LCTL lov_getconfig $DIR | grep default_stripe_count: |
- awk '{ print $2 }')
+ local nstripe=$($LFS getstripe -c -d $DIR)
[ -z "$nstripe" ] && skip "can't get stripe info"
[[ $nstripe -gt $OSTCOUNT ]] &&
- skip "Wrong default_stripe_count: $nstripe OSTCOUNT: $OSTCOUNT"
+ skip "Wrong default stripe_count: $nstripe OSTCOUNT: $OSTCOUNT"
- local stride=$($LCTL lov_getconfig $DIR | grep default_stripe_size: |
- awk '{ print $2 }')
+ local stride=$($LFS getstripe -S -d $DIR)
if [[ $nstripe -eq 0 || $nstripe -eq -1 ]]; then
- nstripe=$($LCTL lov_getconfig $DIR | grep obd_count: |
- awk '{ print $2 }')
+ nstripe=$($LFS df $DIR | grep OST: | wc -l)
fi
OFFSETS="0 $((stride/2)) $((stride-1))"
"remove one log from catalog or plain log, erase it from disk.\n"
"usage: llog_remove <logname|LLOG_ID> [--log_id <id>]"},
{"==== obsolete (DANGEROUS) ====", NULL, 0, "obsolete (DANGEROUS)"},
- /* some test scripts still use these */
- /* saving for sanity 44a */
- {"lov_getconfig", jt_obd_lov_getconfig, 0,
- "read lov configuration from an mds device\n"
- "usage: lov_getconfig <mountpoint>"},
/* network operations */
{"add_interface", jt_ptl_add_interface, 0, "add interface entry\n"
"usage: add_interface ip [netmask]"},
return rc;
}
-int jt_obd_lov_getconfig(int argc, char **argv)
-{
- struct obd_ioctl_data data;
- struct lov_desc desc;
- struct obd_uuid *uuidarray;
- char rawbuf[MAX_IOC_BUFLEN], *buf = rawbuf;
- __u32 *obdgens;
- char *path;
- int rc, fd;
-
- memset(&data, 0, sizeof(data));
- data.ioc_dev = cur_device;
-
- if (argc != 2)
- return CMD_HELP;
-
- path = argv[1];
- fd = open(path, O_RDONLY);
- if (fd < 0) {
- fprintf(stderr, "open \"%s\" failed: %s\n", path,
- strerror(errno));
- return -errno;
- }
-
- memset(&desc, 0, sizeof(desc));
- obd_str2uuid(&desc.ld_uuid, argv[1]);
- desc.ld_tgt_count = ((MAX_IOC_BUFLEN - sizeof(data) - sizeof(desc)) /
- (sizeof(*uuidarray) + sizeof(*obdgens)));
-
-repeat:
- uuidarray = calloc(desc.ld_tgt_count, sizeof(*uuidarray));
- if (!uuidarray) {
- fprintf(stderr, "error: %s: no memory for %d uuid's\n",
- jt_cmdname(argv[0]), desc.ld_tgt_count);
- rc = -ENOMEM;
- goto out;
- }
- obdgens = calloc(desc.ld_tgt_count, sizeof(*obdgens));
- if (!obdgens) {
- fprintf(stderr, "error: %s: no memory for %d generation #'s\n",
- jt_cmdname(argv[0]), desc.ld_tgt_count);
- rc = -ENOMEM;
- goto out_uuidarray;
- }
-
- memset(buf, 0, sizeof(rawbuf));
- data.ioc_inllen1 = sizeof(desc);
- data.ioc_inlbuf1 = (char *)&desc;
- data.ioc_inllen2 = desc.ld_tgt_count * sizeof(*uuidarray);
- data.ioc_inlbuf2 = (char *)uuidarray;
- data.ioc_inllen3 = desc.ld_tgt_count * sizeof(*obdgens);
- data.ioc_inlbuf3 = (char *)obdgens;
-
- if (llapi_ioctl_pack(&data, &buf, sizeof(rawbuf))) {
- fprintf(stderr, "error: %s: invalid ioctl\n",
- jt_cmdname(argv[0]));
- rc = -EINVAL;
- goto out_obdgens;
- }
- rc = ioctl(fd, OBD_IOC_LOV_GET_CONFIG, buf);
- if (rc == -ENOSPC) {
- free(uuidarray);
- free(obdgens);
- goto repeat;
- } else if (rc) {
- fprintf(stderr, "error: %s: ioctl error: %s\n",
- jt_cmdname(argv[0]), strerror(rc = errno));
- } else {
- struct obd_uuid *uuidp;
- __u32 *genp;
- int i;
-
- if (llapi_ioctl_unpack(&data, buf, sizeof(rawbuf))) {
- fprintf(stderr, "error: %s: invalid reply\n",
- jt_cmdname(argv[0]));
- rc = -EINVAL;
- goto out;
- }
- if (desc.ld_default_stripe_count == (__u32)-1)
- printf("default_stripe_count: %d\n", -1);
- else
- printf("default_stripe_count: %u\n",
- desc.ld_default_stripe_count);
- printf("default_stripe_size: %ju\n",
- (uintmax_t)desc.ld_default_stripe_size);
- printf("default_stripe_offset: %jd\n",
- (uintmax_t)desc.ld_default_stripe_offset);
- printf("default_stripe_pattern: %u\n", desc.ld_pattern);
- printf("obd_count: %u\n", desc.ld_tgt_count);
- printf("OBDS:\tobdidx\t\tobdgen\t\t obduuid\n");
- uuidp = uuidarray;
- genp = obdgens;
- for (i = 0; i < desc.ld_tgt_count; i++, uuidp++, genp++)
- printf("\t%6u\t%14u\t\t %s\n", i, *genp, (char *)uuidp);
- }
-out_obdgens:
- free(obdgens);
-out_uuidarray:
- free(uuidarray);
-out:
- close(fd);
- return rc;
-}
-
static int do_activate(int argc, char **argv, int flag)
{
struct obd_ioctl_data data;
int jt_obd_getattr(int argc, char **argv);
int jt_obd_test_getattr(int argc, char **argv);
int jt_obd_test_brw(int argc, char **argv);
-int jt_obd_lov_getconfig(int argc, char **argv);
int jt_obd_test_ldlm(int argc, char **argv);
int jt_obd_ldlm_regress_start(int argc, char **argv);
int jt_obd_ldlm_regress_stop(int argc, char **argv);