From 65c4666f2ec64d5149f3e4640f93e94e59ef783e Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 24 Mar 2017 11:03:08 -0400 Subject: [PATCH] common/blkdev: pass devname to block_device_* Signed-off-by: Sage Weil --- src/common/blkdev.cc | 13 ++++--------- src/os/bluestore/KernelDevice.cc | 11 +++++++++-- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/common/blkdev.cc b/src/common/blkdev.cc index 27d491dc2cb..6e956deece0 100644 --- a/src/common/blkdev.cc +++ b/src/common/blkdev.cc @@ -132,18 +132,13 @@ int get_block_device_base(const char *dev, char *out, size_t out_len) * return 0 on success * return negative error on error */ -int64_t get_block_device_string_property(const char *devname, const char *property, +int64_t get_block_device_string_property(const char *devname, + const char *property, char *val, size_t maxlen) { - char basename[PATH_MAX], filename[PATH_MAX]; - int64_t r; - - r = get_block_device_base(devname, basename, sizeof(basename)); - if (r < 0) - return r; - + char filename[PATH_MAX]; snprintf(filename, sizeof(filename), - "%s/sys/block/%s/%s", sandbox_dir, basename, property); + "%s/sys/block/%s/%s", sandbox_dir, devname, property); FILE *fp = fopen(filename, "r"); if (fp == NULL) { diff --git a/src/os/bluestore/KernelDevice.cc b/src/os/bluestore/KernelDevice.cc index 191090d1f14..5f7fe838bf5 100644 --- a/src/os/bluestore/KernelDevice.cc +++ b/src/os/bluestore/KernelDevice.cc @@ -112,9 +112,16 @@ int KernelDevice::open(const string& p) if (r < 0) { goto out_fail; } - - rotational = block_device_is_rotational(path.c_str()); size = s; + + char partition[1024], devname[1024]; + r = get_device_by_fd(fd_buffered, partition, devname); + if (r < 0) { + derr << "unable to get device name for " << path << ": " + << cpp_strerror(r) << dendl; + goto out_fail; + } + rotational = block_device_is_rotational(devname); } else { size = st.st_size; //regular file is rotational device -- 2.47.3