Commit 9ef41eff authored by Luis Chamberlain's avatar Luis Chamberlain Committed by Jens Axboe
Browse files

swim: add a floppy registration bool which triggers del_gendisk()



Instead of calling del_gendisk() on exit alone, let's add
a registration bool to the floppy disk state, this way this can
be done on the shared caller, swim_cleanup_floppy_disk().

This will be more useful in subsequent patches. Right now, this
just shuffles functionality out to a helper in a safe way.

Signed-off-by: default avatarLuis Chamberlain <mcgrof@kernel.org>
Link: https://lore.kernel.org/r/20210927220302.1073499-10-mcgrof@kernel.org


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 4e9abe72
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -185,6 +185,7 @@ struct floppy_state {

	int		track;
	int		ref_count;
	bool registered;

	struct gendisk *disk;
	struct blk_mq_tag_set tag_set;
@@ -779,6 +780,9 @@ static void swim_cleanup_floppy_disk(struct floppy_state *fs)
	if (!disk)
		return;

	if (fs->registered)
		del_gendisk(fs->disk);

	blk_cleanup_disk(disk);
	blk_mq_free_tag_set(&fs->tag_set);
}
@@ -840,6 +844,7 @@ static int swim_floppy_init(struct swim_priv *swd)
		swd->unit[drive].disk->private_data = &swd->unit[drive];
		set_capacity(swd->unit[drive].disk, 2880);
		add_disk(swd->unit[drive].disk);
		swd->unit[drive].registered = true;
	}

	return 0;
@@ -916,10 +921,8 @@ static int swim_remove(struct platform_device *dev)
	int drive;
	struct resource *res;

	for (drive = 0; drive < swd->floppy_count; drive++) {
		del_gendisk(swd->unit[drive].disk);
	for (drive = 0; drive < swd->floppy_count; drive++)
		swim_cleanup_floppy_disk(&swd->unit[drive]);
	}

	unregister_blkdev(FLOPPY_MAJOR, "fd");