mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Lei Yin <cybeyond@foxmail.com>
To: Trond Myklebust <trondmy@kernel.org>, Anna Schumaker <anna@kernel.org>
Cc: linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org,
	yinlei2@lenovo.com
Subject: Question about "Not Applicable" status for [PATCH v2] NFSv4.1/pNFS: fix LAYOUTCOMMIT retry loop on OLD_STATEID
Date: Mon, 27 Apr 2026 04:52:35 +0000	[thread overview]
Message-ID: <tencent_C198D1548F26ACCF529CC312888839694E05@qq.com> (raw)
In-Reply-To: <tencent_BF5118C8B480E6BFEF401CC2B287682FC905@qq.com>

Hi,

Sorry for the confusion in the previous submissions. Due to an editing
mistake, the first two versions of this patch were not sent as one
proper series.

My patch "[PATCH v2] NFSv4.1/pNFS: fix LAYOUTCOMMIT retry loop on
OLD_STATEID" was marked as Not Applicable. I would like to ask for
clarification on the reason.

This patch is intended to handle the case where LAYOUTCOMMIT gets
NFS4ERR_OLD_STATEID in nfs4_layoutcommit_done(). The change refreshes
data->args.stateid via nfs4_layout_refresh_old_stateid(), updates the
layout stateid in the inode layout header when appropriate, and restarts
the RPC only after the refresh succeeds.

The purpose is to avoid retrying LAYOUTCOMMIT indefinitely with the same
stale stateid after OLD_STATEID.

The issue was reproduced on NFSv4.2. The most reliable way I found to
reproduce it is:

1. Run a workload with relatively high concurrent I/O on the client.
2. Kill the client-side I/O process with kill -9 while those I/Os are still
  in flight.
3. In that situation, there is roughly a 50% chance that a subsequent
   LAYOUTCOMMIT is sent with an old stateid.
4. Since LAYOUTCOMMIT does not handle NFS4ERR_OLD_STATEID in this path, the
  same stale stateid may continue to be retried.
5. This can lead to an infinite retry loop, and the affected file then
   appears to become unresponsive.

Using kill without -9 makes this problem much harder to reproduce.
However, even without kill -9, the same issue can still occasionally be
observed under sufficient concurrency and stress testing.

So my understanding of the bug is:

- kill -9 makes the stale stateid window much easier to hit;
- ordinary concurrency/stress testing can still trigger it occasionally;
- because LAYOUTCOMMIT does not recover from OLD_STATEID here, the RPC
  can loop indefinitely with the stale stateid;
- once this happens, operations on the corresponding file may stop
  making progress.

Could you please let me know whether the Not Applicable status means:

1. an equivalent fix is already present in the target tree,
2. the patch was sent against the wrong tree or branch, or
3. there is some issue with the problem analysis or the proposed fix?

If needed, I can resend the patch against the appropriate branch or adjust
the description accordingly.

Thanks,
Lei Yin


  reply	other threads:[~2026-04-27  4:52 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-24  9:26 Lei Yin
2026-04-27  4:52 ` Lei Yin [this message]
2026-04-27 12:48   ` Question about "Not Applicable" status for " Chuck Lever

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=tencent_C198D1548F26ACCF529CC312888839694E05@qq.com \
    --to=cybeyond@foxmail.com \
    --cc=anna@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=trondmy@kernel.org \
    --cc=yinlei2@lenovo.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

all inboxes | Powered by JetHome®