linux-nvme.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH v9 1/9] nvme: fail cancelled commands with NVME_SC_HOST_PATH_ERROR
       [not found] ` <20190829220645.5480-2-sagi@grimberg.me>
@ 2019-08-30 18:39   ` Chaitanya Kulkarni
  0 siblings, 0 replies; 8+ messages in thread
From: Chaitanya Kulkarni @ 2019-08-30 18:39 UTC (permalink / raw)
  To: Sagi Grimberg, linux-nvme
  Cc: Keith Busch, James Smart, Hannes Reinecke, Christoph Hellwig

Looks good.

Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>

On 08/29/2019 03:07 PM, Sagi Grimberg wrote:
> NVME_SC_ABORT_REQ means that the request was aborted due to
> an abort command received. In our case, this is a transport
> cancellation, so host pathing error is much more appropriate.
>
> Also, convert NVME_SC_HOST_PATH_ERROR to BLK_STS_TRANSPORT for
> such that callers can understand that the status is a transport
> related error. This will be used by the ns scanning code to
> understand if it got an error from the controller or that the
> controller happens to be unreachable by the transport.
>
> Reviewed-by: Minwoo Im <minwoo.im.dev@gmail.com>
> Reviewed-by: Hannes Reinecke <hare@suse.com>
> Reviewed-by: James Smart <james.smart@broadcom.com>
> Reviewed-by: Christoph Hellwig <hch@lst.de>
> Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
> ---
>   drivers/nvme/host/core.c | 4 +++-
>   1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
> index 0eb5c1bb2f48..11ef174e8399 100644
> --- a/drivers/nvme/host/core.c
> +++ b/drivers/nvme/host/core.c
> @@ -226,6 +226,8 @@ static blk_status_t nvme_error_status(struct request *req)
>   		return BLK_STS_PROTECTION;
>   	case NVME_SC_RESERVATION_CONFLICT:
>   		return BLK_STS_NEXUS;
> +	case NVME_SC_HOST_PATH_ERROR:
> +		return BLK_STS_TRANSPORT;
>   	default:
>   		return BLK_STS_IOERR;
>   	}
> @@ -294,7 +296,7 @@ bool nvme_cancel_request(struct request *req, void *data, bool reserved)
>   	if (blk_mq_request_completed(req))
>   		return true;
>
> -	nvme_req(req)->status = NVME_SC_ABORT_REQ;
> +	nvme_req(req)->status = NVME_SC_HOST_PATH_ERROR;
>   	blk_mq_complete_request(req);
>   	return true;
>   }
>


_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v9 2/9] nvme: make nvme_identify_ns propagate errors back
       [not found] ` <20190829220645.5480-3-sagi@grimberg.me>
@ 2019-08-30 18:41   ` Chaitanya Kulkarni
  0 siblings, 0 replies; 8+ messages in thread
From: Chaitanya Kulkarni @ 2019-08-30 18:41 UTC (permalink / raw)
  To: Sagi Grimberg, linux-nvme
  Cc: Keith Busch, James Smart, Hannes Reinecke, Christoph Hellwig

Looks good.

Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>

On 08/29/2019 03:07 PM, Sagi Grimberg wrote:
> right now callers of nvme_identify_ns only know that it failed,
> but don't know why. Make nvme_identify_ns propagate the error back.
> Because nvme_submit_sync_cmd may return a positive status code, we
> make nvme_identify_ns receive the id by reference and return that
> status up the call chain.
>
> Reviewed-by: Minwoo Im <minwoo.im.dev@gmail.com>
> Reviewed-by: Hannes Reinecke <hare@suse.com>
> Reviewed-by: James Smart <james.smart@broadcom.com>
> Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
> ---
>   drivers/nvme/host/core.c | 30 +++++++++++++-----------------
>   1 file changed, 13 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c


_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v9 3/9] nvme: make nvme_report_ns_ids propagate error back
       [not found] ` <20190829220645.5480-4-sagi@grimberg.me>
@ 2019-08-30 18:45   ` Chaitanya Kulkarni
  0 siblings, 0 replies; 8+ messages in thread
From: Chaitanya Kulkarni @ 2019-08-30 18:45 UTC (permalink / raw)
  To: Sagi Grimberg, linux-nvme
  Cc: Keith Busch, James Smart, Hannes Reinecke, Christoph Hellwig

Starting commit log with "And" seems little bit odd.

Otherwise, looks good.

Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>

On 08/29/2019 03:07 PM, Sagi Grimberg wrote:
> And make the callers check the return status and propagate
> back accordingly. Also print the return status.
>
> Reviewed-by: Hannes Reinecke<hare@suse.com>
> Reviewed-by: James Smart<james.smart@broadcom.com>
> Reviewed-by: Christoph Hellwig<hch@lst.de>
> Signed-off-by: Sagi Grimberg<sagi@grimberg.me>
> ---
>   drivers/nvme/host/core.c | 24 ++++++++++++++++++------
>   1 file changed, 18 insertions(+), 6 deletions(-)


_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v9 6/9] block_dev: split disk size check out of revalidate_disk
       [not found] ` <20190829220645.5480-7-sagi@grimberg.me>
@ 2019-08-30 18:55   ` Chaitanya Kulkarni
  2019-09-09  6:59   ` Hannes Reinecke
  1 sibling, 0 replies; 8+ messages in thread
From: Chaitanya Kulkarni @ 2019-08-30 18:55 UTC (permalink / raw)
  To: Sagi Grimberg, linux-nvme
  Cc: Keith Busch, James Smart, Hannes Reinecke, Christoph Hellwig

On 08/29/2019 03:07 PM, Sagi Grimberg wrote:
> Allow callers to call separately the ->revalidate_disk()
> callout and the disk size change check separately. This
> will help the caller to take action based on the return
> status of ->revalidate_disk() and run the disk size check
> afterwards.

Commit message looks odd as compare to other commits, please have
a look at following message which uses limit of 72 car per line  :-

Allow callers to call separately the ->revalidate_disk() callout and
the disk size change check separately. This will help the caller to
take action based on the return status of ->revalidate_disk() and
run the disk size check afterwards.

>
> Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
> ---
>   fs/block_dev.c     | 29 +++++++++++++++++------------
>   include/linux/fs.h |  1 +
>   2 files changed, 18 insertions(+), 12 deletions(-)
>
> diff --git a/fs/block_dev.c b/fs/block_dev.c
> index a6f7c892cb4a..4939a093e2f8 100644
> --- a/fs/block_dev.c
> +++ b/fs/block_dev.c
> @@ -1482,6 +1482,21 @@ void check_disk_size_change(struct gendisk *disk, struct block_device *bdev,
>   	}
>   }
>
> +void check_disk_size(struct gendisk *disk, bool verbose)
> +{
> +	struct block_device *bdev = bdget_disk(disk, 0);
> +
> +	if (!bdev)
> +		return;
> +
> +	mutex_lock(&bdev->bd_mutex);
> +	check_disk_size_change(disk, bdev, verbose);
> +	bdev->bd_invalidated = 0;
> +	mutex_unlock(&bdev->bd_mutex);
> +	bdput(bdev);
> +}
> +EXPORT_SYMBOL_GPL(check_disk_size);
> +
>   /**
>    * revalidate_disk - wrapper for lower-level driver's revalidate_disk call-back
>    * @disk: struct gendisk to be revalidated
> @@ -1501,18 +1516,8 @@ int revalidate_disk(struct gendisk *disk)
>   	 * Hidden disks don't have associated bdev so there's no point in
>   	 * revalidating it.
>   	 */
> -	if (!(disk->flags & GENHD_FL_HIDDEN)) {
> -		struct block_device *bdev = bdget_disk(disk, 0);
> -
> -		if (!bdev)
> -			return ret;
> -
> -		mutex_lock(&bdev->bd_mutex);
> -		check_disk_size_change(disk, bdev, ret == 0);
> -		bdev->bd_invalidated = 0;
> -		mutex_unlock(&bdev->bd_mutex);
> -		bdput(bdev);
> -	}
> +	if (!(disk->flags & GENHD_FL_HIDDEN))
> +		check_disk_size(disk, ret == 0);
>   	return ret;
>   }
>   EXPORT_SYMBOL(revalidate_disk);
> diff --git a/include/linux/fs.h b/include/linux/fs.h
> index 997a530ff4e9..6649ad157317 100644
> --- a/include/linux/fs.h
> +++ b/include/linux/fs.h
> @@ -2679,6 +2679,7 @@ extern bool is_bad_inode(struct inode *);
>   extern void check_disk_size_change(struct gendisk *disk,
>   		struct block_device *bdev, bool verbose);
>   extern int revalidate_disk(struct gendisk *);
> +extern void check_disk_size(struct gendisk *disk, bool verbose);
>   extern int check_disk_change(struct block_device *);
>   extern int __invalidate_device(struct block_device *, bool);
>   extern int invalidate_partition(struct gendisk *, int);
>


_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v9 7/9] nvme: pass status to nvme_error_status
       [not found] ` <20190829220645.5480-8-sagi@grimberg.me>
@ 2019-08-30 19:02   ` Chaitanya Kulkarni
  2019-08-30 19:08     ` Sagi Grimberg
  2019-09-09  6:59   ` Hannes Reinecke
  1 sibling, 1 reply; 8+ messages in thread
From: Chaitanya Kulkarni @ 2019-08-30 19:02 UTC (permalink / raw)
  To: Sagi Grimberg, linux-nvme
  Cc: Keith Busch, James Smart, Hannes Reinecke, Christoph Hellwig

Do you find any issue with passing request structure ? or it is
more of a normal cleanup ?

On 08/29/2019 03:08 PM, Sagi Grimberg wrote:
> No need for the full blown request structure.
>
> Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
> ---
>   drivers/nvme/host/core.c | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
> index 0916c0e8d572..8f0881dec907 100644
> --- a/drivers/nvme/host/core.c
> +++ b/drivers/nvme/host/core.c
> @@ -197,9 +197,9 @@ static inline bool nvme_ns_has_pi(struct nvme_ns *ns)
>   	return ns->pi_type && ns->ms == sizeof(struct t10_pi_tuple);
>   }
>
> -static blk_status_t nvme_error_status(struct request *req)
> +static blk_status_t nvme_error_status(u16 status)
>   {
> -	switch (nvme_req(req)->status & 0x7ff) {
> +	switch (status & 0x7ff) {
>   	case NVME_SC_SUCCESS:
>   		return BLK_STS_OK;
>   	case NVME_SC_CAP_EXCEEDED:
> @@ -262,7 +262,7 @@ static void nvme_retry_req(struct request *req)
>
>   void nvme_complete_rq(struct request *req)
>   {
> -	blk_status_t status = nvme_error_status(req);
> +	blk_status_t status = nvme_error_status(nvme_req(req)->status);
>
>   	trace_nvme_complete_rq(req);
>
>


_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v9 7/9] nvme: pass status to nvme_error_status
  2019-08-30 19:02   ` [PATCH v9 7/9] nvme: pass status to nvme_error_status Chaitanya Kulkarni
@ 2019-08-30 19:08     ` Sagi Grimberg
  0 siblings, 0 replies; 8+ messages in thread
From: Sagi Grimberg @ 2019-08-30 19:08 UTC (permalink / raw)
  To: Chaitanya Kulkarni, linux-nvme
  Cc: Keith Busch, James Smart, Hannes Reinecke, Christoph Hellwig


> Do you find any issue with passing request structure ? or it is
> more of a normal cleanup ?

Its used later on...

_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v9 6/9] block_dev: split disk size check out of revalidate_disk
       [not found] ` <20190829220645.5480-7-sagi@grimberg.me>
  2019-08-30 18:55   ` [PATCH v9 6/9] block_dev: split disk size check out of revalidate_disk Chaitanya Kulkarni
@ 2019-09-09  6:59   ` Hannes Reinecke
  1 sibling, 0 replies; 8+ messages in thread
From: Hannes Reinecke @ 2019-09-09  6:59 UTC (permalink / raw)
  To: Sagi Grimberg, linux-nvme; +Cc: Keith Busch, Christoph Hellwig, James Smart

On 8/30/19 12:06 AM, Sagi Grimberg wrote:
> Allow callers to call separately the ->revalidate_disk()
> callout and the disk size change check separately. This
> will help the caller to take action based on the return
> status of ->revalidate_disk() and run the disk size check
> afterwards.
> 
> Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
> ---
>  fs/block_dev.c     | 29 +++++++++++++++++------------
>  include/linux/fs.h |  1 +
>  2 files changed, 18 insertions(+), 12 deletions(-)
> 
Reviewed-by: Hannes Reinecke <hare@suse.com>

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		      Teamlead Storage & Networking
hare@suse.de			                  +49 911 74053 688
SUSE Software Solutions Germany GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 247165 (AG München), GF: Felix Imendörffer

_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v9 7/9] nvme: pass status to nvme_error_status
       [not found] ` <20190829220645.5480-8-sagi@grimberg.me>
  2019-08-30 19:02   ` [PATCH v9 7/9] nvme: pass status to nvme_error_status Chaitanya Kulkarni
@ 2019-09-09  6:59   ` Hannes Reinecke
  1 sibling, 0 replies; 8+ messages in thread
From: Hannes Reinecke @ 2019-09-09  6:59 UTC (permalink / raw)
  To: Sagi Grimberg, linux-nvme; +Cc: Keith Busch, Christoph Hellwig, James Smart

On 8/30/19 12:06 AM, Sagi Grimberg wrote:
> No need for the full blown request structure.
> 
> Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
> ---
>  drivers/nvme/host/core.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
> index 0916c0e8d572..8f0881dec907 100644
> --- a/drivers/nvme/host/core.c
> +++ b/drivers/nvme/host/core.c
> @@ -197,9 +197,9 @@ static inline bool nvme_ns_has_pi(struct nvme_ns *ns)
>  	return ns->pi_type && ns->ms == sizeof(struct t10_pi_tuple);
>  }
>  
> -static blk_status_t nvme_error_status(struct request *req)
> +static blk_status_t nvme_error_status(u16 status)
>  {
> -	switch (nvme_req(req)->status & 0x7ff) {
> +	switch (status & 0x7ff) {
>  	case NVME_SC_SUCCESS:
>  		return BLK_STS_OK;
>  	case NVME_SC_CAP_EXCEEDED:
> @@ -262,7 +262,7 @@ static void nvme_retry_req(struct request *req)
>  
>  void nvme_complete_rq(struct request *req)
>  {
> -	blk_status_t status = nvme_error_status(req);
> +	blk_status_t status = nvme_error_status(nvme_req(req)->status);
>  
>  	trace_nvme_complete_rq(req);
>  
> 
Reviewed-by: Hannes Reinecke <hare@suse.com>

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		      Teamlead Storage & Networking
hare@suse.de			                  +49 911 74053 688
SUSE Software Solutions Germany GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 247165 (AG München), GF: Felix Imendörffer

_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2019-09-09  7:00 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20190829220645.5480-1-sagi@grimberg.me>
     [not found] ` <20190829220645.5480-2-sagi@grimberg.me>
2019-08-30 18:39   ` [PATCH v9 1/9] nvme: fail cancelled commands with NVME_SC_HOST_PATH_ERROR Chaitanya Kulkarni
     [not found] ` <20190829220645.5480-3-sagi@grimberg.me>
2019-08-30 18:41   ` [PATCH v9 2/9] nvme: make nvme_identify_ns propagate errors back Chaitanya Kulkarni
     [not found] ` <20190829220645.5480-4-sagi@grimberg.me>
2019-08-30 18:45   ` [PATCH v9 3/9] nvme: make nvme_report_ns_ids propagate error back Chaitanya Kulkarni
     [not found] ` <20190829220645.5480-7-sagi@grimberg.me>
2019-08-30 18:55   ` [PATCH v9 6/9] block_dev: split disk size check out of revalidate_disk Chaitanya Kulkarni
2019-09-09  6:59   ` Hannes Reinecke
     [not found] ` <20190829220645.5480-8-sagi@grimberg.me>
2019-08-30 19:02   ` [PATCH v9 7/9] nvme: pass status to nvme_error_status Chaitanya Kulkarni
2019-08-30 19:08     ` Sagi Grimberg
2019-09-09  6:59   ` Hannes Reinecke

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).