linux-nfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dai Ngo <dai.ngo@oracle.com>
To: Bruce Fields <bfields@fieldses.org>
Cc: linux-nfs@vger.kernel.org
Subject: Re: [PATCH 0/1] NFSv4.2: Fix NFS4ERR_STALE with inter server copy
Date: Thu, 1 Oct 2020 14:48:07 -0700	[thread overview]
Message-ID: <9a60ba5b-aefe-d75b-683a-fa0f4db6ae24@oracle.com> (raw)
In-Reply-To: <20201001205119.GI1496@fieldses.org>

Thanks Bruce for your comments,

On 10/1/20 1:51 PM, Bruce Fields wrote:
> On Tue, Sep 29, 2020 at 08:18:54PM -0700, Dai Ngo wrote:
>> Have you had chance to review this patch and if it's ok would it be
>> possible to include it in the 5.10 pull?
> I don't think the op table approach would be that difficult, I'd really
> rather see that.

I think if we do the op table approach then we should also try to solve
all other dependencies between various NFS client and server modules
and not just the SSC part. It might be a little involved so I'd like
to take some time to research before committing to the longer solution
which I plan to do. In the mean time, this small patch allows some of
us to use the inter server copy until the long term solution is available.

> Is this causing someone an immediate practical problem?

This causes inter server copy to fail with any kernel build with NFS_FS=m
which I think is a common config. And it also causes compile errors if
NFSD=y, NFS_FS=y and NFS_v4=m.

-Dai

>
> --b.
>
>> Thanks,
>>
>> -Dai
>>
>> On 9/23/20 4:06 PM, Dai Ngo wrote:
>>> This patch provides a temporarily relief for inter copy to work with
>>> some common configs.  For long term solution, I think Trond's suggestion
>>> of using fs/nfs/nfs_common to store an op table that server can use to
>>> access the client code is the way to go.
>>>
>>>   fs/nfsd/Kconfig | 2 +-
>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>>
>>> Below are the results of my testing of upstream mainline without and with the fix.
>>>
>>> Upstream version used for testing:  5.9-rc5
>>>
>>> 1. Upstream mainline (existing code: NFS_FS=y)
>>>
>>>
>>> |----------------------------------------------------------------------------------------|
>>> |  NFSD  |  NFS_FS  |  NFS_V4  |               RESULTS                                   |
>>> |----------------------------------------------------------------------------------------|
>>> |   y    |    y     |    m     | Build errors: nfs42_ssc_open/close                      |
>>> |----------------------------------------------------------------------------------------|
>>> |   y    |    m     |    m     | Build OK, inter server copy failed with NFS4ERR_STALE   |
>>> |        |          |          | See NOTE1.                                              |
>>> |----------------------------------------------------------------------------------------|
>>> |   y    |    m     |   y (m)  | Build OK, inter server copy failed with NFS4ERR_STALE   |
>>> |        |          |          | See NOTE2.                                              |
>>> |----------------------------------------------------------------------------------------|
>>> |   y    |    y     |    y     | Build OK, inter server copy OK                          |
>>> |----------------------------------------------------------------------------------------|
>>>
>>>
>>> |----------------------------------------------------------------------------------------|
>>> |  NFSD  |  NFS_FS  |  NFS_V4  |               RESULTS                                   |
>>> |----------------------------------------------------------------------------------------|
>>> |   m    |    y     |    m     | Build OK, inter server copy OK                          |
>>> |----------------------------------------------------------------------------------------|
>>> |   m    |    m     |    m     | Build OK, inter server copy failed with NFS4ERR_STALE   |
>>> |----------------------------------------------------------------------------------------|
>>> |   m    |    m     |   y (m)  | Build OK, inter server copy failed with NFS4ERR_STALE   |
>>> |----------------------------------------------------------------------------------------|
>>> |   m    |    y     |    y     | Build OK, inter server copy OK                          |
>>> |----------------------------------------------------------------------------------------|
>>>
>>> 2. Upstream mainline (with the fix:  !(NFSD=y && (NFS_FS=m || NFS_V4=m))
>>>
>>>
>>> |----------------------------------------------------------------------------------------|
>>> |  NFSD  |  NFS_FS  |  NFS_V4  |               RESULTS                                   |
>>> |----------------------------------------------------------------------------------------|
>>> |   m    |    y     |    m     | Build OK, inter server copy OK                          |
>>> |----------------------------------------------------------------------------------------|
>>> |   m    |    m     |    m     | Build OK, inter server copy OK                          |
>>> |----------------------------------------------------------------------------------------|
>>> |   m    |    m     |   y (m)  | Build OK, inter server copy OK                          |
>>> |----------------------------------------------------------------------------------------|
>>> |   m    |    y     |    y     | Build OK, inter server copy OK                          |
>>> |----------------------------------------------------------------------------------------|
>>>
>>>
>>> |----------------------------------------------------------------------------------------|
>>> |  NFSD  |  NFS_FS  |  NFS_V4  |               RESULTS                                   |
>>> |----------------------------------------------------------------------------------------|
>>> |   y    |    y     |    m     | Build OK, inter server copy failed with NFS4ERR_STALE   |
>>> |----------------------------------------------------------------------------------------|
>>> |   y    |    m     |    m     | Build OK, inter server copy failed with NFS4ERR_STALE   |
>>> |----------------------------------------------------------------------------------------|
>>> |   y    |    m     |   y (m)  | Build OK, inter server copy failed with NFS4ERR_STALE   |
>>> |----------------------------------------------------------------------------------------|
>>> |   y    |    y     |    y     | Build OK, inter server copy OK                          |
>>> |----------------------------------------------------------------------------------------|
>>>
>>> NOTE1:
>>> BUG:  When inter server copy fails with NFS4ERR_STALE, it left the file
>>> created with size of 0!
>>>
>>> NOTE2:
>>> When NFS_V4=y and NFS_FS=m, the build process automatically builds with NFS_V4=m
>>> and ignores the setting NFS_V4=y in the config file.
>>>
>>> This probably due to NFS_V4 in fs/nfs/Kconfig is configured to depend on NFS_FS.
>>>

  reply	other threads:[~2020-10-01 21:50 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-23 23:06 [PATCH 0/1] NFSv4.2: Fix NFS4ERR_STALE with inter server copy Dai Ngo
2020-09-23 23:06 ` [PATCH 1/1] NFSv4.2: Fix NFS4ERR_STALE error when doing " Dai Ngo
2020-09-23 23:29 ` [PATCH 0/1] NFSv4.2: Fix NFS4ERR_STALE with " Chuck Lever
2020-09-24  1:57   ` Dai Ngo
2020-09-30  3:18 ` Dai Ngo
2020-10-01 20:51   ` Bruce Fields
2020-10-01 21:48     ` Dai Ngo [this message]
2020-10-01 21:52       ` Bruce Fields
2020-10-01 22:15         ` Dai Ngo
     [not found]         ` <87879d23-986f-e123-1597-842a2913e864@oracle.com>
2020-10-06 15:20           ` Bruce Fields

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=9a60ba5b-aefe-d75b-683a-fa0f4db6ae24@oracle.com \
    --to=dai.ngo@oracle.com \
    --cc=bfields@fieldses.org \
    --cc=linux-nfs@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).