ocfs2: cleanup o2hb_region_dev_store

Use blkdev_get_by_dev instead of igrab (aka open coded bdgrab) +
blkdev_get.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
Christoph Hellwig 2020-09-21 09:19:53 +02:00 committed by Jens Axboe
parent 841ab72cb5
commit e455ed2290
1 changed files with 10 additions and 18 deletions

View File

@ -1766,7 +1766,6 @@ static ssize_t o2hb_region_dev_store(struct config_item *item,
int sectsize;
char *p = (char *)page;
struct fd f;
struct inode *inode;
ssize_t ret = -EINVAL;
int live_threshold;
@ -1793,20 +1792,16 @@ static ssize_t o2hb_region_dev_store(struct config_item *item,
reg->hr_block_bytes == 0)
goto out2;
inode = igrab(f.file->f_mapping->host);
if (inode == NULL)
if (!S_ISBLK(f.file->f_mapping->host->i_mode))
goto out2;
if (!S_ISBLK(inode->i_mode))
goto out3;
reg->hr_bdev = I_BDEV(f.file->f_mapping->host);
ret = blkdev_get(reg->hr_bdev, FMODE_WRITE | FMODE_READ, NULL);
if (ret) {
reg->hr_bdev = blkdev_get_by_dev(f.file->f_mapping->host->i_rdev,
FMODE_WRITE | FMODE_READ, NULL);
if (IS_ERR(reg->hr_bdev)) {
ret = PTR_ERR(reg->hr_bdev);
reg->hr_bdev = NULL;
goto out3;
goto out2;
}
inode = NULL;
bdevname(reg->hr_bdev, reg->hr_dev_name);
@ -1909,16 +1904,13 @@ static ssize_t o2hb_region_dev_store(struct config_item *item,
config_item_name(&reg->hr_item), reg->hr_dev_name);
out3:
iput(inode);
if (ret < 0) {
blkdev_put(reg->hr_bdev, FMODE_READ | FMODE_WRITE);
reg->hr_bdev = NULL;
}
out2:
fdput(f);
out:
if (ret < 0) {
if (reg->hr_bdev) {
blkdev_put(reg->hr_bdev, FMODE_READ|FMODE_WRITE);
reg->hr_bdev = NULL;
}
}
return ret;
}