NFSv4: fix delegated locking
commit9c84e4813a02a219d61f61967d7058f2d8037d88
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Sun, 11 Apr 2010 20:48:44 +0000 (11 16:48 -0400)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 26 Apr 2010 14:47:53 +0000 (26 07:47 -0700)
tree2d9d9aa2a465e30cda0fa984117bbe60004de705
parenta354226edbcd28cd1a55d0abbbbc9a703ba26f1c
NFSv4: fix delegated locking

commit 0df5dd4aae211edeeeb84f7f84f6d093406d7c22 upstream.

Arnaud Giersch reports that NFSv4 locking is broken when we hold a
delegation since commit 8e469ebd6dc32cbaf620e134d79f740bf0ebab79 (NFSv4:
Don't allow posix locking against servers that don't support it).

According to Arnaud, the lock succeeds the first time he opens the file
(since we cannot do a delegated open) but then fails after we start using
delegated opens.

The following patch fixes it by ensuring that locking behaviour is
governed by a per-filesystem capability flag that is initially set, but
gets cleared if the server ever returns an OPEN without the
NFS4_OPEN_RESULT_LOCKTYPE_POSIX flag being set.

Reported-by: Arnaud Giersch <arnaud.giersch@iut-bm.univ-fcomte.fr>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
fs/nfs/client.c
fs/nfs/nfs4proc.c
include/linux/nfs_fs_sb.h