Skip to content

Commit ec5d451

Browse files
Christoph Hellwigaxboe
authored andcommitted
block: refactor __blkdev_put
Reorder the code to have one big section for the last close, and to use bdev_is_partition. Signed-off-by: Christoph Hellwig <[email protected]> Reviewed-by: Greg Kroah-Hartman <[email protected]> Reviewed-by: Jan Kara <[email protected]> Reviewed-by: Hannes Reinecke <[email protected]> Acked-by: Tejun Heo <[email protected]> Signed-off-by: Jens Axboe <[email protected]>
1 parent 013b0e9 commit ec5d451

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

fs/block_dev.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1742,22 +1742,22 @@ static void __blkdev_put(struct block_device *bdev, fmode_t mode, int for_part)
17421742
WARN_ON_ONCE(bdev->bd_holders);
17431743
sync_blockdev(bdev);
17441744
kill_bdev(bdev);
1745-
17461745
bdev_write_inode(bdev);
1747-
}
1748-
if (bdev->bd_contains == bdev) {
1749-
if (disk->fops->release)
1746+
1747+
if (!bdev_is_partition(bdev) && disk->fops->release)
17501748
disk->fops->release(disk, mode);
1751-
}
1752-
if (!bdev->bd_openers) {
1749+
17531750
disk_put_part(bdev->bd_part);
17541751
bdev->bd_part = NULL;
17551752
bdev->bd_disk = NULL;
1756-
if (bdev != bdev->bd_contains)
1753+
if (bdev_is_partition(bdev))
17571754
victim = bdev->bd_contains;
17581755
bdev->bd_contains = NULL;
17591756

17601757
put_disk_and_module(disk);
1758+
} else {
1759+
if (!bdev_is_partition(bdev) && disk->fops->release)
1760+
disk->fops->release(disk, mode);
17611761
}
17621762
mutex_unlock(&bdev->bd_mutex);
17631763
bdput(bdev);

0 commit comments

Comments
 (0)