-/* Print mdtname 'name' into 'buf' using 'format'. Add -MDT0000 if needed.
- * format must have %s%s, buf must be > 16
- * Eg: if name = "lustre-MDT0000", "lustre", or "lustre-MDT0000_UUID"
- * then buf = "lustre-MDT0000"
- */
-static int get_mdtname(char *name, char *format, char *buf)
-{
- char suffix[] = "-MDT0000";
- int len = strlen(name);
-
- if (len > 5 && strncmp(name + len - 5, "_UUID", 5) == 0) {
- name[len - 5] = '\0';
- len -= 5;
- }
-
- if (len > 8) {
- if ((len <= 16) && strncmp(name + len - 8, "-MDT", 4) == 0) {
- suffix[0] = '\0';
- } else {
- /* Not enough room to add suffix */
- llapi_err_noerrno(LLAPI_MSG_ERROR,
- "Invalid MDT name |%s|", name);
- return -EINVAL;
- }
- }
-
- return sprintf(buf, format, name, suffix);
-}
-
-/** ioctl on filsystem root, with mdtindex sent as data
- * \param mdtname path, fsname, or mdtname (lutre-MDT0004)
- * \param mdtidxp pointer to integer within data to be filled in with the
- * mdt index (0 if no mdt is specified). NULL won't be filled.
- */
-int root_ioctl(const char *mdtname, int opc, void *data, int *mdtidxp,
- int want_error)
-{
- char fsname[20];
- char *ptr;
- int fd, rc;
- long index;
-
- /* Take path, fsname, or MDTname. Assume MDT0000 in former cases.
- * Open root and parse mdt index.
- */
- if (mdtname[0] == '/') {
- index = 0;
- rc = get_root_path(WANT_FD | want_error, NULL, &fd,
- (char *)mdtname, -1);
- } else {
- if (get_mdtname((char *)mdtname, "%s%s", fsname) < 0)
- return -EINVAL;
- ptr = fsname + strlen(fsname) - 8;
- *ptr = '\0';
- index = strtol(ptr + 4, NULL, 16);
- rc = get_root_path(WANT_FD | want_error, fsname, &fd, NULL, -1);
- }
- if (rc < 0) {
- if (want_error)
- llapi_err_noerrno(LLAPI_MSG_ERROR,
- "Can't open %s: %d\n", mdtname, rc);
- return rc;
- }
-
- if (mdtidxp)
- *mdtidxp = index;
-
- rc = ioctl(fd, opc, data);
- if (rc == -1)
- rc = -errno;
- else
- rc = 0;
- close(fd);
- return rc;
-}
-
-int llapi_fid2path(const char *device, const char *fidstr, char *path,