linux-nfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Lookup revalidation for OPEN_CLAIM_FH
@ 2020-01-16 13:51 Benjamin Coddington
  2020-01-16 14:35 ` Trond Myklebust
  0 siblings, 1 reply; 5+ messages in thread
From: Benjamin Coddington @ 2020-01-16 13:51 UTC (permalink / raw)
  To: Trond Myklebust; +Cc: linux-nfs

Hi Trond,

I'd like to fix up lookup revalidation for v4.1+ when the client is using
OPEN_CLAIM_FH.  The fixes a while back for Stan Hu's case do not seem to
improve things for v4.1, and actually make the behavior a bit worse since we
no longer pass through nfs_lookup_verify_inode(), which would catch the
cases where nlink == 0.

Would you accept work to _always_ revalidate the dentry's parent for
CLAIM_FH?  Alternatively, it seems that CLAIM_NULL would be preferable for
this case, though I don't know how the client would know when to decide
between them.

Here's a simple reproducer for convenience, I think we've already all agreed
that the behavior we want is for the second open by `cat` to reflect the
results of the move on the server, or at least eventually later opens would
revalidate the dentry:

#!/bin/bash

set -o xtrace
vers=4.1

exportfs -ua
exportfs -o rw,sec=sys,no_root_squash *:/exports

mkdir /mnt/localhost || true

rm -f /exports/file{1,2}

echo this is file 1 > /exports/file1
echo this is file 2 > /exports/file2

mount -t nfs -ov$vers,sec=sys localhost:/exports /mnt/localhost

tail -f /mnt/localhost/file1 &
sleep 1

# this is file 1
cat /mnt/localhost/file1

# overwrite the file on the server:
mv -f /exports/file2 /exports/file1

# this is file 2
cat /mnt/localhost/file1

killall tail
# this is file 2
cat /mnt/localhost/file1
umount /mnt/localhost


Switching the $vers variable between v4.0 and v4.1 in this script shows the
difference in behavior.

Thanks for any advice,
Ben


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2020-01-16 16:21 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-16 13:51 Lookup revalidation for OPEN_CLAIM_FH Benjamin Coddington
2020-01-16 14:35 ` Trond Myklebust
2020-01-16 15:13   ` Benjamin Coddington
2020-01-16 15:38     ` Trond Myklebust
2020-01-16 16:21       ` Benjamin Coddington

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).