[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Regression in xen-blkfront regarding sector sizes



On Mon, Jun 24, 2024 at 04:29:15PM +0200, Jürgen Groß wrote:
>> Rusty suspects it's related to
>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/block/xen-blkfront.c?id=ba3f67c1163812b5d7ec33705c31edaa30ce6c51,
>> so I'm cc-ing people mentioned there too.
>
> I think the call of blkif_set_queue_limits() in this patch should NOT precede
> setting of info->sector_size and info->physical_sector_size, as those are
> needed by blkif_set_queue_limits().

Yes.  Something like the patch below should fix it.  We could also stop
passing sector_size and physіcal_sector_size to xlvbd_alloc_gendisk to
clean things up a bit more.

diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c
index fd7c0ff2139cee..9f3d68044f8882 100644
--- a/drivers/block/xen-blkfront.c
+++ b/drivers/block/xen-blkfront.c
@@ -1133,6 +1133,8 @@ static int xlvbd_alloc_gendisk(blkif_sector_t capacity,
        if (err)
                goto out_release_minors;
 
+       info->sector_size = sector_size;
+       info->physical_sector_size = physical_sector_size;
        blkif_set_queue_limits(info, &lim);
        gd = blk_mq_alloc_disk(&info->tag_set, &lim, info);
        if (IS_ERR(gd)) {
@@ -1159,8 +1161,6 @@ static int xlvbd_alloc_gendisk(blkif_sector_t capacity,
 
        info->rq = gd->queue;
        info->gd = gd;
-       info->sector_size = sector_size;
-       info->physical_sector_size = physical_sector_size;
 
        xlvbd_flush(info);
 



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.