pnfs: avoid using stale stateids after layoutreturn
authorChristoph Hellwig <hch@lst.de>
Thu, 21 Aug 2014 16:09:22 +0000 (11:09 -0500)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Wed, 10 Sep 2014 19:47:01 +0000 (12:47 -0700)
commit47abadefad213bb7de9592d2e09a8bd282ddc3de
tree654dab2b331441f3a823a33ad1912578459f6cd9
parentdefb8460881cbf0a5890bc7a63b42c0cfbed721d
pnfs: avoid using stale stateids after layoutreturn

After we issued a layoutreturn operations the may free the layout stateid
and will thus cause bad stateid error when the client uses it again.

We currently try to avoid this case by chosing the open stateid if not
lsegs are present for this inode.  But various places can hold refererence
on lsegs and thus cause the list not to be empty shortly after a layout
return.  Add an explicit flag to mark the current layout stateid invalid
and force usage of the openstateid after we did a full file layoutreturn.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
fs/nfs/pnfs.c
fs/nfs/pnfs.h