Patch "loop: don't set QUEUE_FLAG_NOMERGES" has been added to the 6.1-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

    loop: don't set QUEUE_FLAG_NOMERGES

to the 6.1-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:
     loop-don-t-set-queue_flag_nomerges.patch
and it can be found in the queue-6.1 subdirectory.

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



commit 37d57e44d7f4ff0237d7efe74454f56ca05b7a89
Author: Christoph Hellwig <hch@xxxxxx>
Date:   Thu Jun 27 14:49:11 2024 +0200

    loop: don't set QUEUE_FLAG_NOMERGES
    
    [ Upstream commit 667ea36378cf7f669044b27871c496e1559c872a ]
    
    QUEUE_FLAG_NOMERGES isn't really a driver interface, but a user tunable.
    There also isn't any good reason to set it in the loop driver.
    
    The original commit adding it (5b5e20f421c0b6d "block: loop: set
    QUEUE_FLAG_NOMERGES for request queue of loop") claims that "It doesn't
    make sense to enable merge because the I/O submitted to backing file is
    handled page by page."  which of course isn't true for multi-page bvec
    now, and it never has been for direct I/O, for which commit 40326d8a33d
    ("block/loop: allow request merge for directio mode") alredy disabled
    the nomerges flag.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Bart Van Assche <bvanassche@xxxxxxx>
    Link: https://lore.kernel.org/r/20240627124926.512662-2-hch@xxxxxx
    Signed-off-by: Jens Axboe <axboe@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index 12ff6f58b8a90..041d307a2f280 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -211,13 +211,10 @@ static void __loop_update_dio(struct loop_device *lo, bool dio)
 	if (lo->lo_state == Lo_bound)
 		blk_mq_freeze_queue(lo->lo_queue);
 	lo->use_dio = use_dio;
-	if (use_dio) {
-		blk_queue_flag_clear(QUEUE_FLAG_NOMERGES, lo->lo_queue);
+	if (use_dio)
 		lo->lo_flags |= LO_FLAGS_DIRECT_IO;
-	} else {
-		blk_queue_flag_set(QUEUE_FLAG_NOMERGES, lo->lo_queue);
+	else
 		lo->lo_flags &= ~LO_FLAGS_DIRECT_IO;
-	}
 	if (lo->lo_state == Lo_bound)
 		blk_mq_unfreeze_queue(lo->lo_queue);
 }
@@ -2034,14 +2031,6 @@ static int loop_add(int i)
 
 	blk_queue_max_hw_sectors(lo->lo_queue, BLK_DEF_MAX_SECTORS);
 
-	/*
-	 * By default, we do buffer IO, so it doesn't make sense to enable
-	 * merge because the I/O submitted to backing file is handled page by
-	 * page. For directio mode, merge does help to dispatch bigger request
-	 * to underlayer disk. We will enable merge once directio is enabled.
-	 */
-	blk_queue_flag_set(QUEUE_FLAG_NOMERGES, lo->lo_queue);
-
 	/*
 	 * Disable partition scanning by default. The in-kernel partition
 	 * scanning can be requested individually per-device during its




[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