All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chaitanya Kulkarni <kch@nvidia.com>
To: <linux-block@vger.kernel.org>, <linux-bcache@vger.kernel.org>
Cc: <axboe@kernel.dk>, <josef@toxicpanda.com>, <minchan@kernel.org>,
	<senozhatsky@chromium.org>, <colyli@suse.de>,
	<kent.overstreet@gmail.com>, <dlemoal@kernel.org>,
	<kch@nvidia.com>, <johannes.thumshirn@wdc.com>,
	<bvanassche@acm.org>, <vincent.fu@samsung.com>,
	<akinobu.mita@gmail.com>, <shinichiro.kawasaki@wdc.com>,
	<nbd@other.debian.org>
Subject: [PATCH 0/5] block/drivers: don't clear the flag that is not set
Date: Mon, 24 Apr 2023 00:30:18 -0700	[thread overview]
Message-ID: <20230424073023.38935-1-kch@nvidia.com> (raw)

Hi,

The drivers in this patch-series tries to clear the
QUEUE_FLAG_ADD_RANDOM that is not set at all in the queue allocation
and initialization path in :-

drivers/block/mtip32xx/mtip32xx.c:	blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, dd->queue);
drivers/block/null_blk/main.c:	blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, nullb->q);
drivers/block/rbd.c:	/* QUEUE_FLAG_ADD_RANDOM is off by default for blk-mq */
drivers/block/zram/zram_drv.c:	blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, zram->disk->queue);
drivers/block/nbd.c:	blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, disk->queue);
drivers/block/brd.c:	blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, disk->queue);
drivers/md/bcache/super.c:	blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, d->disk->queue);
drivers/md/dm-table.c:	 * Clear QUEUE_FLAG_ADD_RANDOM if any underlying device does not
drivers/md/dm-table.c:		blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, q);
drivers/mmc/core/queue.c:	blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, mq->queue);
drivers/mtd/mtd_blkdevs.c:	blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, new->rq);
drivers/s390/block/scm_blk.c:	blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, rq);
drivers/scsi/sd.c:		blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, q);
drivers/scsi/sd.c:		blk_queue_flag_set(QUEUE_FLAG_ADD_RANDOM, q);
include/linux/blkdev.h:#define QUEUE_FLAG_ADD_RANDOM	10	/* Contributes to random pool */
include/linux/blkdev.h:#define blk_queue_add_random(q)	test_bit(QUEUE_FLAG_ADD_RANDOM, &(q)->queue_flags)

Since sd is the only driver that sets this flag:-

drivers/scsi/sd.c: blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, q);
drivers/scsi/sd.c: blk_queue_flag_set(QUEUE_FLAG_ADD_RANDOM, q);

it is unclear how it will be set for null_blk, brd. nbd, zram, and
bcache in the allocation path so we have to clear it explicitly.

Remove the call to clear QUEUE_FLAG_ADD_RANDOM. Below is testlog for :-

null_blk
brd
nbd
zram
bcache

Below is the test log.

-ck

Chaitanya Kulkarni (5):
  null_blk: don't clear the flag that is not set
  brd: don't clear the flag that is not set
  nbd: don't clear the flag that is not set
  zram: don't clear the flag that is not set
  bcache: don't clear the flag that is not set

 drivers/block/brd.c           | 1 -
 drivers/block/nbd.c           | 1 -
 drivers/block/null_blk/main.c | 1 -
 drivers/block/zram/zram_drv.c | 1 -
 drivers/md/bcache/super.c     | 1 -
 5 files changed, 5 deletions(-)


* NULL_BLK:-
-----------------------------------------------------------------------

With this debug patch :-
@@ -2128,7 +2128,11 @@ static int null_add_dev(struct nullb_device *dev)
 
 	nullb->q->queuedata = nullb;
 	blk_queue_flag_set(QUEUE_FLAG_NONROT, nullb->q);
+	pr_info("%s %d BEFORE ADD RANDOM = %s\n", __func__, __LINE__,
+			blk_queue_add_random(nullb->q) ? "TRUE" : "FALSE" );
 	blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, nullb->q);
+	pr_info("%s %d AFTER ADD RANDOM = %s\n", __func__, __LINE__,
+			blk_queue_add_random(nullb->q) ? "TRUE" : "FALSE" );
 
 	mutex_lock(&lock);
 	rv = ida_simple_get(&nullb_indexes, 0, 0, GFP_KERNEL);

+ modprobe -r null_blk
+ lsmod
+ grep null_blk
++ nproc
+ make -j 48 M=drivers/block modules
+ HOST=drivers/block/null_blk/
++ uname -r
+ HOST_DEST=/lib/modules/6.3.0-rc7lblk+/kernel/drivers/block/null_blk/
+ cp drivers/block/null_blk//null_blk.ko /lib/modules/6.3.0-rc7lblk+/kernel/drivers/block/null_blk//
+ ls -lrth /lib/modules/6.3.0-rc7lblk+/kernel/drivers/block/null_blk//null_blk.ko
-rw-r--r--. 2 root root 1.2M Apr 23 13:00 /lib/modules/6.3.0-rc7lblk+/kernel/drivers/block/null_blk//null_blk.ko
+ sleep 1
+ dmesg -c
+ modprobe null_blk queue_mode=0
+ dmesg -c
[33316.880281] null_blk: null_add_dev 2147 BEFORE ADD RANDOM = FALSE
[33316.880288] null_blk: null_add_dev 2150 AFTER ADD RANDOM = FALSE
[33316.880705] null_blk: disk nullb0 created
[33316.880707] null_blk: module loaded
+ modprobe -r null_blk
+ modprobe null_blk queue_mode=2
+ dmesg -c
[33316.920977] null_blk: null_add_dev 2147 BEFORE ADD RANDOM = FALSE
[33316.920981] null_blk: null_add_dev 2150 AFTER ADD RANDOM = FALSE
[33316.922640] null_blk: disk nullb0 created
[33316.922643] null_blk: module loaded
+ modprobe -r null_blk

+ modprobe -r null_blk
+ lsmod
+ grep null_blk
++ nproc
+ make -j 48 M=drivers/block modules
+ HOST=drivers/block/null_blk/
++ uname -r
+ HOST_DEST=/lib/modules/6.3.0-rc7lblk+/kernel/drivers/block/null_blk/
+ cp drivers/block/null_blk//null_blk.ko /lib/modules/6.3.0-rc7lblk+/kernel/drivers/block/null_blk//
+ ls -lrth /lib/modules/6.3.0-rc7lblk+/kernel/drivers/block/null_blk//null_blk.ko
-rw-r--r--. 2 root root 1.2M Apr 23 13:00 /lib/modules/6.3.0-rc7lblk+/kernel/drivers/block/null_blk//null_blk.ko
+ sleep 1
+ dmesg -c
+ modprobe null_blk queue_mode=0
+ dmesg -c
[33316.880281] null_blk: null_add_dev 2147 BEFORE ADD RANDOM = FALSE
[33316.880288] null_blk: null_add_dev 2150 AFTER ADD RANDOM = FALSE
[33316.880705] null_blk: disk nullb0 created
[33316.880707] null_blk: module loaded
+ modprobe -r null_blk
+ modprobe null_blk queue_mode=2
+ dmesg -c
[33316.920977] null_blk: null_add_dev 2147 BEFORE ADD RANDOM = FALSE
[33316.920981] null_blk: null_add_dev 2150 AFTER ADD RANDOM = FALSE
[33316.922640] null_blk: disk nullb0 created
[33316.922643] null_blk: module loaded
+ modprobe -r null_blk


* BRD:-
-----------------------------------------------------------------------

With this debug patch :-
@@ -404,7 +404,11 @@ static int brd_alloc(int i)
 	/* Tell the block layer that this is not a rotational device */
 	blk_queue_flag_set(QUEUE_FLAG_NONROT, disk->queue);
 	blk_queue_flag_set(QUEUE_FLAG_SYNCHRONOUS, disk->queue);
+	pr_info("%s %d BEFORE ADD RANDOM = %s\n", __func__, __LINE__,
+			blk_queue_add_random(disk->queue) ? "TRUE" : "FALSE" );
 	blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, disk->queue);
+	pr_info("%s %d AFTER ADD RANDOM = %s\n", __func__, __LINE__,
+			blk_queue_add_random(disk->queue) ? "TRUE" : "FALSE" );
 	blk_queue_flag_set(QUEUE_FLAG_NOWAIT, disk->queue);
 	err = add_disk(disk);
 	if (err)

+ modprobe -r brd
+ lsmod
+ grep brd
++ nproc
+ make -j 48 M=drivers/block modules
+ HOST=drivers/block/brd.ko
++ uname -r
+ HOST_DEST=/lib/modules/6.3.0-rc7lblk+/kernel/drivers/block/
+ cp drivers/block/brd.ko /lib/modules/6.3.0-rc7lblk+/kernel/drivers/block//
+ ls -lrth /lib/modules/6.3.0-rc7lblk+/kernel/drivers/block//brd.ko
-rw-r--r--. 1 root root 381K Apr 23 14:09 /lib/modules/6.3.0-rc7lblk+/kernel/drivers/block//brd.ko
+ dmesg -c
+ lsmod
+ grep brd
+ modprobe brd
+ dmesg -c
[ 3785.884916] brd_alloc 407 BEFORE ADD RANDOM = FALSE
[ 3785.884921] brd_alloc 410 AFTER ADD RANDOM = FALSE
[ 3785.885320] brd_alloc 407 BEFORE ADD RANDOM = FALSE
[ 3785.885322] brd_alloc 410 AFTER ADD RANDOM = FALSE
[ 3785.885662] brd_alloc 407 BEFORE ADD RANDOM = FALSE
[ 3785.885664] brd_alloc 410 AFTER ADD RANDOM = FALSE
[ 3785.886270] brd_alloc 407 BEFORE ADD RANDOM = FALSE
[ 3785.886272] brd_alloc 410 AFTER ADD RANDOM = FALSE
[ 3785.886451] brd_alloc 407 BEFORE ADD RANDOM = FALSE
[ 3785.886452] brd_alloc 410 AFTER ADD RANDOM = FALSE
[ 3785.886621] brd_alloc 407 BEFORE ADD RANDOM = FALSE
[ 3785.886622] brd_alloc 410 AFTER ADD RANDOM = FALSE
[ 3785.886831] brd_alloc 407 BEFORE ADD RANDOM = FALSE
[ 3785.886833] brd_alloc 410 AFTER ADD RANDOM = FALSE
[ 3785.886990] brd_alloc 407 BEFORE ADD RANDOM = FALSE
[ 3785.886991] brd_alloc 410 AFTER ADD RANDOM = FALSE
[ 3785.887176] brd_alloc 407 BEFORE ADD RANDOM = FALSE
[ 3785.887177] brd_alloc 410 AFTER ADD RANDOM = FALSE
[ 3785.887368] brd_alloc 407 BEFORE ADD RANDOM = FALSE
[ 3785.887369] brd_alloc 410 AFTER ADD RANDOM = FALSE
[ 3785.888011] brd_alloc 407 BEFORE ADD RANDOM = FALSE
[ 3785.888013] brd_alloc 410 AFTER ADD RANDOM = FALSE
[ 3785.888212] brd_alloc 407 BEFORE ADD RANDOM = FALSE
[ 3785.888214] brd_alloc 410 AFTER ADD RANDOM = FALSE
[ 3785.888687] brd_alloc 407 BEFORE ADD RANDOM = FALSE
[ 3785.888689] brd_alloc 410 AFTER ADD RANDOM = FALSE
[ 3785.888911] brd_alloc 407 BEFORE ADD RANDOM = FALSE
[ 3785.888913] brd_alloc 410 AFTER ADD RANDOM = FALSE
[ 3785.889390] brd_alloc 407 BEFORE ADD RANDOM = FALSE
[ 3785.889392] brd_alloc 410 AFTER ADD RANDOM = FALSE
[ 3785.889585] brd_alloc 407 BEFORE ADD RANDOM = FALSE
[ 3785.889586] brd_alloc 410 AFTER ADD RANDOM = FALSE
[ 3785.890099] brd: module loaded
+ modprobe -r brd

* NBD :-
-----------------------------------------------------------------------

With this debug patch :-
@@ -1805,7 +1805,11 @@ static struct nbd_device *nbd_dev_add(int index, unsigned int refs)
 	 * Tell the block layer that we are not a rotational device
 	 */
 	blk_queue_flag_set(QUEUE_FLAG_NONROT, disk->queue);
+	pr_info("%s %d BEFORE ADD RANDOM = %s\n", __func__, __LINE__,
+			blk_queue_add_random(disk->queue) ? "TRUE" : "FALSE" );
 	blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, disk->queue);
+	pr_info("%s %d AFTER ADD RANDOM = %s\n", __func__, __LINE__,
+			blk_queue_add_random(disk->queue) ? "TRUE" : "FALSE" );
 	disk->queue->limits.discard_granularity = 0;
 	blk_queue_max_discard_sectors(disk->queue, 0);
 	blk_queue_max_segment_size(disk->queue, UINT_MAX);

+ modprobe -r nbd
+ lsmod
+ grep nbd
++ nproc
+ make -j 48 M=drivers/block modules
+ HOST=drivers/block/nbd.ko
++ uname -r
+ HOST_DEST=/lib/modules/6.3.0-rc7lblk+/kernel/drivers/block/
+ cp drivers/block/nbd.ko /lib/modules/6.3.0-rc7lblk+/kernel/drivers/block//
+ ls -lrth /lib/modules/6.3.0-rc7lblk+/kernel/drivers/block//nbd.ko
-rw-r--r--. 1 root root 998K Apr 23 14:09 /lib/modules/6.3.0-rc7lblk+/kernel/drivers/block//nbd.ko
+ dmesg -c
+ lsmod
+ grep nbd
+ modprobe nbd
+ dmesg -c
[ 3786.953726] nbd: nbd_dev_add 1808 BEFORE ADD RANDOM = FALSE
[ 3786.953731] nbd: nbd_dev_add 1811 AFTER ADD RANDOM = FALSE
[ 3786.954877] nbd: nbd_dev_add 1808 BEFORE ADD RANDOM = FALSE
[ 3786.954880] nbd: nbd_dev_add 1811 AFTER ADD RANDOM = FALSE
[ 3786.956753] nbd: nbd_dev_add 1808 BEFORE ADD RANDOM = FALSE
[ 3786.956759] nbd: nbd_dev_add 1811 AFTER ADD RANDOM = FALSE
[ 3786.958118] nbd: nbd_dev_add 1808 BEFORE ADD RANDOM = FALSE
[ 3786.958121] nbd: nbd_dev_add 1811 AFTER ADD RANDOM = FALSE
[ 3786.959372] nbd: nbd_dev_add 1808 BEFORE ADD RANDOM = FALSE
[ 3786.959374] nbd: nbd_dev_add 1811 AFTER ADD RANDOM = FALSE
[ 3786.960139] nbd: nbd_dev_add 1808 BEFORE ADD RANDOM = FALSE
[ 3786.960141] nbd: nbd_dev_add 1811 AFTER ADD RANDOM = FALSE
[ 3786.960878] nbd: nbd_dev_add 1808 BEFORE ADD RANDOM = FALSE
[ 3786.960880] nbd: nbd_dev_add 1811 AFTER ADD RANDOM = FALSE
[ 3786.961558] nbd: nbd_dev_add 1808 BEFORE ADD RANDOM = FALSE
[ 3786.961560] nbd: nbd_dev_add 1811 AFTER ADD RANDOM = FALSE
[ 3786.962303] nbd: nbd_dev_add 1808 BEFORE ADD RANDOM = FALSE
[ 3786.962305] nbd: nbd_dev_add 1811 AFTER ADD RANDOM = FALSE
[ 3786.963063] nbd: nbd_dev_add 1808 BEFORE ADD RANDOM = FALSE
[ 3786.963065] nbd: nbd_dev_add 1811 AFTER ADD RANDOM = FALSE
[ 3786.963821] nbd: nbd_dev_add 1808 BEFORE ADD RANDOM = FALSE
[ 3786.963824] nbd: nbd_dev_add 1811 AFTER ADD RANDOM = FALSE
[ 3786.964573] nbd: nbd_dev_add 1808 BEFORE ADD RANDOM = FALSE
[ 3786.964575] nbd: nbd_dev_add 1811 AFTER ADD RANDOM = FALSE
[ 3786.965282] nbd: nbd_dev_add 1808 BEFORE ADD RANDOM = FALSE
[ 3786.965284] nbd: nbd_dev_add 1811 AFTER ADD RANDOM = FALSE
[ 3786.966067] nbd: nbd_dev_add 1808 BEFORE ADD RANDOM = FALSE
[ 3786.966069] nbd: nbd_dev_add 1811 AFTER ADD RANDOM = FALSE
[ 3786.966851] nbd: nbd_dev_add 1808 BEFORE ADD RANDOM = FALSE
[ 3786.966854] nbd: nbd_dev_add 1811 AFTER ADD RANDOM = FALSE
[ 3786.967544] nbd: nbd_dev_add 1808 BEFORE ADD RANDOM = FALSE
[ 3786.967545] nbd: nbd_dev_add 1811 AFTER ADD RANDOM = FALSE
+ modprobe -r nbd

* ZRAM:-
-----------------------------------------------------------------------

With this debug patch :-
@@ -2323,7 +2323,11 @@ static int zram_add(void)
        /* zram devices sort of resembles non-rotational disks */
        blk_queue_flag_set(QUEUE_FLAG_NONROT, zram->disk->queue);
        blk_queue_flag_set(QUEUE_FLAG_SYNCHRONOUS, zram->disk->queue);
+       pr_info("%s %d BEFORE ADD RANDOM = %s\n", __func__, __LINE__,
+                       blk_queue_add_random(zram->disk->queue) ? "TRUE" : "FALSE" );
        blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, zram->disk->queue);
+       pr_info("%s %d AFTER ADD RANDOM = %s\n", __func__, __LINE__,
+                       blk_queue_add_random(zram->disk->queue) ? "TRUE" : "FALSE" );
 
        /*
         * To ensure that we always get PAGE_SIZE aligned

[    9.020829] zram: loading out-of-tree module taints kernel.
[    9.030043] zram: zram_add 2326 BEFORE ADD RANDOM = FALSE
[    9.030047] zram: zram_add 2329 AFTER ADD RANDOM = FALSE
[    9.030579] zram: Added device: zram0
[    9.168858] systemd[1]: Created slice system-systemd\x2dzram\x2dsetup.slice.
[    9.544414] zram0: detected capacity change from 0 to 16777216
[    9.600893] Adding 8388604k swap on /dev/zram0.  Priority:100 extents:1 across:8388604k SSFS


* BCACHE:-
-----------------------------------------------------------------------

With this debug patch :-
@@ -971,7 +971,11 @@ static int bcache_device_init(struct bcache_device *d, unsigned int block_size,
 	}
 
 	blk_queue_flag_set(QUEUE_FLAG_NONROT, d->disk->queue);
+	pr_info("%s %d BEFORE ADD RANDOM = %s\n", __func__, __LINE__,
+			blk_queue_add_random(d->disk->queue) ? "TRUE" : "FALSE" );
 	blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, d->disk->queue);
+	pr_info("%s %d AFTER ADD RANDOM = %s\n", __func__, __LINE__,
+			blk_queue_add_random(d->disk->queue) ? "TRUE" : "FALSE" );
 
 	blk_queue_write_cache(q, true, true);

+ makej M=drivers/md/bcache
+ modprobe null_blk queue_mode=2 nr_devices=2 memory_backed=1 gb=1
+ insmod drivers/md/bcache/bcache.ko
+ bcache make -B /dev/nullb0 -C /dev/nullb1
Name			/dev/nullb1
Label			
Type			cache
UUID:			0694b66e-970e-49e2-ab2c-791f84a53b8e
Set UUID:		e8be54f6-18c9-4965-b406-63e602201395
version:		0
nbuckets:		2048
block_size_in_sectors:	1
bucket_size_in_sectors:	1024
nr_in_set:		1
nr_this_dev:		0
first_bucket:		1
                                ...
Name			/dev/nullb0
Label			
Type			data
UUID:			8a64d20c-12ce-4ca5-a9fb-f978bfba52df
Set UUID:		e8be54f6-18c9-4965-b406-63e602201395
version:		1
block_size_in_sectors:	1
data_offset_in_sectors:	16

+ echo /dev/nullb0
+ echo /dev/nullb1
+ dmesg -c
[ 3788.828220] null_blk: null_add_dev 2147 BEFORE ADD RANDOM = FALSE
[ 3788.828227] null_blk: null_add_dev 2150 AFTER ADD RANDOM = FALSE
[ 3788.829617] null_blk: disk nullb0 created
[ 3788.829699] null_blk: null_add_dev 2147 BEFORE ADD RANDOM = FALSE
[ 3788.829701] null_blk: null_add_dev 2150 AFTER ADD RANDOM = FALSE
[ 3788.830484] null_blk: disk nullb1 created
[ 3788.830485] null_blk: module loaded
[ 3788.863458] bcache: bcache_device_init() bcache_device_init 974 BEFORE ADD RANDOM = FALSE
[ 3788.863462] bcache: bcache_device_init() bcache_device_init 977 AFTER ADD RANDOM = FALSE
[ 3788.863491] bcache: register_bdev() registered backing device nullb0
[ 3788.864156] bcache: run_cache_set() invalidating existing data
[ 3788.866970] bcache: bch_cached_dev_run() cached dev nullb0 is running already
[ 3788.866976] bcache: bch_cached_dev_attach() Caching nullb0 as bcache0 on set e8be54f6-18c9-4965-b406-63e602201395
[ 3788.866990] bcache: register_cache() registered cache device nullb1
+ sleep 1
+ bcache unregister /dev/nullb0
+ bcache unregister /dev/nullb1
+ sleep 1
+ modprobe -r bcache
+ modprobe -r null_blk

-- 
2.40.0


             reply	other threads:[~2023-04-24  7:31 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20230424092940epcas5p3407002e7d5c79593ffbafc38f2b49e51@epcas5p3.samsung.com>
2023-04-24  7:30 ` Chaitanya Kulkarni [this message]
2023-04-24  7:30   ` [PATCH 1/5] null_blk: don't clear the flag that is not set Chaitanya Kulkarni
2023-04-24  7:30   ` [PATCH 2/5] brd: " Chaitanya Kulkarni
2023-04-24  7:30   ` [PATCH 3/5] nbd: " Chaitanya Kulkarni
2023-04-24  7:30   ` [PATCH 4/5] zram: " Chaitanya Kulkarni
2023-04-24  7:30   ` [PATCH 5/5] bcache: " Chaitanya Kulkarni
2023-04-24 10:19     ` [PATCH 5/5] bcache: don't clear the flag that is not set^[ Coly Li
2023-04-24  9:26   ` [PATCH 0/5] block/drivers: don't clear the flag that is not set Nitesh Shetty
2023-04-24 10:25     ` Chaitanya Kulkarni
2023-04-24 10:40       ` Nitesh Shetty
2023-04-24 16:39   ` Jens Axboe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230424073023.38935-1-kch@nvidia.com \
    --to=kch@nvidia.com \
    --cc=akinobu.mita@gmail.com \
    --cc=axboe@kernel.dk \
    --cc=bvanassche@acm.org \
    --cc=colyli@suse.de \
    --cc=dlemoal@kernel.org \
    --cc=johannes.thumshirn@wdc.com \
    --cc=josef@toxicpanda.com \
    --cc=kent.overstreet@gmail.com \
    --cc=linux-bcache@vger.kernel.org \
    --cc=linux-block@vger.kernel.org \
    --cc=minchan@kernel.org \
    --cc=nbd@other.debian.org \
    --cc=senozhatsky@chromium.org \
    --cc=shinichiro.kawasaki@wdc.com \
    --cc=vincent.fu@samsung.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.