Patch "virtio_blk: fix the discard_granularity and discard_alignment queue limits" has been added to the 5.15-stable tree

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

 



This is a note to let you know that I've just added the patch titled

    virtio_blk: fix the discard_granularity and discard_alignment queue limits

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     virtio_blk-fix-the-discard_granularity-and-discard_a.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 8b1ad4df0116ffda5acfce49b20bf97806ee9582
Author: Christoph Hellwig <hch@xxxxxx>
Date:   Mon Apr 18 06:53:07 2022 +0200

    virtio_blk: fix the discard_granularity and discard_alignment queue limits
    
    [ Upstream commit 62952cc5bccd89b76d710de1d0b43244af0f2903 ]
    
    The discard_alignment queue limit is named a bit misleading means the
    offset into the block device at which the discard granularity starts.
    
    On the other hand the discard_sector_alignment from the virtio 1.1 looks
    similar to what Linux uses as discard granularity (even if not very well
    described):
    
      "discard_sector_alignment can be used by OS when splitting a request
       based on alignment. "
    
    And at least qemu does set it to the discard granularity.
    
    So stop setting the discard_alignment and use the virtio
    discard_sector_alignment to set the discard granularity.
    
    Fixes: 1f23816b8eb8 ("virtio_blk: add discard and write zeroes support")
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Martin K. Petersen <martin.petersen@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20220418045314.360785-5-hch@xxxxxx
    Signed-off-by: Jens Axboe <axboe@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
index c0b8a26892a5..c05138a28475 100644
--- a/drivers/block/virtio_blk.c
+++ b/drivers/block/virtio_blk.c
@@ -855,11 +855,12 @@ static int virtblk_probe(struct virtio_device *vdev)
 		blk_queue_io_opt(q, blk_size * opt_io_size);
 
 	if (virtio_has_feature(vdev, VIRTIO_BLK_F_DISCARD)) {
-		q->limits.discard_granularity = blk_size;
-
 		virtio_cread(vdev, struct virtio_blk_config,
 			     discard_sector_alignment, &v);
-		q->limits.discard_alignment = v ? v << SECTOR_SHIFT : 0;
+		if (v)
+			q->limits.discard_granularity = v << SECTOR_SHIFT;
+		else
+			q->limits.discard_granularity = blk_size;
 
 		virtio_cread(vdev, struct virtio_blk_config,
 			     max_discard_sectors, &v);



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux