dm: use bdev_nr_sectors and bdev_nr_bytes instead of open coding them
Use the proper helpers to read the block device size. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Kees Cook <keescook@chromium.org> Acked-by: Mike Snitzer <snitzer@redhat.com> Link: https://lore.kernel.org/r/20211018101130.1838532-6-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
Родитель
da7b392467
Коммит
6dcbb52cdd
|
@ -1525,7 +1525,7 @@ EXPORT_SYMBOL_GPL(dm_bufio_get_block_size);
|
|||
|
||||
sector_t dm_bufio_get_device_size(struct dm_bufio_client *c)
|
||||
{
|
||||
sector_t s = i_size_read(c->bdev->bd_inode) >> SECTOR_SHIFT;
|
||||
sector_t s = bdev_nr_sectors(c->bdev);
|
||||
if (s >= c->start)
|
||||
s -= c->start;
|
||||
else
|
||||
|
|
|
@ -334,7 +334,7 @@ static int __write_initial_superblock(struct dm_cache_metadata *cmd)
|
|||
int r;
|
||||
struct dm_block *sblock;
|
||||
struct cache_disk_superblock *disk_super;
|
||||
sector_t bdev_size = i_size_read(cmd->bdev->bd_inode) >> SECTOR_SHIFT;
|
||||
sector_t bdev_size = bdev_nr_sectors(cmd->bdev);
|
||||
|
||||
/* FIXME: see if we can lose the max sectors limit */
|
||||
if (bdev_size > DM_CACHE_METADATA_MAX_SECTORS)
|
||||
|
|
|
@ -1940,7 +1940,7 @@ static void cache_dtr(struct dm_target *ti)
|
|||
|
||||
static sector_t get_dev_size(struct dm_dev *dev)
|
||||
{
|
||||
return i_size_read(dev->bdev->bd_inode) >> SECTOR_SHIFT;
|
||||
return bdev_nr_sectors(dev->bdev);
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------*/
|
||||
|
|
|
@ -1514,7 +1514,7 @@ error:
|
|||
|
||||
static sector_t get_dev_size(struct dm_dev *dev)
|
||||
{
|
||||
return i_size_read(dev->bdev->bd_inode) >> SECTOR_SHIFT;
|
||||
return bdev_nr_sectors(dev->bdev);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
|
|
|
@ -415,7 +415,7 @@ static int dust_message(struct dm_target *ti, unsigned int argc, char **argv,
|
|||
char *result, unsigned int maxlen)
|
||||
{
|
||||
struct dust_device *dd = ti->private;
|
||||
sector_t size = i_size_read(dd->dev->bdev->bd_inode) >> SECTOR_SHIFT;
|
||||
sector_t size = bdev_nr_sectors(dd->dev->bdev);
|
||||
bool invalid_msg = false;
|
||||
int r = -EINVAL;
|
||||
unsigned long long tmp, block;
|
||||
|
@ -544,8 +544,7 @@ static int dust_prepare_ioctl(struct dm_target *ti, struct block_device **bdev)
|
|||
/*
|
||||
* Only pass ioctls through if the device sizes match exactly.
|
||||
*/
|
||||
if (dd->start ||
|
||||
ti->len != i_size_read(dev->bdev->bd_inode) >> SECTOR_SHIFT)
|
||||
if (dd->start || ti->len != bdev_nr_sectors(dev->bdev))
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -416,7 +416,7 @@ static int ebs_prepare_ioctl(struct dm_target *ti, struct block_device **bdev)
|
|||
* Only pass ioctls through if the device sizes match exactly.
|
||||
*/
|
||||
*bdev = dev->bdev;
|
||||
return !!(ec->start || ti->len != i_size_read(dev->bdev->bd_inode) >> SECTOR_SHIFT);
|
||||
return !!(ec->start || ti->len != bdev_nr_sectors(dev->bdev));
|
||||
}
|
||||
|
||||
static void ebs_io_hints(struct dm_target *ti, struct queue_limits *limits)
|
||||
|
|
|
@ -1681,7 +1681,7 @@ static int era_message(struct dm_target *ti, unsigned argc, char **argv,
|
|||
|
||||
static sector_t get_dev_size(struct dm_dev *dev)
|
||||
{
|
||||
return i_size_read(dev->bdev->bd_inode) >> SECTOR_SHIFT;
|
||||
return bdev_nr_sectors(dev->bdev);
|
||||
}
|
||||
|
||||
static int era_iterate_devices(struct dm_target *ti,
|
||||
|
|
|
@ -168,7 +168,7 @@ static inline void dm_consecutive_chunk_count_dec(struct dm_exception *e)
|
|||
*/
|
||||
static inline sector_t get_dev_size(struct block_device *bdev)
|
||||
{
|
||||
return i_size_read(bdev->bd_inode) >> SECTOR_SHIFT;
|
||||
return bdev_nr_sectors(bdev);
|
||||
}
|
||||
|
||||
static inline chunk_t sector_to_chunk(struct dm_exception_store *store,
|
||||
|
|
|
@ -456,8 +456,7 @@ static int flakey_prepare_ioctl(struct dm_target *ti, struct block_device **bdev
|
|||
/*
|
||||
* Only pass ioctls through if the device sizes match exactly.
|
||||
*/
|
||||
if (fc->start ||
|
||||
ti->len != i_size_read((*bdev)->bd_inode) >> SECTOR_SHIFT)
|
||||
if (fc->start || ti->len != bdev_nr_sectors((*bdev)))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -4113,11 +4113,11 @@ static int dm_integrity_ctr(struct dm_target *ti, unsigned argc, char **argv)
|
|||
}
|
||||
}
|
||||
|
||||
ic->data_device_sectors = i_size_read(ic->dev->bdev->bd_inode) >> SECTOR_SHIFT;
|
||||
ic->data_device_sectors = bdev_nr_sectors(ic->dev->bdev);
|
||||
if (!ic->meta_dev)
|
||||
ic->meta_device_sectors = ic->data_device_sectors;
|
||||
else
|
||||
ic->meta_device_sectors = i_size_read(ic->meta_dev->bdev->bd_inode) >> SECTOR_SHIFT;
|
||||
ic->meta_device_sectors = bdev_nr_sectors(ic->meta_dev->bdev);
|
||||
|
||||
if (!journal_sectors) {
|
||||
journal_sectors = min((sector_t)DEFAULT_MAX_JOURNAL_SECTORS,
|
||||
|
@ -4367,7 +4367,7 @@ try_smaller_buffer:
|
|||
DEBUG_print(" journal_sections %u\n", (unsigned)le32_to_cpu(ic->sb->journal_sections));
|
||||
DEBUG_print(" journal_entries %u\n", ic->journal_entries);
|
||||
DEBUG_print(" log2_interleave_sectors %d\n", ic->sb->log2_interleave_sectors);
|
||||
DEBUG_print(" data_device_sectors 0x%llx\n", i_size_read(ic->dev->bdev->bd_inode) >> SECTOR_SHIFT);
|
||||
DEBUG_print(" data_device_sectors 0x%llx\n", bdev_nr_sectors(ic->dev->bdev));
|
||||
DEBUG_print(" initial_sectors 0x%x\n", ic->initial_sectors);
|
||||
DEBUG_print(" metadata_run 0x%x\n", ic->metadata_run);
|
||||
DEBUG_print(" log2_metadata_run %d\n", ic->log2_metadata_run);
|
||||
|
|
|
@ -135,8 +135,7 @@ static int linear_prepare_ioctl(struct dm_target *ti, struct block_device **bdev
|
|||
/*
|
||||
* Only pass ioctls through if the device sizes match exactly.
|
||||
*/
|
||||
if (lc->start ||
|
||||
ti->len != i_size_read(dev->bdev->bd_inode) >> SECTOR_SHIFT)
|
||||
if (lc->start || ti->len != bdev_nr_sectors(dev->bdev))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -446,7 +446,7 @@ static int log_super(struct log_writes_c *lc)
|
|||
|
||||
static inline sector_t logdev_last_sector(struct log_writes_c *lc)
|
||||
{
|
||||
return i_size_read(lc->logdev->bdev->bd_inode) >> SECTOR_SHIFT;
|
||||
return bdev_nr_sectors(lc->logdev->bdev);
|
||||
}
|
||||
|
||||
static int log_writes_kthread(void *arg)
|
||||
|
@ -851,7 +851,7 @@ static int log_writes_prepare_ioctl(struct dm_target *ti,
|
|||
/*
|
||||
* Only pass ioctls through if the device sizes match exactly.
|
||||
*/
|
||||
if (ti->len != i_size_read(dev->bdev->bd_inode) >> SECTOR_SHIFT)
|
||||
if (ti->len != bdev_nr_sectors(dev->bdev))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -447,7 +447,7 @@ static int create_log_context(struct dm_dirty_log *log, struct dm_target *ti,
|
|||
bdev_logical_block_size(lc->header_location.
|
||||
bdev));
|
||||
|
||||
if (buf_size > i_size_read(dev->bdev->bd_inode)) {
|
||||
if (buf_size > bdev_nr_bytes(dev->bdev)) {
|
||||
DMWARN("log device %s too small: need %llu bytes",
|
||||
dev->name, (unsigned long long)buf_size);
|
||||
kfree(lc);
|
||||
|
|
|
@ -2061,7 +2061,7 @@ static int multipath_prepare_ioctl(struct dm_target *ti,
|
|||
/*
|
||||
* Only pass ioctls through if the device sizes match exactly.
|
||||
*/
|
||||
if (!r && ti->len != i_size_read((*bdev)->bd_inode) >> SECTOR_SHIFT)
|
||||
if (!r && ti->len != bdev_nr_sectors((*bdev)))
|
||||
return 1;
|
||||
return r;
|
||||
}
|
||||
|
|
|
@ -1261,7 +1261,7 @@ static int parse_raid_params(struct raid_set *rs, struct dm_arg_set *as,
|
|||
md_rdev_init(jdev);
|
||||
jdev->mddev = &rs->md;
|
||||
jdev->bdev = rs->journal_dev.dev->bdev;
|
||||
jdev->sectors = to_sector(i_size_read(jdev->bdev->bd_inode));
|
||||
jdev->sectors = bdev_nr_sectors(jdev->bdev);
|
||||
if (jdev->sectors < MIN_RAID456_JOURNAL_SPACE) {
|
||||
rs->ti->error = "No space for raid4/5/6 journal";
|
||||
return -ENOSPC;
|
||||
|
@ -1607,7 +1607,7 @@ static int _check_data_dev_sectors(struct raid_set *rs)
|
|||
|
||||
rdev_for_each(rdev, &rs->md)
|
||||
if (!test_bit(Journal, &rdev->flags) && rdev->bdev) {
|
||||
ds = min(ds, to_sector(i_size_read(rdev->bdev->bd_inode)));
|
||||
ds = min(ds, bdev_nr_sectors(rdev->bdev));
|
||||
if (ds < rs->md.dev_sectors) {
|
||||
rs->ti->error = "Component device(s) too small";
|
||||
return -EINVAL;
|
||||
|
@ -2662,7 +2662,7 @@ static int rs_adjust_data_offsets(struct raid_set *rs)
|
|||
* Make sure we got a minimum amount of free sectors per device
|
||||
*/
|
||||
if (rs->data_offset &&
|
||||
to_sector(i_size_read(rdev->bdev->bd_inode)) - rs->md.dev_sectors < MIN_FREE_RESHAPE_SPACE) {
|
||||
bdev_nr_sectors(rdev->bdev) - rs->md.dev_sectors < MIN_FREE_RESHAPE_SPACE) {
|
||||
rs->ti->error = data_offset ? "No space for forward reshape" :
|
||||
"No space for backward reshape";
|
||||
return -ENOSPC;
|
||||
|
|
|
@ -529,7 +529,7 @@ static int switch_prepare_ioctl(struct dm_target *ti, struct block_device **bdev
|
|||
* Only pass ioctls through if the device sizes match exactly.
|
||||
*/
|
||||
if (ti->len + sctx->path_list[path_nr].start !=
|
||||
i_size_read((*bdev)->bd_inode) >> SECTOR_SHIFT)
|
||||
bdev_nr_sectors((*bdev)))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -227,8 +227,7 @@ static int device_area_is_invalid(struct dm_target *ti, struct dm_dev *dev,
|
|||
{
|
||||
struct queue_limits *limits = data;
|
||||
struct block_device *bdev = dev->bdev;
|
||||
sector_t dev_size =
|
||||
i_size_read(bdev->bd_inode) >> SECTOR_SHIFT;
|
||||
sector_t dev_size = bdev_nr_sectors(bdev);
|
||||
unsigned short logical_block_size_sectors =
|
||||
limits->logical_block_size >> SECTOR_SHIFT;
|
||||
char b[BDEVNAME_SIZE];
|
||||
|
|
|
@ -549,7 +549,7 @@ static int __write_initial_superblock(struct dm_pool_metadata *pmd)
|
|||
int r;
|
||||
struct dm_block *sblock;
|
||||
struct thin_disk_superblock *disk_super;
|
||||
sector_t bdev_size = i_size_read(pmd->bdev->bd_inode) >> SECTOR_SHIFT;
|
||||
sector_t bdev_size = bdev_nr_sectors(pmd->bdev);
|
||||
|
||||
if (bdev_size > THIN_METADATA_MAX_SECTORS)
|
||||
bdev_size = THIN_METADATA_MAX_SECTORS;
|
||||
|
|
|
@ -3212,7 +3212,7 @@ static int metadata_pre_commit_callback(void *context)
|
|||
|
||||
static sector_t get_dev_size(struct block_device *bdev)
|
||||
{
|
||||
return i_size_read(bdev->bd_inode) >> SECTOR_SHIFT;
|
||||
return bdev_nr_sectors(bdev);
|
||||
}
|
||||
|
||||
static void warn_if_metadata_device_too_big(struct block_device *bdev)
|
||||
|
|
|
@ -834,8 +834,7 @@ static int verity_prepare_ioctl(struct dm_target *ti, struct block_device **bdev
|
|||
|
||||
*bdev = v->data_dev->bdev;
|
||||
|
||||
if (v->data_start ||
|
||||
ti->len != i_size_read(v->data_dev->bdev->bd_inode) >> SECTOR_SHIFT)
|
||||
if (v->data_start || ti->len != bdev_nr_sectors(v->data_dev->bdev))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -2341,7 +2341,7 @@ static int writecache_ctr(struct dm_target *ti, unsigned argc, char **argv)
|
|||
ti->error = "Cache data device lookup failed";
|
||||
goto bad;
|
||||
}
|
||||
wc->memory_map_size = i_size_read(wc->ssd_dev->bdev->bd_inode);
|
||||
wc->memory_map_size = bdev_nr_bytes(wc->ssd_dev->bdev);
|
||||
|
||||
/*
|
||||
* Parse the cache block size
|
||||
|
|
|
@ -733,7 +733,7 @@ static int dmz_get_zoned_device(struct dm_target *ti, char *path,
|
|||
dev->dev_idx = idx;
|
||||
(void)bdevname(dev->bdev, dev->name);
|
||||
|
||||
dev->capacity = i_size_read(bdev->bd_inode) >> SECTOR_SHIFT;
|
||||
dev->capacity = bdev_nr_sectors(bdev);
|
||||
if (ti->begin) {
|
||||
ti->error = "Partial mapping is not supported";
|
||||
goto err;
|
||||
|
|
Загрузка…
Ссылка в новой задаче