From: keith.busch@intel.com (Keith Busch)
Subject: [PATCH] NVMe: Automatic namespace rescan
Date: Fri, 15 May 2015 15:06:43 +0000 (UTC) [thread overview]
Message-ID: <alpine.LNX.2.00.1505151440220.15930@localhost.lm.intel.com> (raw)
In-Reply-To: <20150515143746.GA2729@linux.intel.com>
On Fri, 15 May 2015, Matthew Wilcox wrote:
> 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,
>
> 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
Brilliant!
>> +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?
The list is actually already sorted since this doesn't allow gaps in
NSIDs. If a namespace is not attached, the driver creates a 0 capacity
block device for it and appends it to the list, so it's always in
ascending order.
Is this a bad idea? Let's say a controller supports 128 namespaces,
but only NSID 128 is attached, we'd see 127 zero capacity /dev/nvme#n#
block devs.
next prev parent reply other threads:[~2015-05-15 15:06 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
2015-05-15 15:06 ` Keith Busch [this message]
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=alpine.LNX.2.00.1505151440220.15930@localhost.lm.intel.com \
--to=keith.busch@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