[lvm-devel] master - devices: clean up block size functions
David Teigland
teigland at sourceware.org
Wed Aug 7 16:53:34 UTC 2019
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=09bc2d0fd15a5bbb5d1e8d6ce79bd786ffed42b3
Commit: 09bc2d0fd15a5bbb5d1e8d6ce79bd786ffed42b3
Parent: bec3088f85a9a2d0b6a355aea1adc67fab8de6e9
Author: David Teigland <teigland at redhat.com>
AuthorDate: Wed Aug 7 11:38:06 2019 -0500
Committer: David Teigland <teigland at redhat.com>
CommitterDate: Wed Aug 7 11:48:10 2019 -0500
devices: clean up block size functions
Replace calls to the old dev_get_block_size function
with calls to the new dev_get_direct_block_size function,
and remove the old function.
---
lib/device/dev-cache.c | 2 -
lib/device/dev-io.c | 73 -----------------------------------------------
lib/device/device.h | 3 --
lib/locking/lvmlockd.c | 10 +++---
lib/metadata/metadata.c | 25 ++++++++--------
5 files changed, 18 insertions(+), 95 deletions(-)
diff --git a/lib/device/dev-cache.c b/lib/device/dev-cache.c
index 980dd3c..a15e239 100644
--- a/lib/device/dev-cache.c
+++ b/lib/device/dev-cache.c
@@ -64,8 +64,6 @@ static int _insert(const char *path, const struct stat *info,
/* Setup non-zero members of passed zeroed 'struct device' */
static void _dev_init(struct device *dev)
{
- dev->phys_block_size = -1;
- dev->block_size = -1;
dev->fd = -1;
dev->read_ahead = -1;
diff --git a/lib/device/dev-io.c b/lib/device/dev-io.c
index 5fa0b7a..8a9ed5c 100644
--- a/lib/device/dev-io.c
+++ b/lib/device/dev-io.c
@@ -53,77 +53,6 @@
static unsigned _dev_size_seqno = 1;
-/*
- * Get the physical and logical block size for a device.
- */
-int dev_get_block_size(struct device *dev, unsigned int *physical_block_size, unsigned int *block_size)
-{
- const char *name = dev_name(dev);
- int fd = dev->bcache_fd;
- int do_close = 0;
- int r = 1;
-
- if ((dev->phys_block_size > 0) && (dev->block_size > 0)) {
- *physical_block_size = (unsigned int)dev->phys_block_size;
- *block_size = (unsigned int)dev->block_size;
- return 1;
- }
-
- if (fd <= 0) {
- if (!dev->open_count) {
- if (!dev_open_readonly(dev))
- return_0;
- do_close = 1;
- }
- fd = dev_fd(dev);
- }
-
- if (dev->block_size == -1) {
- if (ioctl(fd, BLKBSZGET, &dev->block_size) < 0) {
- log_sys_error("ioctl BLKBSZGET", name);
- r = 0;
- goto out;
- }
- log_debug_devs("%s: Block size is %u bytes", name, dev->block_size);
- }
-
-#ifdef BLKPBSZGET
- /* BLKPBSZGET is available in kernel >= 2.6.32 only */
- if (dev->phys_block_size == -1) {
- if (ioctl(fd, BLKPBSZGET, &dev->phys_block_size) < 0) {
- log_sys_error("ioctl BLKPBSZGET", name);
- r = 0;
- goto out;
- }
- log_debug_devs("%s: Physical block size is %u bytes", name, dev->phys_block_size);
- }
-#elif defined (BLKSSZGET)
- /* if we can't get physical block size, just use logical block size instead */
- if (dev->phys_block_size == -1) {
- if (ioctl(fd, BLKSSZGET, &dev->phys_block_size) < 0) {
- log_sys_error("ioctl BLKSSZGET", name);
- r = 0;
- goto out;
- }
- log_debug_devs("%s: Physical block size can't be determined: Using logical block size of %u bytes", name, dev->phys_block_size);
- }
-#else
- /* if even BLKSSZGET is not available, use default 512b */
- if (dev->phys_block_size == -1) {
- dev->phys_block_size = 512;
- log_debug_devs("%s: Physical block size can't be determined: Using block size of %u bytes instead", name, dev->phys_block_size);
- }
-#endif
-
- *physical_block_size = (unsigned int) dev->phys_block_size;
- *block_size = (unsigned int) dev->block_size;
-out:
- if (do_close && !dev_close_immediate(dev))
- stack;
-
- return r;
-}
-
static int _dev_get_size_file(struct device *dev, uint64_t *size)
{
const char *name = dev_name(dev);
@@ -515,8 +444,6 @@ static void _close(struct device *dev)
if (close(dev->fd))
log_sys_error("close", dev_name(dev));
dev->fd = -1;
- dev->phys_block_size = -1;
- dev->block_size = -1;
log_debug_devs("Closed %s", dev_name(dev));
diff --git a/lib/device/device.h b/lib/device/device.h
index bb65f84..bd3b355 100644
--- a/lib/device/device.h
+++ b/lib/device/device.h
@@ -67,8 +67,6 @@ struct device {
/* private */
int fd;
int open_count;
- int phys_block_size; /* From either BLKPBSZGET or BLKSSZGET, don't use */
- int block_size; /* From BLKBSZGET, returns bdev->bd_block_size, likely set by fs, probably don't use */
int physical_block_size; /* From BLKPBSZGET: lowest possible sector size that the hardware can operate on without reverting to read-modify-write operations */
int logical_block_size; /* From BLKSSZGET: lowest possible block size that the storage device can address */
int read_ahead;
@@ -133,7 +131,6 @@ void dev_size_seqno_inc(void);
/*
* All io should use these routines.
*/
-int dev_get_block_size(struct device *dev, unsigned int *phys_block_size, unsigned int *block_size);
int dev_get_direct_block_sizes(struct device *dev, unsigned int *physical_block_size,
unsigned int *logical_block_size);
int dev_get_size(struct device *dev, uint64_t *size);
diff --git a/lib/locking/lvmlockd.c b/lib/locking/lvmlockd.c
index 5ef3c94..612de5d 100644
--- a/lib/locking/lvmlockd.c
+++ b/lib/locking/lvmlockd.c
@@ -636,7 +636,7 @@ static int _init_vg_sanlock(struct cmd_context *cmd, struct volume_group *vg, in
struct pv_list *pvl;
struct device *sector_dev;
uint32_t sector_size = 0;
- unsigned int phys_block_size, block_size;
+ unsigned int physical_block_size, logical_block_size;
int num_mb = 0;
int result;
int ret;
@@ -653,14 +653,14 @@ static int _init_vg_sanlock(struct cmd_context *cmd, struct volume_group *vg, in
*/
dm_list_iterate_items(pvl, &vg->pvs) {
- if (!dev_get_block_size(pvl->pv->dev, &phys_block_size, &block_size))
+ if (!dev_get_direct_block_sizes(pvl->pv->dev, &physical_block_size, &logical_block_size))
continue;
if (!sector_size) {
- sector_size = phys_block_size;
+ sector_size = logical_block_size;
sector_dev = pvl->pv->dev;
- } else if (sector_size != phys_block_size) {
- log_error("Inconsistent sector sizes for %s and %s.",
+ } else if (sector_size != logical_block_size) {
+ log_error("Inconsistent logical block sizes for %s and %s.",
dev_name(pvl->pv->dev), dev_name(sector_dev));
return 0;
}
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
index e55adc2..0f5154d 100644
--- a/lib/metadata/metadata.c
+++ b/lib/metadata/metadata.c
@@ -679,20 +679,21 @@ int vg_remove(struct volume_group *vg)
}
int check_dev_block_size_for_vg(struct device *dev, const struct volume_group *vg,
- unsigned int *max_phys_block_size_found)
+ unsigned int *max_logical_block_size_found)
{
- unsigned int phys_block_size, block_size;
+ unsigned int physical_block_size, logical_block_size;
- if (!(dev_get_block_size(dev, &phys_block_size, &block_size)))
+ if (!(dev_get_direct_block_sizes(dev, &physical_block_size, &logical_block_size)))
return_0;
- if (phys_block_size > *max_phys_block_size_found)
- *max_phys_block_size_found = phys_block_size;
+ /* FIXME: max_logical_block_size_found does not seem to be used anywhere */
+ if (logical_block_size > *max_logical_block_size_found)
+ *max_logical_block_size_found = logical_block_size;
- if (phys_block_size >> SECTOR_SHIFT > vg->extent_size) {
+ if (logical_block_size >> SECTOR_SHIFT > vg->extent_size) {
log_error("Physical extent size used for volume group %s "
- "is less than physical block size that %s uses.",
- vg->name, dev_name(dev));
+ "is less than logical block size (%u bytes) that %s uses.",
+ vg->name, logical_block_size, dev_name(dev));
return 0;
}
@@ -702,10 +703,10 @@ int check_dev_block_size_for_vg(struct device *dev, const struct volume_group *v
int vg_check_pv_dev_block_sizes(const struct volume_group *vg)
{
struct pv_list *pvl;
- unsigned int max_phys_block_size_found = 0;
+ unsigned int max_logical_block_size_found = 0;
dm_list_iterate_items(pvl, &vg->pvs) {
- if (!check_dev_block_size_for_vg(pvl->pv->dev, vg, &max_phys_block_size_found))
+ if (!check_dev_block_size_for_vg(pvl->pv->dev, vg, &max_logical_block_size_found))
return 0;
}
@@ -750,7 +751,7 @@ int check_pv_dev_sizes(struct volume_group *vg)
int vg_extend_each_pv(struct volume_group *vg, struct pvcreate_params *pp)
{
struct pv_list *pvl;
- unsigned int max_phys_block_size = 0;
+ unsigned int max_logical_block_size = 0;
unsigned int physical_block_size, logical_block_size;
unsigned int prev_lbs = 0;
int inconsistent_existing_lbs = 0;
@@ -790,7 +791,7 @@ int vg_extend_each_pv(struct volume_group *vg, struct pvcreate_params *pp)
if (!(check_dev_block_size_for_vg(pvl->pv->dev,
(const struct volume_group *) vg,
- &max_phys_block_size))) {
+ &max_logical_block_size))) {
log_error("PV %s has wrong block size.", pv_dev_name(pvl->pv));
return 0;
}
More information about the lvm-devel
mailing list