Linux-NVME Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: willy@linux.intel.com (Matthew Wilcox)
Subject: [PATCH] NVMe: Automatic namespace rescan
Date: Fri, 15 May 2015 10:37:46 -0400	[thread overview]
Message-ID: <20150515143746.GA2729@linux.intel.com> (raw)
In-Reply-To: <1431633707-9265-1-git-send-email-keith.busch@intel.com>

On Thu, May 14, 2015@02:01:47PM -0600, Keith Busch wrote:
> @@ -307,9 +307,16 @@ static void async_req_completion(struct nvme_queue *nvmeq, void *ctx,
>  
>  	if (status == NVME_SC_SUCCESS || status == NVME_SC_ABORT_REQ)
>  		++nvmeq->dev->event_limit;
> -	if (status == NVME_SC_SUCCESS)
> -		dev_warn(nvmeq->q_dmadev,
> -			"async event result %08x\n", result);
> +	if (status == NVME_SC_SUCCESS) {
> +		dev_warn(nvmeq->q_dmadev, "async event result %08x\n", result);
> +		if ((result & 0x3) == NVME_AER_TYPE_NOTICE &&
> +		    ((result >> 8) & 0xff) == NVME_AER_INFO_NS_CHANGE) {
> +			struct nvme_dev *dev = nvmeq->dev;
> +			dev_info(nvmeq->q_dmadev,
> +				"namespace change event, rescan\n");
> +			schedule_work(&dev->scan_work);
> +		}
> +	}
>  }
>  
>  static void abort_completion(struct nvme_queue *nvmeq, void *ctx,

I don't think we want the dev_warn() and the dev_info() for the same event.
How about ...

	if (status != NVME_SC_SUCCESS)
		return;

	switch (result & 0xff07) {
	case NVME_AER_NOTICE_NS_CHANGED:
		dev_info(nvmeq->q_dmadev, "rescanning\n");
		schedule_work(&nvmeq->dev->scan_work);
	default:
		dev_warn(nvmeq->q_dmadev, "async event result %08x\n", result);
	}

with NVME_AER_NOTICE_NS_CHANGED being an enum with value 0x0002

> +static struct nvme_ns *nvme_find_ns(struct nvme_dev *dev, unsigned nsid)
> +{
> +	struct nvme_ns *ns;
> +
> +	list_for_each_entry(ns, &dev->namespaces, list)
> +		if (ns->ns_id == nsid)
> +			return ns;
> +	return NULL;
> +}

Pondering if it's worth keeping the list sorted so we can break out early
if the namespace isn't in the list?

  reply	other threads:[~2015-05-15 14:37 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-14 20:01 [PATCH] NVMe: Automatic namespace rescan Keith Busch
2015-05-15 14:37 ` Matthew Wilcox [this message]
2015-05-15 15:06   ` Keith Busch
2015-05-15 21:59     ` Keith Busch
2015-05-17 15:04       ` Brandon Schulz

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=20150515143746.GA2729@linux.intel.com \
    --to=willy@linux.intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox