* [PATCHv2 1/5] nvme: Add more command status translation
2018-01-09 19:04 [PATCHv2 0/5] nvme/dm failover unification Keith Busch
@ 2018-01-09 19:04 ` Keith Busch
2018-01-10 7:58 ` [dm-devel] " Johannes Thumshirn
2018-01-09 19:04 ` [PATCHv2 2/5] nvme/multipath: Consult blk_status_t for failover Keith Busch
` (4 subsequent siblings)
5 siblings, 1 reply; 13+ messages in thread
From: Keith Busch @ 2018-01-09 19:04 UTC (permalink / raw)
To: Linux Block, Linux NVMe, Device Mapper, Christoph Hellwig,
Mike Snitzer, Jens Axboe
Cc: Bart VanAssche, James Smart, Martin K . Petersen, Hannes Reinecke,
Sagi Grimberg, Keith Busch
This adds more NVMe status code translations to blk_status_t values,
and captures all the current status codes NVMe multipath uses.
Acked-by: Mike Snitzer <snitzer@redhat.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Signed-off-by: Keith Busch <keith.busch@intel.com>
---
drivers/nvme/host/core.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index 2a69d735efbc..499f3141e365 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -157,13 +157,20 @@ static blk_status_t nvme_error_status(struct request *req)
return BLK_STS_OK;
case NVME_SC_CAP_EXCEEDED:
return BLK_STS_NOSPC;
+ case NVME_SC_LBA_RANGE:
+ return BLK_STS_TARGET;
+ case NVME_SC_BAD_ATTRIBUTES:
case NVME_SC_ONCS_NOT_SUPPORTED:
+ case NVME_SC_INVALID_OPCODE:
+ case NVME_SC_INVALID_FIELD:
+ case NVME_SC_INVALID_NS:
return BLK_STS_NOTSUPP;
case NVME_SC_WRITE_FAULT:
case NVME_SC_READ_ERROR:
case NVME_SC_UNWRITTEN_BLOCK:
case NVME_SC_ACCESS_DENIED:
case NVME_SC_READ_ONLY:
+ case NVME_SC_COMPARE_FAILED:
return BLK_STS_MEDIUM;
case NVME_SC_GUARD_CHECK:
case NVME_SC_APPTAG_CHECK:
--
2.13.6
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [dm-devel] [PATCHv2 1/5] nvme: Add more command status translation
2018-01-09 19:04 ` [PATCHv2 1/5] nvme: Add more command status translation Keith Busch
@ 2018-01-10 7:58 ` Johannes Thumshirn
0 siblings, 0 replies; 13+ messages in thread
From: Johannes Thumshirn @ 2018-01-10 7:58 UTC (permalink / raw)
To: Keith Busch
Cc: Linux Block, Linux NVMe, Device Mapper, Christoph Hellwig,
Mike Snitzer, Jens Axboe, Hannes Reinecke, Sagi Grimberg,
Martin K . Petersen, James Smart, Bart VanAssche
Looks good,
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
--
Johannes Thumshirn Storage
jthumshirn@suse.de +49 911 74053 689
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 N�rnberg
GF: Felix Imend�rffer, Jane Smithard, Graham Norton
HRB 21284 (AG N�rnberg)
Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCHv2 2/5] nvme/multipath: Consult blk_status_t for failover
2018-01-09 19:04 [PATCHv2 0/5] nvme/dm failover unification Keith Busch
2018-01-09 19:04 ` [PATCHv2 1/5] nvme: Add more command status translation Keith Busch
@ 2018-01-09 19:04 ` Keith Busch
2018-01-10 8:02 ` [dm-devel] " Johannes Thumshirn
2018-01-09 19:04 ` [PATCHv2 3/5] block: Provide blk_status_t decoding for path errors Keith Busch
` (3 subsequent siblings)
5 siblings, 1 reply; 13+ messages in thread
From: Keith Busch @ 2018-01-09 19:04 UTC (permalink / raw)
To: Linux Block, Linux NVMe, Device Mapper, Christoph Hellwig,
Mike Snitzer, Jens Axboe
Cc: Bart VanAssche, James Smart, Martin K . Petersen, Hannes Reinecke,
Sagi Grimberg, Keith Busch
This removes nvme multipath's specific status decoding to see if failover
is needed, using the generic blk_status_t that was decoded earlier. This
abstraction from the raw NVMe status means all status decoding exists
in one place.
Acked-by: Mike Snitzer <snitzer@redhat.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Signed-off-by: Keith Busch <keith.busch@intel.com>
---
drivers/nvme/host/core.c | 9 +++++----
drivers/nvme/host/multipath.c | 44 ++++++++-----------------------------------
drivers/nvme/host/nvme.h | 5 +++--
3 files changed, 16 insertions(+), 42 deletions(-)
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index 499f3141e365..82fb5bcfbf91 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -197,8 +197,10 @@ static inline bool nvme_req_needs_retry(struct request *req)
void nvme_complete_rq(struct request *req)
{
- if (unlikely(nvme_req(req)->status && nvme_req_needs_retry(req))) {
- if (nvme_req_needs_failover(req)) {
+ blk_status_t status = nvme_error_status(req);
+
+ if (unlikely(status != BLK_STS_OK && nvme_req_needs_retry(req))) {
+ if (nvme_req_needs_failover(req, status)) {
nvme_failover_req(req);
return;
}
@@ -209,8 +211,7 @@ void nvme_complete_rq(struct request *req)
return;
}
}
-
- blk_mq_end_request(req, nvme_error_status(req));
+ blk_mq_end_request(req, status);
}
EXPORT_SYMBOL_GPL(nvme_complete_rq);
diff --git a/drivers/nvme/host/multipath.c b/drivers/nvme/host/multipath.c
index 1218a9fca846..ae9abb600c0f 100644
--- a/drivers/nvme/host/multipath.c
+++ b/drivers/nvme/host/multipath.c
@@ -33,46 +33,18 @@ void nvme_failover_req(struct request *req)
kblockd_schedule_work(&ns->head->requeue_work);
}
-bool nvme_req_needs_failover(struct request *req)
+bool nvme_req_needs_failover(struct request *req, blk_status_t error)
{
if (!(req->cmd_flags & REQ_NVME_MPATH))
return false;
- switch (nvme_req(req)->status & 0x7ff) {
- /*
- * Generic command status:
- */
- case NVME_SC_INVALID_OPCODE:
- case NVME_SC_INVALID_FIELD:
- case NVME_SC_INVALID_NS:
- case NVME_SC_LBA_RANGE:
- case NVME_SC_CAP_EXCEEDED:
- case NVME_SC_RESERVATION_CONFLICT:
- return false;
-
- /*
- * I/O command set specific error. Unfortunately these values are
- * reused for fabrics commands, but those should never get here.
- */
- case NVME_SC_BAD_ATTRIBUTES:
- case NVME_SC_INVALID_PI:
- case NVME_SC_READ_ONLY:
- case NVME_SC_ONCS_NOT_SUPPORTED:
- WARN_ON_ONCE(nvme_req(req)->cmd->common.opcode ==
- nvme_fabrics_command);
- return false;
-
- /*
- * Media and Data Integrity Errors:
- */
- case NVME_SC_WRITE_FAULT:
- case NVME_SC_READ_ERROR:
- case NVME_SC_GUARD_CHECK:
- case NVME_SC_APPTAG_CHECK:
- case NVME_SC_REFTAG_CHECK:
- case NVME_SC_COMPARE_FAILED:
- case NVME_SC_ACCESS_DENIED:
- case NVME_SC_UNWRITTEN_BLOCK:
+ switch (error) {
+ case BLK_STS_NOTSUPP:
+ case BLK_STS_NOSPC:
+ case BLK_STS_TARGET:
+ case BLK_STS_NEXUS:
+ case BLK_STS_MEDIUM:
+ case BLK_STS_PROTECTION:
return false;
}
diff --git a/drivers/nvme/host/nvme.h b/drivers/nvme/host/nvme.h
index ea1aa5283e8e..8d18cfa36093 100644
--- a/drivers/nvme/host/nvme.h
+++ b/drivers/nvme/host/nvme.h
@@ -401,7 +401,7 @@ extern const struct block_device_operations nvme_ns_head_ops;
#ifdef CONFIG_NVME_MULTIPATH
void nvme_failover_req(struct request *req);
-bool nvme_req_needs_failover(struct request *req);
+bool nvme_req_needs_failover(struct request *req, blk_status_t error);
void nvme_kick_requeue_lists(struct nvme_ctrl *ctrl);
int nvme_mpath_alloc_disk(struct nvme_ctrl *ctrl,struct nvme_ns_head *head);
void nvme_mpath_add_disk(struct nvme_ns_head *head);
@@ -421,7 +421,8 @@ struct nvme_ns *nvme_find_path(struct nvme_ns_head *head);
static inline void nvme_failover_req(struct request *req)
{
}
-static inline bool nvme_req_needs_failover(struct request *req)
+static inline bool nvme_req_needs_failover(struct request *req,
+ blk_status_t error)
{
return false;
}
--
2.13.6
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [dm-devel] [PATCHv2 2/5] nvme/multipath: Consult blk_status_t for failover
2018-01-09 19:04 ` [PATCHv2 2/5] nvme/multipath: Consult blk_status_t for failover Keith Busch
@ 2018-01-10 8:02 ` Johannes Thumshirn
0 siblings, 0 replies; 13+ messages in thread
From: Johannes Thumshirn @ 2018-01-10 8:02 UTC (permalink / raw)
To: Keith Busch
Cc: Linux Block, Linux NVMe, Device Mapper, Christoph Hellwig,
Mike Snitzer, Jens Axboe, Hannes Reinecke, Sagi Grimberg,
Martin K . Petersen, James Smart, Bart VanAssche
Looks good,
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
--
Johannes Thumshirn Storage
jthumshirn@suse.de +49 911 74053 689
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 N�rnberg
GF: Felix Imend�rffer, Jane Smithard, Graham Norton
HRB 21284 (AG N�rnberg)
Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCHv2 3/5] block: Provide blk_status_t decoding for path errors
2018-01-09 19:04 [PATCHv2 0/5] nvme/dm failover unification Keith Busch
2018-01-09 19:04 ` [PATCHv2 1/5] nvme: Add more command status translation Keith Busch
2018-01-09 19:04 ` [PATCHv2 2/5] nvme/multipath: Consult blk_status_t for failover Keith Busch
@ 2018-01-09 19:04 ` Keith Busch
2018-01-10 8:06 ` [dm-devel] " Johannes Thumshirn
2018-01-09 19:04 ` [PATCHv2 4/5] nvme/multipath: Use blk_path_error Keith Busch
` (2 subsequent siblings)
5 siblings, 1 reply; 13+ messages in thread
From: Keith Busch @ 2018-01-09 19:04 UTC (permalink / raw)
To: Linux Block, Linux NVMe, Device Mapper, Christoph Hellwig,
Mike Snitzer, Jens Axboe
Cc: Bart VanAssche, James Smart, Martin K . Petersen, Hannes Reinecke,
Sagi Grimberg, Keith Busch
This patch provides a common decoder for block status path related errors
that may be retried so various entities wishing to consult this do not
have to duplicate this decision.
Acked-by: Mike Snitzer <snitzer@redhat.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Signed-off-by: Keith Busch <keith.busch@intel.com>
---
include/linux/blk_types.h | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h
index a1e628e032da..2d973ac54b09 100644
--- a/include/linux/blk_types.h
+++ b/include/linux/blk_types.h
@@ -39,6 +39,34 @@ typedef u8 __bitwise blk_status_t;
#define BLK_STS_AGAIN ((__force blk_status_t)12)
+/**
+ * blk_path_error - returns true if error may be path related
+ * @error: status the request was completed with
+ *
+ * Description:
+ * This classifies block error status into non-retryable errors and ones
+ * that may be successful if retried on a failover path.
+ *
+ * Return:
+ * %false - retrying failover path will not help
+ * %true - may succeed if retried
+ */
+static inline bool blk_path_error(blk_status_t error)
+{
+ switch (error) {
+ case BLK_STS_NOTSUPP:
+ case BLK_STS_NOSPC:
+ case BLK_STS_TARGET:
+ case BLK_STS_NEXUS:
+ case BLK_STS_MEDIUM:
+ case BLK_STS_PROTECTION:
+ return false;
+ }
+
+ /* Anything else could be a path failure, so should be retried */
+ return true;
+}
+
struct blk_issue_stat {
u64 stat;
};
--
2.13.6
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [dm-devel] [PATCHv2 3/5] block: Provide blk_status_t decoding for path errors
2018-01-09 19:04 ` [PATCHv2 3/5] block: Provide blk_status_t decoding for path errors Keith Busch
@ 2018-01-10 8:06 ` Johannes Thumshirn
0 siblings, 0 replies; 13+ messages in thread
From: Johannes Thumshirn @ 2018-01-10 8:06 UTC (permalink / raw)
To: Keith Busch
Cc: Linux Block, Linux NVMe, Device Mapper, Christoph Hellwig,
Mike Snitzer, Jens Axboe, Hannes Reinecke, Sagi Grimberg,
Martin K . Petersen, James Smart, Bart VanAssche
Looks good,
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
--
Johannes Thumshirn Storage
jthumshirn@suse.de +49 911 74053 689
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 N�rnberg
GF: Felix Imend�rffer, Jane Smithard, Graham Norton
HRB 21284 (AG N�rnberg)
Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCHv2 4/5] nvme/multipath: Use blk_path_error
2018-01-09 19:04 [PATCHv2 0/5] nvme/dm failover unification Keith Busch
` (2 preceding siblings ...)
2018-01-09 19:04 ` [PATCHv2 3/5] block: Provide blk_status_t decoding for path errors Keith Busch
@ 2018-01-09 19:04 ` Keith Busch
2018-01-10 8:06 ` [dm-devel] " Johannes Thumshirn
2018-01-09 19:04 ` [PATCHv2 5/5] dm mpath: " Keith Busch
2018-01-10 8:28 ` [PATCHv2 0/5] nvme/dm failover unification Christoph Hellwig
5 siblings, 1 reply; 13+ messages in thread
From: Keith Busch @ 2018-01-09 19:04 UTC (permalink / raw)
To: Linux Block, Linux NVMe, Device Mapper, Christoph Hellwig,
Mike Snitzer, Jens Axboe
Cc: Bart VanAssche, James Smart, Martin K . Petersen, Hannes Reinecke,
Sagi Grimberg, Keith Busch
Uses common code for determining if an error should be retried on
alternate path.
Acked-by: Mike Snitzer <snitzer@redhat.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Signed-off-by: Keith Busch <keith.busch@intel.com>
---
drivers/nvme/host/multipath.c | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/drivers/nvme/host/multipath.c b/drivers/nvme/host/multipath.c
index ae9abb600c0f..3b211d9e58b8 100644
--- a/drivers/nvme/host/multipath.c
+++ b/drivers/nvme/host/multipath.c
@@ -37,19 +37,7 @@ bool nvme_req_needs_failover(struct request *req, blk_status_t error)
{
if (!(req->cmd_flags & REQ_NVME_MPATH))
return false;
-
- switch (error) {
- case BLK_STS_NOTSUPP:
- case BLK_STS_NOSPC:
- case BLK_STS_TARGET:
- case BLK_STS_NEXUS:
- case BLK_STS_MEDIUM:
- case BLK_STS_PROTECTION:
- return false;
- }
-
- /* Everything else could be a path failure, so should be retried */
- return true;
+ return blk_path_error(error);
}
void nvme_kick_requeue_lists(struct nvme_ctrl *ctrl)
--
2.13.6
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [dm-devel] [PATCHv2 4/5] nvme/multipath: Use blk_path_error
2018-01-09 19:04 ` [PATCHv2 4/5] nvme/multipath: Use blk_path_error Keith Busch
@ 2018-01-10 8:06 ` Johannes Thumshirn
0 siblings, 0 replies; 13+ messages in thread
From: Johannes Thumshirn @ 2018-01-10 8:06 UTC (permalink / raw)
To: Keith Busch
Cc: Linux Block, Linux NVMe, Device Mapper, Christoph Hellwig,
Mike Snitzer, Jens Axboe, Hannes Reinecke, Sagi Grimberg,
Martin K . Petersen, James Smart, Bart VanAssche
Looks good,
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
--
Johannes Thumshirn Storage
jthumshirn@suse.de +49 911 74053 689
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 N�rnberg
GF: Felix Imend�rffer, Jane Smithard, Graham Norton
HRB 21284 (AG N�rnberg)
Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCHv2 5/5] dm mpath: Use blk_path_error
2018-01-09 19:04 [PATCHv2 0/5] nvme/dm failover unification Keith Busch
` (3 preceding siblings ...)
2018-01-09 19:04 ` [PATCHv2 4/5] nvme/multipath: Use blk_path_error Keith Busch
@ 2018-01-09 19:04 ` Keith Busch
2018-01-10 8:07 ` [dm-devel] " Johannes Thumshirn
2018-01-10 8:28 ` [PATCHv2 0/5] nvme/dm failover unification Christoph Hellwig
5 siblings, 1 reply; 13+ messages in thread
From: Keith Busch @ 2018-01-09 19:04 UTC (permalink / raw)
To: Linux Block, Linux NVMe, Device Mapper, Christoph Hellwig,
Mike Snitzer, Jens Axboe
Cc: Bart VanAssche, James Smart, Martin K . Petersen, Hannes Reinecke,
Sagi Grimberg, Keith Busch
Uses common code for determining if an error should be retried on
alternate path.
Acked-by: Mike Snitzer <snitzer@redhat.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Signed-off-by: Keith Busch <keith.busch@intel.com>
---
drivers/md/dm-mpath.c | 19 ++-----------------
1 file changed, 2 insertions(+), 17 deletions(-)
diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c
index f7810cc869ac..ef57c6d1c887 100644
--- a/drivers/md/dm-mpath.c
+++ b/drivers/md/dm-mpath.c
@@ -1475,21 +1475,6 @@ static void activate_path_work(struct work_struct *work)
activate_or_offline_path(pgpath);
}
-static int noretry_error(blk_status_t error)
-{
- switch (error) {
- case BLK_STS_NOTSUPP:
- case BLK_STS_NOSPC:
- case BLK_STS_TARGET:
- case BLK_STS_NEXUS:
- case BLK_STS_MEDIUM:
- return 1;
- }
-
- /* Anything else could be a path failure, so should be retried */
- return 0;
-}
-
static int multipath_end_io(struct dm_target *ti, struct request *clone,
blk_status_t error, union map_info *map_context)
{
@@ -1508,7 +1493,7 @@ static int multipath_end_io(struct dm_target *ti, struct request *clone,
* request into dm core, which will remake a clone request and
* clone bios for it and resubmit it later.
*/
- if (error && !noretry_error(error)) {
+ if (error && blk_path_error(error)) {
struct multipath *m = ti->private;
r = DM_ENDIO_REQUEUE;
@@ -1544,7 +1529,7 @@ static int multipath_end_io_bio(struct dm_target *ti, struct bio *clone,
unsigned long flags;
int r = DM_ENDIO_DONE;
- if (!*error || noretry_error(*error))
+ if (!*error || !blk_path_error(*error))
goto done;
if (pgpath)
--
2.13.6
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [dm-devel] [PATCHv2 5/5] dm mpath: Use blk_path_error
2018-01-09 19:04 ` [PATCHv2 5/5] dm mpath: " Keith Busch
@ 2018-01-10 8:07 ` Johannes Thumshirn
0 siblings, 0 replies; 13+ messages in thread
From: Johannes Thumshirn @ 2018-01-10 8:07 UTC (permalink / raw)
To: Keith Busch
Cc: Linux Block, Linux NVMe, Device Mapper, Christoph Hellwig,
Mike Snitzer, Jens Axboe, Hannes Reinecke, Sagi Grimberg,
Martin K . Petersen, James Smart, Bart VanAssche
Looks good,
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
--
Johannes Thumshirn Storage
jthumshirn@suse.de +49 911 74053 689
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 N�rnberg
GF: Felix Imend�rffer, Jane Smithard, Graham Norton
HRB 21284 (AG N�rnberg)
Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCHv2 0/5] nvme/dm failover unification
2018-01-09 19:04 [PATCHv2 0/5] nvme/dm failover unification Keith Busch
` (4 preceding siblings ...)
2018-01-09 19:04 ` [PATCHv2 5/5] dm mpath: " Keith Busch
@ 2018-01-10 8:28 ` Christoph Hellwig
2018-01-10 17:52 ` Jens Axboe
5 siblings, 1 reply; 13+ messages in thread
From: Christoph Hellwig @ 2018-01-10 8:28 UTC (permalink / raw)
To: Keith Busch
Cc: Linux Block, Linux NVMe, Device Mapper, Christoph Hellwig,
Mike Snitzer, Jens Axboe, Bart VanAssche, James Smart,
Martin K . Petersen, Hannes Reinecke, Sagi Grimberg
The whole series looks fine to me:
Reviewed-by: Christoph Hellwig <hch@lst.de>
Jens, do you want me to apply this to the nvme tree, or pick it up
directly?
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [PATCHv2 0/5] nvme/dm failover unification
2018-01-10 8:28 ` [PATCHv2 0/5] nvme/dm failover unification Christoph Hellwig
@ 2018-01-10 17:52 ` Jens Axboe
0 siblings, 0 replies; 13+ messages in thread
From: Jens Axboe @ 2018-01-10 17:52 UTC (permalink / raw)
To: Christoph Hellwig, Keith Busch
Cc: Linux Block, Linux NVMe, Device Mapper, Mike Snitzer,
Bart VanAssche, James Smart, Martin K . Petersen, Hannes Reinecke,
Sagi Grimberg
On 1/10/18 1:28 AM, Christoph Hellwig wrote:
> The whole series looks fine to me:
>
> Reviewed-by: Christoph Hellwig <hch@lst.de>
>
> Jens, do you want me to apply this to the nvme tree, or pick it up
> directly?
I queued it up, thanks.
--
Jens Axboe
^ permalink raw reply [flat|nested] 13+ messages in thread