[PATCH 1/7] ubd: remove the ubd_gendisk array
Richard Weinberger
richard at nod.at
Tue Feb 27 12:52:37 PST 2024
----- Ursprüngliche Mail -----
> Von: "hch" <hch at lst.de>
> An: "richard" <richard at nod.at>, "anton ivanov" <anton.ivanov at cambridgegreys.com>, "Johannes Berg"
> <johannes at sipsolutions.net>, "Jens Axboe" <axboe at kernel.dk>
> CC: "linux-um" <linux-um at lists.infradead.org>, "linux-block" <linux-block at vger.kernel.org>
> Gesendet: Donnerstag, 22. Februar 2024 08:24:11
> Betreff: [PATCH 1/7] 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 at lst.de>
> ---
> arch/um/drivers/ubd_kern.c | 13 ++++---------
> 1 file changed, 4 insertions(+), 9 deletions(-)
>
> diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c
> index 48e11f073551b4..b203ebb1785125 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);
> }
Reviewed-by: Richard Weinberger <richard at nod.at>
Thanks,
//richard
More information about the linux-um
mailing list