All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Knight, Frederick" <Frederick.Knight@netapp.com>
To: Christoph Hellwig <hch@lst.de>,
	"Popuri, Sriram" <Sriram.Popuri@netapp.com>
Cc: "linux-nvme@lists.infradead.org" <linux-nvme@lists.infradead.org>,
	"Jens Axboe" <axboe@kernel.dk>,
	Keith Busch <keith.busch@intel.com>,
	"linux-block@vger.kernel.org" <linux-block@vger.kernel.org>,
	Sagi Grimberg <sagi@grimberg.me>, Hannes Reinecke <hare@suse.de>
Subject: RE: [PATCH 13/14] nvme: use the changed namespaces list log to	clear ns data changed AENs
Date: Sat, 26 May 2018 13:02:51 +0000	[thread overview]
Message-ID: <DM6PR06MB38337075BFA7E11BC2D9BA92F1680@DM6PR06MB3833.namprd06.prod.outlook.com> (raw)
In-Reply-To: <20180526122137.GA21257@lst.de>

[-- Attachment #1: Type: text/plain, Size: 4233 bytes --]

Section 5.2:

Asynchronous events are grouped into event types. The event type information is indicated in Dword 0 of the completion queue entry for the Asynchronous Event Request command. When the controller posts a completion queue entry for an outstanding Asynchronous Event Request command and thus reports an asynchronous event, subsequent events of that event type are automatically masked by the controller until the host clears that event. An event is cleared by reading the log page associated with that event using the Get Log Page command (refer to section 5.14).

The event is cleared by reading the log page associated with that event ...   I don't know how the event can be cleared if the associated log page is not supported (the masking of subsequent events of that type would turn it into a one-shot).  Interesting however, in the list (that reports "the following event types are defined"), there are several of the defined events missing.  Looks like an ECN opportunity to flush out that list of defined event types.

In addition, how is this bit set:

95:92   M       Optional Asynchronous Events Supported (OAES): This field indicates the optional asynchronous events supported by the controller. A controller shall not send optional asynchronous events before they are enabled by host software.

Bits 31:10 are reserved.
Bit 9 is set to '1' if the controller supports sending Firmware Activation Notices. If cleared to '0', then the controller does not support the Firmware Activation Notices event.

Bit 8 is set to '1' if the controller supports sending Namespace Attribute Notices and the associated Changed Namespace List log page. If cleared to '0', then the controller does not support the Namespace Attribute Notices event nor the associated Changed Namespace List log page.
Bits 7:0 are reserved.

Not sure how you set that bit if you support the AEN but not the log page.

        Fred

-----Original Message-----
From: Christoph Hellwig <hch@lst.de>
Sent: Saturday, May 26, 2018 8:22 AM
To: Popuri, Sriram <Sriram.Popuri@netapp.com>
Cc: Christoph Hellwig <hch@lst.de>; linux-nvme@lists.infradead.org; Knight, Frederick <Frederick.Knight@netapp.com>; Jens Axboe <axboe@kernel.dk>; Keith Busch <keith.busch@intel.com>; linux-block@vger.kernel.org; Sagi Grimberg <sagi@grimberg.me>; Hannes Reinecke <hare@suse.de>
Subject: Re: [PATCH 13/14] nvme: use the changed namespaces list log to clear ns data changed AENs

On Sat, May 26, 2018 at 12:05:02PM +0000, Popuri, Sriram wrote:
> Reading the spec it looks like ns log is alternate approach:
>
> "Namespace Attribute Changed: The Identify Namespace data structure for one or more namespaces, as well as the Namespace List returned when the Identify command is issued with the CNS field set to 02h, have changed. Host software may use this event as an indication that it should read the Identify Namespace data structures for each namespace to determine what has changed.
>
> Alternatively, host software may request the Changed Namespace List (Log Identifier 04h) to determine which namespaces in this controller have changed Identify Namespace information since the last time the log page was read."
>
> My question is: Does the target needs to implement log page 04h as this is an optional log page and the text above suggests its used in alternate way?

Section 5.2 clearly states that each AER comes with a log page to
clear it, and the above does not contain any language to explicitly
override it. So my reading of the spec is that to clear the event you need
to read the log page, but to find out what has changed you might issue
Identify commands instead.

> If target is not required to implement, then I guess your change should still work because if log page 04h fails, it fails back to rescan. Correct?

Independ of what the spec actually requires, the code tries to robust
as possible and falls back to doing the manual scan.

> I think you can optimize this by checking the "Log Page Identifier" field in your result and accordingly setting EVENT_NS_CHANGED. I assume target would clear this if log page 04h is not supported.

We can try that, but I'm not sure what it is going to buy us.


[-- Attachment #2: Type: text/html, Size: 6990 bytes --]

  reply	other threads:[~2018-05-26 13:02 UTC|newest]

Thread overview: 91+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-26 10:27 nvme/nvmet AEN and log page fixups Christoph Hellwig
2018-05-26 10:27 ` Christoph Hellwig
2018-05-26 10:27 ` [PATCH 01/14] block: unexport check_disk_size_change Christoph Hellwig
2018-05-26 10:27   ` Christoph Hellwig
2018-05-28  6:33   ` Johannes Thumshirn
2018-05-28  6:33     ` Johannes Thumshirn
2018-05-26 10:27 ` [PATCH 02/14] block: don't print a message when the device went away Christoph Hellwig
2018-05-26 10:27   ` Christoph Hellwig
2018-05-28  6:34   ` Johannes Thumshirn
2018-05-28  6:34     ` Johannes Thumshirn
2018-05-26 10:27 ` [PATCH 03/14] nvme.h: untangle AEN notice definitions Christoph Hellwig
2018-05-26 10:27   ` Christoph Hellwig
2018-05-28  6:35   ` Johannes Thumshirn
2018-05-28  6:35     ` Johannes Thumshirn
2018-05-26 10:27 ` [PATCH 04/14] nvme.h: add the changed namespace list log Christoph Hellwig
2018-05-26 10:27   ` Christoph Hellwig
2018-05-28  6:35   ` Johannes Thumshirn
2018-05-28  6:35     ` Johannes Thumshirn
2018-05-26 10:27 ` [PATCH 05/14] nvme.h: add AER configuration symbols Christoph Hellwig
2018-05-26 10:27   ` Christoph Hellwig
2018-05-28  6:35   ` Johannes Thumshirn
2018-05-28  6:35     ` Johannes Thumshirn
2018-05-26 10:27 ` [PATCH 06/14] nvmet: add a new nvmet_zero_sgl helper Christoph Hellwig
2018-05-26 10:27   ` Christoph Hellwig
2018-05-28  6:36   ` Johannes Thumshirn
2018-05-28  6:36     ` Johannes Thumshirn
2018-05-29  8:13     ` Christoph Hellwig
2018-05-29  8:13       ` Christoph Hellwig
2018-05-26 10:27 ` [PATCH 07/14] nvmet: split log page implementation Christoph Hellwig
2018-05-26 10:27   ` Christoph Hellwig
2018-05-28  6:38   ` Johannes Thumshirn
2018-05-28  6:38     ` Johannes Thumshirn
2018-05-26 10:27 ` [PATCH 08/14] nvmet: implement the changed namespaces log Christoph Hellwig
2018-05-26 10:27   ` Christoph Hellwig
2018-05-28  6:53   ` Johannes Thumshirn
2018-05-28  6:53     ` Johannes Thumshirn
2018-05-29  8:17     ` Christoph Hellwig
2018-05-29  8:17       ` Christoph Hellwig
2018-05-29  8:16       ` Johannes Thumshirn
2018-05-29  8:16         ` Johannes Thumshirn
2018-05-29  8:24         ` Christoph Hellwig
2018-05-29  8:24           ` Christoph Hellwig
2018-05-29 16:59   ` Verkamp, Daniel
2018-05-29 16:59     ` Verkamp, Daniel
2018-05-29 17:24     ` Christoph Hellwig
2018-05-29 17:24       ` Christoph Hellwig
2018-05-29 20:44       ` Daniel Verkamp
2018-05-29 20:44         ` Daniel Verkamp
2018-05-26 10:27 ` [PATCH 09/14] nvmet: Add AEN configuration support Christoph Hellwig
2018-05-26 10:27   ` Christoph Hellwig
2018-05-28  6:54   ` Johannes Thumshirn
2018-05-28  6:54     ` Johannes Thumshirn
2018-05-29 17:15   ` Verkamp, Daniel
2018-05-29 17:15     ` Verkamp, Daniel
2018-05-29 17:29     ` Christoph Hellwig
2018-05-29 17:29       ` Christoph Hellwig
2018-05-29 17:35       ` Verkamp, Daniel
2018-05-29 17:35         ` Verkamp, Daniel
2018-05-29 17:45         ` Christoph Hellwig
2018-05-29 17:45           ` Christoph Hellwig
2018-05-26 10:27 ` [PATCH 10/14] nvmet: mask pending AERs Christoph Hellwig
2018-05-26 10:27   ` Christoph Hellwig
2018-05-28  6:56   ` Johannes Thumshirn
2018-05-28  6:56     ` Johannes Thumshirn
2018-05-26 10:27 ` [PATCH 11/14] nvme: submit AEN event configuration on startup Christoph Hellwig
2018-05-26 10:27   ` Christoph Hellwig
2018-05-28  6:56   ` Johannes Thumshirn
2018-05-28  6:56     ` Johannes Thumshirn
2018-05-26 10:27 ` [PATCH 12/14] nvme: mark nvme_queue_scan static Christoph Hellwig
2018-05-26 10:27   ` Christoph Hellwig
2018-05-28  6:57   ` Johannes Thumshirn
2018-05-28  6:57     ` Johannes Thumshirn
2018-05-26 10:27 ` [PATCH 13/14] nvme: use the changed namespaces list log to clear ns data changed AENs Christoph Hellwig
2018-05-26 10:27   ` Christoph Hellwig
2018-05-26 12:05   ` Popuri, Sriram
2018-05-26 12:05     ` Popuri, Sriram
2018-05-26 12:21     ` Christoph Hellwig
2018-05-26 12:21       ` Christoph Hellwig
2018-05-26 13:02       ` Knight, Frederick [this message]
2018-05-28  6:59   ` Johannes Thumshirn
2018-05-28  6:59     ` Johannes Thumshirn
2018-06-04 19:59   ` Keith Busch
2018-06-04 19:59     ` Keith Busch
2018-06-05  4:47     ` Christoph Hellwig
2018-06-05  4:47       ` Christoph Hellwig
2018-06-05 14:37       ` Keith Busch
2018-06-05 14:37         ` Keith Busch
2018-05-26 10:27 ` [PATCH 14/14] nvme: limit warnings from nvme_identify_ns Christoph Hellwig
2018-05-26 10:27   ` Christoph Hellwig
2018-05-28  7:00   ` Johannes Thumshirn
2018-05-28  7:00     ` Johannes Thumshirn

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=DM6PR06MB38337075BFA7E11BC2D9BA92F1680@DM6PR06MB3833.namprd06.prod.outlook.com \
    --to=frederick.knight@netapp.com \
    --cc=Sriram.Popuri@netapp.com \
    --cc=axboe@kernel.dk \
    --cc=hare@suse.de \
    --cc=hch@lst.de \
    --cc=keith.busch@intel.com \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-nvme@lists.infradead.org \
    --cc=sagi@grimberg.me \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.