Usage:
obdctl > attach osc THEOSC
obdctl > quit
mount -t lustre_lite -o device=`obdctl name2dev THEOSC` none /mnt/lustre
- free a tiny leak
- temporary fix to runfailure-net
- also add to obdctl the setting of an environment variable when
setting the name of a device. Not clear yet if this is useful.
memset(buf, 0, sizeof(buf));
memset(buf, 0, sizeof(buf));
- if (!obd && cmd != OBD_IOC_DEVICE && cmd != TCGETS) {
+ if (!obd && cmd != OBD_IOC_DEVICE && cmd != TCGETS
+ && cmd != OBD_IOC_NAME2DEV) {
CERROR("OBD ioctl: No device\n");
RETURN(-EINVAL);
}
CERROR("OBD ioctl: No device\n");
RETURN(-EINVAL);
}
kill -9 $!
echo 0 > /proc/sys/lustre/fail_loc
kill -9 $!
echo 0 > /proc/sys/lustre/fail_loc
- umount /mnt/lustre
- mount -t lustre_lite -o device=3 none /mnt/lustre
+ umount /mnt/lustre || exit 1
+ mount -t lustre_lite -o device=5 none /mnt/lustre || exit 1
}
[ -c /dev/request ] || mknod /dev/request c 10 244
}
[ -c /dev/request ] || mknod /dev/request c 10 244
if (rc < 0)
fprintf(stderr, "error: %s: %x %s\n", cmdname(argv[0]),
OBD_IOC_ATTACH, strerror(rc = errno));
if (rc < 0)
fprintf(stderr, "error: %s: %x %s\n", cmdname(argv[0]),
OBD_IOC_ATTACH, strerror(rc = errno));
+ else if (argc == 3) {
+ char name[1024];
+ if (strlen(argv[2]) > 128) {
+ printf("Name too long to set environment\n");
+ return -EINVAL;
+ }
+ snprintf(name, 512, "LUSTRE-dev-%s", argv[2]);
+ rc = setenv(name, argv[1], 1);
+ if (rc) {
+ printf("error setting env variable %s\n", name);
+ }
+ }
struct obd_ioctl_data data;
int rc;
struct obd_ioctl_data data;
int rc;
+ if (fd == -1)
+ fd = open("/dev/obd", O_RDWR);
+ if (fd == -1) {
+ fprintf(stderr, "error: %s: opening /dev/obd: %s\n",
+ cmdname(argv[0]), strerror(errno));
+ return errno;
+ }
+
IOCINIT(data);
if (argc != 2) {
IOCINIT(data);
if (argc != 2) {
data.ioc_inllen1 = strlen(argv[1]) + 1;
data.ioc_inlbuf1 = argv[1];
data.ioc_inllen1 = strlen(argv[1]) + 1;
data.ioc_inlbuf1 = argv[1];
- printf("%s: len %d addr %p name %s\n",
- cmdname(argv[0]), data.ioc_len, buf,
- MKSTR(data.ioc_inlbuf1));
if (obd_ioctl_pack(&data, &buf, max)) {
fprintf(stderr, "error: %s: invalid ioctl\n", cmdname(argv[0]));
return -2;
}
if (obd_ioctl_pack(&data, &buf, max)) {
fprintf(stderr, "error: %s: invalid ioctl\n", cmdname(argv[0]));
return -2;
}
- printf("%s: len %d addr %p raw %p name %s and %s\n",
- cmdname(argv[0]), data.ioc_len, buf, rawbuf,
- MKSTR(data.ioc_inlbuf1), &buf[516]);
-
rc = ioctl(fd, OBD_IOC_NAME2DEV , buf);
if (rc < 0)
fprintf(stderr, "error: %s: %x %s\n", cmdname(argv[0]),
OBD_IOC_NAME2DEV, strerror(rc = errno));
memcpy((char *)(&data), buf, sizeof(data));
rc = ioctl(fd, OBD_IOC_NAME2DEV , buf);
if (rc < 0)
fprintf(stderr, "error: %s: %x %s\n", cmdname(argv[0]),
OBD_IOC_NAME2DEV, strerror(rc = errno));
memcpy((char *)(&data), buf, sizeof(data));
- printf("device set to %d (name %s)\n", data.ioc_dev, argv[1]);
-
+ printf("%d\n", data.ioc_dev);