linux-next.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: Mark Brown <broonie@kernel.org>
Cc: Jens Axboe <axboe@kernel.dk>, Keith Busch <keith.busch@intel.com>,
	Christoph Hellwig <hch@lst.de>,
	linux-next@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-block@vger.kernel.org
Subject: Re: linux-next: build failure after merge of the block tree
Date: Wed, 2 Dec 2015 17:45:27 +0100	[thread overview]
Message-ID: <20151202164527.GA31048@lst.de> (raw)
In-Reply-To: <20151202161936.22b23668cf9dea9872b5079b@kernel.org>

Looks like I didn't test with CONFIG_NVM enabled, and neither did
the build bot.

Most of this is really weird crazy shit in the lighnvm support, though.

Struct nvme_ns is a structure for the NVM I/O command set, and it has
no business poking into it.  Second this commit:

commit 47b3115ae7b799be8b77b0f024215ad4f68d6460
Author: Wenwei Tao <ww.tao0320@gmail.com>
Date:   Fri Nov 20 13:47:55 2015 +0100

    nvme: lightnvm: use admin queues for admin cmds

Does even more crazy stuff.  If a function gets a request_queue parameter
passed it'd better use that and not look for another one.

Quick patch below, but this code will need some more attention:

diff --git a/drivers/nvme/host/lightnvm.c b/drivers/nvme/host/lightnvm.c
index d5622f9..09cf0b9 100644
--- a/drivers/nvme/host/lightnvm.c
+++ b/drivers/nvme/host/lightnvm.c
@@ -276,7 +276,6 @@ static int init_grps(struct nvm_id *nvm_id, struct nvme_nvm_id *nvme_nvm_id)
 static int nvme_nvm_identity(struct request_queue *q, struct nvm_id *nvm_id)
 {
 	struct nvme_ns *ns = q->queuedata;
-	struct nvme_dev *dev = ns->dev;
 	struct nvme_nvm_id *nvme_nvm_id;
 	struct nvme_nvm_command c = {};
 	int ret;
@@ -289,7 +288,7 @@ static int nvme_nvm_identity(struct request_queue *q, struct nvm_id *nvm_id)
 	if (!nvme_nvm_id)
 		return -ENOMEM;
 
-	ret = nvme_submit_sync_cmd(dev->admin_q, (struct nvme_command *)&c,
+	ret = nvme_submit_sync_cmd(ns->ctrl->admin_q, (struct nvme_command *)&c,
 				nvme_nvm_id, sizeof(struct nvme_nvm_id));
 	if (ret) {
 		ret = -EIO;
@@ -314,9 +313,8 @@ static int nvme_nvm_get_l2p_tbl(struct request_queue *q, u64 slba, u32 nlb,
 				nvm_l2p_update_fn *update_l2p, void *priv)
 {
 	struct nvme_ns *ns = q->queuedata;
-	struct nvme_dev *dev = ns->dev;
 	struct nvme_nvm_command c = {};
-	u32 len = queue_max_hw_sectors(dev->admin_q) << 9;
+	u32 len = queue_max_hw_sectors(ns->ctrl->admin_q) << 9;
 	u32 nlb_pr_rq = len / sizeof(u64);
 	u64 cmd_slba = slba;
 	void *entries;
@@ -334,10 +332,10 @@ static int nvme_nvm_get_l2p_tbl(struct request_queue *q, u64 slba, u32 nlb,
 		c.l2p.slba = cpu_to_le64(cmd_slba);
 		c.l2p.nlb = cpu_to_le32(cmd_nlb);
 
-		ret = nvme_submit_sync_cmd(dev->admin_q,
+		ret = nvme_submit_sync_cmd(ns->ctrl->admin_q,
 				(struct nvme_command *)&c, entries, len);
 		if (ret) {
-			dev_err(dev->dev, "L2P table transfer failed (%d)\n",
+			dev_err(ns->ctrl->dev, "L2P table transfer failed (%d)\n",
 									ret);
 			ret = -EIO;
 			goto out;
@@ -362,7 +360,7 @@ static int nvme_nvm_get_bb_tbl(struct request_queue *q, struct ppa_addr ppa,
 				void *priv)
 {
 	struct nvme_ns *ns = q->queuedata;
-	struct nvme_dev *dev = ns->dev;
+	struct nvme_ctrl *ctrl = ns->ctrl;
 	struct nvme_nvm_command c = {};
 	struct nvme_nvm_bb_tbl *bb_tbl;
 	int tblsz = sizeof(struct nvme_nvm_bb_tbl) + nr_blocks;
@@ -376,30 +374,30 @@ static int nvme_nvm_get_bb_tbl(struct request_queue *q, struct ppa_addr ppa,
 	if (!bb_tbl)
 		return -ENOMEM;
 
-	ret = nvme_submit_sync_cmd(dev->admin_q, (struct nvme_command *)&c,
+	ret = nvme_submit_sync_cmd(ctrl->admin_q, (struct nvme_command *)&c,
 								bb_tbl, tblsz);
 	if (ret) {
-		dev_err(dev->dev, "get bad block table failed (%d)\n", ret);
+		dev_err(ctrl->dev, "get bad block table failed (%d)\n", ret);
 		ret = -EIO;
 		goto out;
 	}
 
 	if (bb_tbl->tblid[0] != 'B' || bb_tbl->tblid[1] != 'B' ||
 		bb_tbl->tblid[2] != 'L' || bb_tbl->tblid[3] != 'T') {
-		dev_err(dev->dev, "bbt format mismatch\n");
+		dev_err(ctrl->dev, "bbt format mismatch\n");
 		ret = -EINVAL;
 		goto out;
 	}
 
 	if (le16_to_cpu(bb_tbl->verid) != 1) {
 		ret = -EINVAL;
-		dev_err(dev->dev, "bbt version not supported\n");
+		dev_err(ctrl->dev, "bbt version not supported\n");
 		goto out;
 	}
 
 	if (le32_to_cpu(bb_tbl->tblks) != nr_blocks) {
 		ret = -EINVAL;
-		dev_err(dev->dev, "bbt unsuspected blocks returned (%u!=%u)",
+		dev_err(ctrl->dev, "bbt unsuspected blocks returned (%u!=%u)",
 					le32_to_cpu(bb_tbl->tblks), nr_blocks);
 		goto out;
 	}
@@ -419,7 +417,6 @@ static int nvme_nvm_set_bb_tbl(struct request_queue *q, struct nvm_rq *rqd,
 								int type)
 {
 	struct nvme_ns *ns = q->queuedata;
-	struct nvme_dev *dev = ns->dev;
 	struct nvme_nvm_command c = {};
 	int ret = 0;
 
@@ -429,10 +426,10 @@ static int nvme_nvm_set_bb_tbl(struct request_queue *q, struct nvm_rq *rqd,
 	c.set_bb.nlb = cpu_to_le16(rqd->nr_pages - 1);
 	c.set_bb.value = type;
 
-	ret = nvme_submit_sync_cmd(dev->admin_q, (struct nvme_command *)&c,
+	ret = nvme_submit_sync_cmd(ns->ctrl->admin_q, (struct nvme_command *)&c,
 								NULL, 0);
 	if (ret)
-		dev_err(dev->dev, "set bad block table failed (%d)\n", ret);
+		dev_err(ns->ctrl->dev, "set bad block table failed (%d)\n", ret);
 	return ret;
 }
 
@@ -518,9 +515,8 @@ static int nvme_nvm_erase_block(struct request_queue *q, struct nvm_rq *rqd)
 static void *nvme_nvm_create_dma_pool(struct request_queue *q, char *name)
 {
 	struct nvme_ns *ns = q->queuedata;
-	struct nvme_dev *dev = ns->dev;
 
-	return dma_pool_create(name, dev->dev, PAGE_SIZE, PAGE_SIZE, 0);
+	return dma_pool_create(name, ns->ctrl->dev, PAGE_SIZE, PAGE_SIZE, 0);
 }
 
 static void nvme_nvm_destroy_dma_pool(void *pool)
@@ -573,8 +569,9 @@ void nvme_nvm_unregister(struct request_queue *q, char *disk_name)
 
 int nvme_nvm_ns_supported(struct nvme_ns *ns, struct nvme_id_ns *id)
 {
-	struct nvme_dev *dev = ns->dev;
-	struct pci_dev *pdev = to_pci_dev(dev->dev);
+	struct nvme_ctrl *ctrl = ns->ctrl;
+	/* XXX: this is poking into PCI structures from generic code! */
+	struct pci_dev *pdev = to_pci_dev(ctrl->dev);
 
 	/* QEMU NVMe simulator - PCI ID + Vendor specific bit */
 	if (pdev->vendor == PCI_VENDOR_ID_INTEL && pdev->device == 0x5845 &&

  reply	other threads:[~2015-12-02 16:45 UTC|newest]

Thread overview: 294+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-02 16:19 linux-next: build failure after merge of the block tree Mark Brown
2015-12-02 16:45 ` Christoph Hellwig [this message]
2015-12-02 21:07   ` Jens Axboe
2015-12-02 21:14     ` Keith Busch
2015-12-02 21:27       ` Jens Axboe
2015-12-03  7:35         ` Christoph Hellwig
2015-12-03  8:39     ` Matias Bjørling
2015-12-03  9:06       ` Christoph Hellwig
2015-12-03  9:52         ` Matias Bjørling
2015-12-03  9:57           ` Christoph Hellwig
2015-12-03 10:09             ` Matias Bjørling
2015-12-03 10:21               ` Christoph Hellwig
2015-12-03 11:07                 ` Matias Bjørling
2015-12-03 16:42                   ` Christoph Hellwig
2015-12-04 12:16                     ` Matias Bjørling
  -- strict thread matches above, loose matches on Subject: below --
2025-01-13  1:51 Stephen Rothwell
2025-01-13  2:13 ` Yu Kuai
2025-01-13  2:37   ` Stephen Rothwell
2025-01-13  6:03 ` Song Liu
2025-01-13 14:16 ` Jens Axboe
2025-01-10  1:44 Stephen Rothwell
2025-01-10  2:37 ` Luiz Capitulino
2025-01-21  7:39 ` Stephen Rothwell
2025-01-21 13:57   ` Luiz Capitulino
2025-01-21 14:40     ` Jens Axboe
2025-01-21 14:43       ` Luiz Capitulino
2024-12-20  2:10 Stephen Rothwell
2024-06-21 15:40 Mark Brown
2024-06-21 15:58 ` Jens Axboe
2024-06-21 17:02   ` John Garry
2024-06-21 17:57     ` Jens Axboe
2024-05-10  3:10 Stephen Rothwell
2024-05-10  7:22 ` Damien Le Moal
2024-05-13 23:53 ` Stephen Rothwell
2023-12-21  3:01 Stephen Rothwell
2023-12-21  3:11 ` Jens Axboe
2023-12-21  5:25 ` Christoph Hellwig
2023-06-01  0:50 Stephen Rothwell
2023-06-01  8:27 ` Johannes Thumshirn
2023-06-01 15:14   ` Jens Axboe
2023-03-24  1:57 Stephen Rothwell
2023-03-22 23:33 Stephen Rothwell
2023-03-22 23:59 ` Stephen Rothwell
2023-01-19 23:07 Stephen Rothwell
2023-01-06  0:19 Stephen Rothwell
2023-01-06  2:53 ` Martin K. Petersen
2022-11-16  1:35 Stephen Rothwell
2022-10-04 21:50 Stephen Rothwell
2022-10-04 22:14 ` Jens Axboe
2022-08-22  4:46 Stephen Rothwell
2022-08-22 13:55 ` Jens Axboe
2022-08-22 15:34   ` Bart Van Assche
2022-08-22 15:40     ` Jens Axboe
2022-08-22 16:06       ` Bart Van Assche
2022-08-22 16:07         ` Jens Axboe
2022-07-27  4:09 Stephen Rothwell
2022-07-21  3:11 Stephen Rothwell
2022-07-21  4:23 ` Christoph Hellwig
2022-07-21 16:51 ` Jens Axboe
2022-07-15  4:02 Stephen Rothwell
2022-07-15  4:10 ` Al Viro
2022-07-15 14:42   ` Jens Axboe
2022-07-15 17:33     ` Linus Torvalds
2022-07-17  3:43       ` Al Viro
2022-05-23  2:49 Stephen Rothwell
2022-05-23  2:52 ` Jens Axboe
2022-05-23  6:05   ` Coly Li
2022-05-23 12:31     ` Jens Axboe
2022-05-04  1:40 Stephen Rothwell
2022-05-04 11:25 ` Jens Axboe
2022-03-09  2:16 Stephen Rothwell
2022-03-09  2:33 ` Jens Axboe
2022-03-09  2:42   ` Jens Axboe
2021-08-10 10:31 Stephen Rothwell
2021-08-10 10:52 ` Stephen Rothwell
2021-08-10 12:58 ` Christoph Hellwig
2021-08-10 13:01   ` Jens Axboe
2021-08-10 13:22   ` Stephen Rothwell
2021-02-23  1:42 Stephen Rothwell
2021-02-23  2:32 ` Jens Axboe
2021-02-02  2:57 Stephen Rothwell
2021-02-02  3:16 ` Stephen Rothwell
2021-02-02  6:55   ` Christoph Hellwig
2021-02-14 22:24   ` Stephen Rothwell
2020-12-14  4:18 Stephen Rothwell
2020-12-07  3:09 Stephen Rothwell
2020-12-07 20:09 ` Florent Revest
2020-12-14 20:29 ` Stephen Rothwell
2020-12-02  4:01 Stephen Rothwell
2020-12-02  7:19 ` Christoph Hellwig
2020-12-14 20:09 ` Stephen Rothwell
2020-12-14 20:12   ` Jens Axboe
2020-12-14 21:36     ` David Sterba
2020-12-14 21:43       ` Stephen Rothwell
2020-12-14 21:54         ` David Sterba
2020-12-14 22:01           ` Stephen Rothwell
2020-09-23  4:34 Stephen Rothwell
2020-07-15  2:14 Stephen Rothwell
2020-07-15  9:24 ` Geert Uytterhoeven
2020-07-15 15:08   ` Jens Axboe
2020-07-15 15:17     ` Geert Uytterhoeven
2020-07-15 15:22       ` Geert Uytterhoeven
2020-07-15 15:25         ` Jens Axboe
2020-07-15 15:08 ` Jens Axboe
2020-06-02  3:25 Stephen Rothwell
2020-05-25  5:08 Stephen Rothwell
2020-05-25 19:03 ` Jens Axboe
2020-05-26  4:36   ` Stephen Rothwell
2020-05-26 13:53     ` Jens Axboe
2020-05-22 11:32 Stephen Rothwell
2020-05-22 14:46 ` Jens Axboe
2020-05-14  8:57 Stephen Rothwell
2020-05-14 14:06 ` Jens Axboe
2020-05-11  4:27 Stephen Rothwell
2020-05-11 15:06 ` Jens Axboe
2020-05-11 15:17   ` Christoph Hellwig
2020-05-11 15:28     ` Jens Axboe
2020-05-08  5:28 Stephen Rothwell
2020-05-08 15:48 ` Jens Axboe
2020-03-12  2:54 Stephen Rothwell
2020-03-12 10:12 ` Matteo Croce
2020-03-12 13:07   ` Jens Axboe
2020-03-12 13:57     ` Matteo Croce
2020-03-13  7:24       ` Gao Xiang
2020-02-04  0:25 Stephen Rothwell
2020-02-04  0:28 ` Jens Axboe
2020-02-03  0:04 Stephen Rothwell
2020-02-03  4:12 ` Jens Axboe
2020-01-06  1:30 Stephen Rothwell
2020-01-07  4:04 ` Jens Axboe
2020-01-12 18:32   ` Al Viro
2020-01-13 17:09     ` Jens Axboe
2020-01-13 17:26       ` Jens Axboe
2019-10-28  2:59 Stephen Rothwell
2019-10-28  3:25 ` Jens Axboe
2019-07-11  5:15 Stephen Rothwell
2019-07-11 20:17 ` Tejun Heo
2019-07-11 20:36   ` Jens Axboe
2019-07-11  5:04 Stephen Rothwell
2019-06-21  3:56 Stephen Rothwell
2019-06-21  8:18 ` Christoph Hellwig
2019-06-21  8:36   ` Stephen Rothwell
2019-05-06  5:07 Stephen Rothwell
2019-01-16  2:55 Stephen Rothwell
2019-01-16  2:48 Stephen Rothwell
2019-01-16  2:50 ` Ming Lei
2019-01-16  2:35 Stephen Rothwell
2019-01-16  2:48 ` Ming Lei
2018-07-31  3:07 Stephen Rothwell
2018-07-31 14:59 ` Jens Axboe
2018-07-26  4:56 Stephen Rothwell
2018-07-26  8:48 ` Christoph Hellwig
2018-07-26  8:45   ` Stephen Rothwell
2018-07-26 17:48   ` Jens Axboe
2018-07-26 17:56     ` Christoph Hellwig
2018-07-26 17:59       ` Steve Wise
2018-07-26 20:54     ` Bart Van Assche
2018-07-26 21:13       ` Jens Axboe
2018-07-26 12:32 ` Steve Wise
2018-07-26 22:16   ` Stephen Rothwell
2018-08-15  1:43 ` Stephen Rothwell
2017-08-24  3:32 Stephen Rothwell
2017-08-24  3:34 ` Stephen Rothwell
2017-08-24  8:44   ` Christoph Hellwig
2017-08-24  8:54     ` Stephen Rothwell
2017-06-28  8:04 Stephen Rothwell
2017-06-28 12:43 ` Jens Axboe
2017-06-28 14:01   ` Jens Axboe
2017-06-28 15:11     ` Jens Axboe
2017-06-28 21:33       ` Stephen Rothwell
2017-06-13 10:54 Stephen Rothwell
2017-06-15 14:50 ` Sebastian Ott
2017-06-19  9:00   ` Sebastian Ott
2017-06-20  1:45     ` Stephen Rothwell
2017-07-04 15:15 ` Guenter Roeck
2017-07-04 21:40   ` Stephen Rothwell
2017-06-13  4:10 Stephen Rothwell
2017-04-18  3:02 Stephen Rothwell
2017-05-02  1:07 ` Stephen Rothwell
2017-05-02  1:09   ` Jens Axboe
2017-05-02  1:37     ` Stephen Rothwell
2017-05-02  1:45       ` Jens Axboe
2017-01-30  1:43 Stephen Rothwell
2017-01-30  1:53 ` Jens Axboe
2017-01-30  3:07   ` Jens Axboe
2017-01-30  6:34   ` Christoph Hellwig
2016-12-01  2:55 Stephen Rothwell
2016-12-01  3:00 ` Jens Axboe
2016-12-01  3:02   ` Stephen Rothwell
2016-12-01  3:04     ` Jens Axboe
2016-11-08  3:21 Stephen Rothwell
2016-11-08  3:28 ` Jens Axboe
2016-09-19  6:18 Stephen Rothwell
2016-09-19 13:48 ` Christoph Hellwig
2016-09-19 14:22 ` Jens Axboe
2016-09-16  1:14 Stephen Rothwell
2016-09-16  4:13 ` Jens Axboe
2016-04-26  3:38 Stephen Rothwell
2016-04-26 13:30 ` Michal Marek
2016-04-26 13:56   ` Stephen Rothwell
     [not found]   ` <v3THaCMkCzylcv3TJavAje@videotron.ca>
2016-04-26 14:40     ` Nicolas Pitre
2016-04-26 14:41       ` Jens Axboe
2016-04-26 15:18       ` Stephen Rothwell
2016-04-26 20:48         ` Nicolas Pitre
2016-04-26 21:39           ` Stephen Rothwell
2016-04-27  9:02           ` Michal Marek
2016-04-27 13:46             ` Nicolas Pitre
2016-03-07  3:29 Stephen Rothwell
2015-10-06  1:43 Stephen Rothwell
2015-10-06  1:54 ` kbuild test robot
2015-10-06  7:20 ` Ming Lei
2015-07-30  4:17 Stephen Rothwell
2015-07-30  6:19 ` Christoph Hellwig
2015-07-30 12:24   ` Stephen Rothwell
2015-07-30 14:38 ` Drokin, Oleg
2015-02-09  4:25 Stephen Rothwell
2015-01-21  3:45 Stephen Rothwell
2014-11-17  3:44 Stephen Rothwell
2014-11-17 19:51 ` Jens Axboe
2014-11-11  2:12 Stephen Rothwell
2014-11-11 11:20 ` Fabian Frederick
2014-11-11 15:27   ` Jens Axboe
2014-11-14 16:19     ` Fabian Frederick
2013-11-26  2:30 Stephen Rothwell
2013-11-04  3:13 Stephen Rothwell
2013-11-04  3:23 ` Jens Axboe
2013-11-04  3:32   ` Jens Axboe
2013-11-04  3:39   ` Stephen Rothwell
2013-11-01  4:01 Stephen Rothwell
2013-02-06  3:06 Stephen Rothwell
2013-02-06  8:33 ` Jens Axboe
2012-10-10  1:14 Stephen Rothwell
2012-09-27  3:27 Stephen Rothwell
2012-09-27  7:37 ` Jens Axboe
2011-12-19  3:19 Stephen Rothwell
2011-12-19  9:37 ` Jens Axboe
2011-12-19 16:41   ` Tejun Heo
2011-12-19  9:45 ` Sedat Dilek
2011-12-19  9:48   ` Jens Axboe
2011-12-19 11:32     ` Stephen Rothwell
2011-12-16  1:50 Stephen Rothwell
2011-12-16  8:20 ` Jens Axboe
2011-09-17 11:18 Stephen Rothwell
2011-07-04  3:48 Stephen Rothwell
2011-06-01  1:01 Stephen Rothwell
2011-06-01  6:26 ` Jens Axboe
2011-06-01 13:43   ` Konrad Rzeszutek Wilk
2011-03-25  3:30 Stephen Rothwell
2011-03-25  4:08 ` Akinobu Mita
2011-03-25  5:25   ` Stephen Rothwell
2011-03-14  5:19 Stephen Rothwell
2011-03-16 23:32 ` Stephen Rothwell
2011-03-17 10:18   ` Jens Axboe
2011-03-17 10:36     ` David Woodhouse
2011-03-17 10:45       ` Jens Axboe
2011-03-21 23:33         ` Stephen Rothwell
2011-03-10  3:08 Stephen Rothwell
2011-03-10  7:15 ` Jens Axboe
2011-03-07  2:39 Stephen Rothwell
2011-01-07  0:05 Stephen Rothwell
2011-01-07  7:32 ` Jens Axboe
2011-01-07 10:52   ` Sedat Dilek
2011-01-07 12:17     ` Stephen Rothwell
2011-01-07 13:19       ` Sedat Dilek
2011-01-07 14:22         ` Stephen Rothwell
2011-01-07 15:08           ` Jens Axboe
2011-01-07 18:04             ` Sedat Dilek
2011-01-07 18:20               ` Sedat Dilek
2010-12-23  1:53 Stephen Rothwell
2010-12-23 22:36 ` Nicholas A. Bellinger
2010-10-11  3:18 Stephen Rothwell
2010-10-23  2:51 ` Stephen Rothwell
2010-09-17  1:37 Stephen Rothwell
2010-09-17  3:19 ` Christoph Hellwig
2010-08-09  1:28 Stephen Rothwell
2010-08-09  1:50 ` Jens Axboe
2010-08-05  1:47 Stephen Rothwell
2010-08-05  6:35 ` Jens Axboe
2010-08-03  3:12 Stephen Rothwell
2010-08-03  7:46 ` Jens Axboe
2010-08-03  8:26 ` Christoph Hellwig
2010-05-18  3:37 Stephen Rothwell
2010-05-18  8:56 ` Jens Axboe
2010-05-18 10:20   ` Stephen Rothwell
2010-05-18 10:50     ` Jens Axboe
2010-04-29  3:52 Stephen Rothwell
2010-04-29  7:31 ` Jens Axboe
2010-04-28  3:52 Stephen Rothwell
2010-04-28  5:34 ` Jens Axboe
2010-04-15  2:42 Stephen Rothwell
2010-04-15  5:23 ` Divyesh Shah
2010-04-15  6:16   ` Stephen Rothwell
2010-04-15  6:56     ` Jens Axboe
2010-02-23  2:26 Stephen Rothwell

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=20151202164527.GA31048@lst.de \
    --to=hch@lst.de \
    --cc=axboe@kernel.dk \
    --cc=broonie@kernel.org \
    --cc=keith.busch@intel.com \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-next@vger.kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).