From: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
To: Devesh Sharma <devesh.sharma@avagotech.com>
Cc: Chuck Lever <chuck.lever@oracle.com>,
linux-rdma@vger.kernel.org,
Linux NFS Mailing List <linux-nfs@vger.kernel.org>
Subject: Re: [PATCH v1 02/14] xprtrdma: Warn when there are orphaned IB objects
Date: Wed, 6 May 2015 10:48:17 -0600 [thread overview]
Message-ID: <20150506164817.GC11331@obsidianresearch.com> (raw)
In-Reply-To: <CANjDDBg3Ey0DEM3n9PY9VLW+chF0=AJPghYOopo1a9vL3CKzKg@mail.gmail.com>
On Wed, May 06, 2015 at 07:52:03PM +0530, Devesh Sharma wrote:
> >> Should we check for EBUSY explicitly? other then this is an error in
> >> vendor specific ib_dealloc_pd()
> >
> > Any error return means ib_dealloc_pd() has failed, right? Doesn’t that
> > mean the PD is still allocated, and could cause problems later?
>
> Yes, you are correct, I was thinking ib_dealloc_pd() has a refcount
> implemented in the core layer, thus if the PD is used by any resource,
> it will always fail with -EBUSY.
.. and it will not be freed, which indicates a serious bug in the
caller, so the caller should respond to the failure with a BUG_ON or
WARN_ON.
> .With emulex adapter it is possible to fail dealloc_pd with ENOMEM or
> EIO in cases where device f/w is not responding etc. this situation do
> not represent PD is actually in use.
This is a really bad idea. If the pd was freed and from the consumer's
perspective everything is sane then it should return success.
If the driver detects an internal failure, then it should move the
driver to a failed state (whatever that means, but at a minimum it
means the firmware state and driver state must be resync'd), and still
succeed the dealloc.
There is absolutely nothing the caller can do about a driver level
failure here, and it doesn't indicate a caller bug.
Returning ENOMEM for dealloc is what we'd call an insane API. You
can't have failable memory allocations in a dealloc path.
Jason
next prev parent reply other threads:[~2015-05-06 16:48 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-04 17:56 [PATCH v1 00/14] client NFS/RDMA patches for 4.2 Chuck Lever
2015-05-04 17:56 ` [PATCH v1 01/14] xprtrdma: Transport fault injection Chuck Lever
2015-05-05 13:49 ` Anna Schumaker
2015-05-05 13:53 ` Chuck Lever
2015-05-05 14:44 ` Anna Schumaker
2015-05-05 15:15 ` Chuck Lever
2015-05-05 15:16 ` Anna Schumaker
2015-05-05 15:10 ` Steve Wise
2015-05-04 17:57 ` [PATCH v1 02/14] xprtrdma: Warn when there are orphaned IB objects Chuck Lever
2015-05-06 11:37 ` Devesh Sharma
2015-05-06 13:24 ` Chuck Lever
2015-05-06 14:05 ` Sagi Grimberg
2015-05-06 14:22 ` Devesh Sharma
2015-05-06 16:48 ` Jason Gunthorpe [this message]
2015-05-07 7:53 ` Devesh Sharma
2015-05-04 17:57 ` [PATCH v1 03/14] xprtrdma: Replace rpcrdma_rep::rr_buffer with rr_rxprt Chuck Lever
2015-05-07 9:38 ` Sagi Grimberg
2015-05-07 13:25 ` Chuck Lever
2015-05-04 17:57 ` [PATCH v1 04/14] xprtrdma: Use ib_device pointer safely Chuck Lever
2015-05-07 10:00 ` Sagi Grimberg
2015-05-07 13:39 ` Chuck Lever
2015-05-07 13:56 ` Sagi Grimberg
2015-05-07 14:12 ` Chuck Lever
2015-05-07 15:11 ` Sagi Grimberg
2015-05-11 15:22 ` Chuck Lever
2015-05-11 18:26 ` Hefty, Sean
2015-05-11 18:57 ` Chuck Lever
2015-05-12 10:01 ` Sagi Grimberg
2015-05-04 17:57 ` [PATCH v1 05/14] xprtrdma: Introduce helpers for allocating MWs Chuck Lever
2015-05-07 10:16 ` Sagi Grimberg
2015-05-04 17:57 ` [PATCH v1 06/14] xprtrdma: Acquire FMRs in rpcrdma_fmr_register_external() Chuck Lever
2015-05-07 10:15 ` Sagi Grimberg
2015-05-04 17:57 ` [PATCH v1 07/14] xprtrdma: Introduce an FRMR recovery workqueue Chuck Lever
2015-05-07 10:37 ` Devesh Sharma
2015-05-04 17:57 ` [PATCH v1 08/14] xprtrdma: Acquire MRs in rpcrdma_register_external() Chuck Lever
2015-05-07 10:31 ` Sagi Grimberg
2015-05-08 15:24 ` Devesh Sharma
2015-05-08 15:40 ` Chuck Lever
2015-05-10 10:17 ` Sagi Grimberg
2015-05-04 17:58 ` [PATCH v1 09/14] xprtrdma: Remove unused LOCAL_INV recovery logic Chuck Lever
2015-05-07 10:35 ` Sagi Grimberg
2015-05-08 15:31 ` Devesh Sharma
2015-05-04 17:58 ` [PATCH v1 10/14] xprtrdma: Remove ->ro_reset Chuck Lever
2015-05-07 10:36 ` Sagi Grimberg
2015-05-08 15:33 ` Devesh Sharma
2015-05-04 17:58 ` [PATCH v1 11/14] xprtrdma: Remove rpcrdma_ia::ri_memreg_strategy Chuck Lever
2015-05-07 10:36 ` Sagi Grimberg
2015-05-08 15:34 ` Devesh Sharma
2015-05-04 17:58 ` [PATCH v1 12/14] xprtrdma: Split rb_lock Chuck Lever
2015-05-07 10:37 ` Sagi Grimberg
2015-05-04 17:58 ` [PATCH v1 13/14] xprtrdma: Stack relief in fmr_op_map() Chuck Lever
2015-05-07 10:50 ` Sagi Grimberg
2015-05-08 15:36 ` Devesh Sharma
2015-05-04 17:58 ` [PATCH v1 14/14] xprtrmda: Reduce per-transport MR allocation Chuck Lever
2015-05-07 11:00 ` Sagi Grimberg
2015-05-08 15:53 ` Devesh Sharma
2015-05-05 15:17 ` [PATCH v1 00/14] client NFS/RDMA patches for 4.2 Steve Wise
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=20150506164817.GC11331@obsidianresearch.com \
--to=jgunthorpe@obsidianresearch.com \
--cc=chuck.lever@oracle.com \
--cc=devesh.sharma@avagotech.com \
--cc=linux-nfs@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
/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;
as well as URLs for NNTP newsgroup(s).