]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
common/blkdev: take fd for device node or regular file
authorSage Weil <sage@redhat.com>
Fri, 24 Mar 2017 15:22:16 +0000 (11:22 -0400)
committerSage Weil <sage@redhat.com>
Wed, 29 Mar 2017 17:24:52 +0000 (13:24 -0400)
Either way, return the partition and device name for
the underlying device.

Signed-off-by: Sage Weil <sage@redhat.com>
src/common/blkdev.cc

index 6e956deece04ba9f02e26e1453098b8525c26e9e..bc89eea4cf14fdd06a6990bcc82a7af501b1b3da 100644 (file)
@@ -252,13 +252,15 @@ int get_device_by_fd(int fd, char *partition, char *device)
   if (r < 0) {
     return -EINVAL;  // hrm.
   }
-  char *t = blkid_devno_to_devname(st.st_rdev);
+  dev_t devid = S_ISBLK(st.st_mode) ? st.st_rdev : st.st_dev;
+  char *t = blkid_devno_to_devname(devid);
   if (!t) {
     return -EINVAL;
   }
   strcpy(partition, t);
+  free(t);
   dev_t diskdev;
-  r = blkid_devno_to_wholedisk(st.st_rdev, device, PATH_MAX, &diskdev);
+  r = blkid_devno_to_wholedisk(devid, device, PATH_MAX, &diskdev);
   if (r < 0) {
     return -EINVAL;
   }