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

Signed-off-by: Christoph Hellwig <h...@lst.de>
Reviewed-by: Joseph Qi <joseph...@linux.alibaba.com>
---
 fs/ocfs2/cluster/heartbeat.c | 28 ++++++++++------------------
 1 file changed, 10 insertions(+), 18 deletions(-)

diff --git a/fs/ocfs2/cluster/heartbeat.c b/fs/ocfs2/cluster/heartbeat.c
index 89d13e0705fe7b..0179a73a3fa2c4 100644
--- a/fs/ocfs2/cluster/heartbeat.c
+++ b/fs/ocfs2/cluster/heartbeat.c
@@ -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;
 }
 
-- 
2.28.0

Reply via email to