Commit 50b4aecf authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe
Browse files

block: remove GENHD_FL_UP



Just check inode_unhashed on the whole device bdev inode instead,
and provide a helper to check for that information.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20210809064028.1198327-9-hch@lst.de


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent b75f4aed
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -77,7 +77,8 @@ bool set_capacity_and_notify(struct gendisk *disk, sector_t size)
	 * initial capacity during probing.
	 */
	if (size == capacity ||
	    (disk->flags & (GENHD_FL_UP | GENHD_FL_HIDDEN)) != GENHD_FL_UP)
	    !disk_live(disk) ||
	    (disk->flags & GENHD_FL_HIDDEN))
		return false;

	pr_info("%s: detected capacity change from %lld to %lld\n",
@@ -527,8 +528,6 @@ void device_add_disk(struct device *parent, struct gendisk *disk,
		disk->flags |= GENHD_FL_EXT_DEVT;
	}

	disk->flags |= GENHD_FL_UP;

	disk_alloc_events(disk);

	if (disk->flags & GENHD_FL_HIDDEN) {
@@ -597,7 +596,6 @@ void del_gendisk(struct gendisk *disk)

	mutex_lock(&disk->open_mutex);
	remove_inode_hash(disk->part0->bd_inode);
	disk->flags &= ~GENHD_FL_UP;
	blk_drop_partitions(disk);
	mutex_unlock(&disk->open_mutex);

+2 −2
Original line number Diff line number Diff line
@@ -459,7 +459,7 @@ int bdev_add_partition(struct block_device *bdev, int partno,
	int ret;

	mutex_lock(&disk->open_mutex);
	if (!(disk->flags & GENHD_FL_UP)) {
	if (!disk_live(disk)) {
		ret = -ENXIO;
		goto out;
	}
@@ -669,7 +669,7 @@ int bdev_disk_changed(struct gendisk *disk, bool invalidate)

	lockdep_assert_held(&disk->open_mutex);

	if (!(disk->flags & GENHD_FL_UP))
	if (!disk_live(disk))
		return -ENXIO;

rescan:
+1 −3
Original line number Diff line number Diff line
@@ -764,9 +764,7 @@ struct md_rdev *md_find_rdev_rcu(struct mddev *mddev, dev_t dev);

static inline bool is_mddev_broken(struct md_rdev *rdev, const char *md_type)
{
	int flags = rdev->bdev->bd_disk->flags;

	if (!(flags & GENHD_FL_UP)) {
	if (!disk_live(rdev->bdev->bd_disk)) {
		if (!test_and_set_bit(MD_BROKEN, &rdev->mddev->flags))
			pr_warn("md: %s: %s array has a missing/failed member\n",
				mdname(rdev->mddev), md_type);
+1 −1
Original line number Diff line number Diff line
@@ -1822,7 +1822,7 @@ static void nvme_update_disk_info(struct gendisk *disk,
static inline bool nvme_first_scan(struct gendisk *disk)
{
	/* nvme_alloc_ns() scans the disk prior to adding it */
	return !(disk->flags & GENHD_FL_UP);
	return !disk_live(disk);
}

static void nvme_set_chunk_sectors(struct nvme_ns *ns, struct nvme_id_ns *id)
+1 −1
Original line number Diff line number Diff line
@@ -1218,7 +1218,7 @@ struct block_device *blkdev_get_by_dev(dev_t dev, fmode_t mode, void *holder)

	mutex_lock(&disk->open_mutex);
	ret = -ENXIO;
	if (!(disk->flags & GENHD_FL_UP))
	if (!disk_live(disk))
		goto abort_claiming;
	if (bdev_is_partition(bdev))
		ret = blkdev_get_part(bdev, mode);
Loading