summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2024-02-22 08:24:11 +0100
committerJens Axboe <axboe@kernel.dk>2024-02-27 14:21:15 -0700
commit32621ad7a7ea4c3add1dd6bd27b62c2b22500d54 (patch)
tree5085ea9b7a76ad07ec2c9724f88178071c33fb8e /arch
parentba3f67c1163812b5d7ec33705c31edaa30ce6c51 (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.c13
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;