diff options
author | Christoph Hellwig <hch@lst.de> | 2024-02-22 08:24:11 +0100 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2024-02-27 14:21:15 -0700 |
commit | 32621ad7a7ea4c3add1dd6bd27b62c2b22500d54 (patch) | |
tree | 5085ea9b7a76ad07ec2c9724f88178071c33fb8e /arch | |
parent | ba3f67c1163812b5d7ec33705c31edaa30ce6c51 (diff) |
ubd: remove the ubd_gendisk array
And add a disk pointer to the ubd structure instead to keep all
the per-device information together.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Richard Weinberger <richard@nod.at>
Link: https://lore.kernel.org/r/20240222072417.3773131-2-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/um/drivers/ubd_kern.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c index 48e11f073551..b203ebb17851 100644 --- a/arch/um/drivers/ubd_kern.c +++ b/arch/um/drivers/ubd_kern.c @@ -125,9 +125,6 @@ static const struct block_device_operations ubd_blops = { .getgeo = ubd_getgeo, }; -/* Protected by ubd_lock */ -static struct gendisk *ubd_gendisk[MAX_DEV]; - #ifdef CONFIG_BLK_DEV_UBD_SYNC #define OPEN_FLAGS ((struct openflags) { .r = 1, .w = 1, .s = 1, .c = 0, \ .cl = 1 }) @@ -165,6 +162,7 @@ struct ubd { unsigned no_trim:1; struct cow cow; struct platform_device pdev; + struct gendisk *disk; struct request_queue *queue; struct blk_mq_tag_set tag_set; spinlock_t lock; @@ -922,7 +920,6 @@ static int ubd_add(int n, char **error_out) if (err) goto out_cleanup_disk; - ubd_gendisk[n] = disk; return 0; out_cleanup_disk: @@ -1014,7 +1011,6 @@ static int ubd_id(char **str, int *start_out, int *end_out) static int ubd_remove(int n, char **error_out) { - struct gendisk *disk = ubd_gendisk[n]; struct ubd *ubd_dev; int err = -ENODEV; @@ -1030,10 +1026,9 @@ static int ubd_remove(int n, char **error_out) if(ubd_dev->count > 0) goto out; - ubd_gendisk[n] = NULL; - if(disk != NULL){ - del_gendisk(disk); - put_disk(disk); + if (ubd_dev->disk) { + del_gendisk(ubd_dev->disk); + put_disk(ubd_dev->disk); } err = 0; |