All of lore.kernel.org
 help / color / mirror / Atom feed
From: hch@lst.de (Christoph Hellwig)
Subject: [PATCH 4/5] nvme-multipath: disable ANA support if parsing fails
Date: Fri, 20 Jul 2018 17:00:27 +0200	[thread overview]
Message-ID: <20180720150027.GA17110@lst.de> (raw)
In-Reply-To: <fda50728-d90c-2915-0ba3-7f7a3c7cd613@suse.de>

On Thu, Jul 19, 2018@06:00:43PM +0200, Hannes Reinecke wrote:
> There are two reasons why I did this:
>
> 1. There's this statement in nvme_failover_req():
>
> 	if (!WARN_ON_ONCE(!ns->ctrl->ana_log_buf))
> 		queue_work(nvme_wq, &ns->ctrl->ana_work);
>
> (or a similar statement in nvme_handle_aen_notice())
> which really doesn't make sense if we require 'ana_log_buf' to always be 
> filled out.

We could still have a controller return the ANA status code or
send the AEN if we don't use ANA.  So I guess we do need to remove
the warnings at least.

> If we require ana_log_buf to always be set we would crash immediately 
> afterwards in nvme_read_ana_log() anyway, rendering the WARN_ON quite 
> pointless.

Well, a conditional to skip code and warn when something is not supported
is a lot better than crashing, don't you agree?

> So, from my POV, either remove the WARN_ON() (or at least replace it with a 
> BUG_ON() to clarify we've messed up) or handle the case where ana_log_buf 
> is _NOT_ set. But that involves graceful failure handling while parsing ANA 
> log pages.

As said above we probably should remove the WARN_ON, although these cases
mean we had an issue either in the driver initialization or the data
returned by the controller.

> 2. If we come across a target with invalid or incorrect ANA implementations 
> we _cannot_ connect at all (as nvme_mpath_init() will return an error, 
> causing mpath_init_identify() to fail, too).

Which seems pretty sensible.  Without that people might just keep using
the setup in this form (note that a driver bug is another possibility,
it's not always the controllers that are broken :))

> And in general I thought it was good practice to handle errors gracefully...

And I fail to see where we handle errors much more gracefully here,
the only difference seems to be that we entirely ignore ANA errors.

  reply	other threads:[~2018-07-20 15:00 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-16 10:58 [PATCH 0/5] nvme: ANA implementation fixes Hannes Reinecke
2018-07-16 10:58 ` [PATCH 1/5] nvme: count all ANA groups for ANA Log page Hannes Reinecke
2018-07-19 14:31   ` Christoph Hellwig
2018-09-17 13:49   ` Christoph Hellwig
2018-07-16 10:58 ` [PATCH 2/5] nvmet: fixup crash on NULL device path Hannes Reinecke
2018-07-17 13:48   ` Christoph Hellwig
2018-07-17 13:48     ` Hannes Reinecke
2018-07-17 13:55       ` Christoph Hellwig
2018-07-24 14:02       ` Christoph Hellwig
2018-07-25  7:25         ` Hannes Reinecke
2018-07-16 10:58 ` [PATCH 3/5] nvme-multipath: fixup crash during disconnect Hannes Reinecke
2018-07-19 14:31   ` Christoph Hellwig
2018-07-19 14:35     ` Christoph Hellwig
2018-07-16 10:58 ` [PATCH 4/5] nvme-multipath: disable ANA support if parsing fails Hannes Reinecke
2018-07-19 14:43   ` Christoph Hellwig
2018-07-19 16:00     ` Hannes Reinecke
2018-07-20 15:00       ` Christoph Hellwig [this message]
2018-07-16 10:58 ` [PATCH 5/5] nvme-multipath: parse entire ANA log page in nvme_set_ns_ana_state() Hannes Reinecke
2018-07-19 14:46   ` Christoph Hellwig

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=20180720150027.GA17110@lst.de \
    --to=hch@lst.de \
    /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.