summaryrefslogtreecommitdiffstats
path: root/fs/nfs/nfs4filelayoutdev.c
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2013-02-12 09:48:42 -0500
committerTrond Myklebust <Trond.Myklebust@netapp.com>2013-02-14 13:22:50 -0500
commitfd9a8d7160937f94aad36ac80d7255b4988740ac (patch)
treee437737b8f918134b2ab26bfb74883b0fc47092d /fs/nfs/nfs4filelayoutdev.c
parentc8da19b9866ea84e9ad1c369393ea95d54ee7845 (diff)
downloadlinux-fd9a8d7160937f94aad36ac80d7255b4988740ac.tar.bz2
NFSv4.1: Fix bulk recall and destroy of layouts
The current code in pnfs_destroy_all_layouts() assumes that removing the layout from the server->layouts list is sufficient to make it invisible to other processes. This ignores the fact that most users access the layout through the nfs_inode->layout... There is further breakage due to lack of reference counting of the layouts, meaning that the whole thing Oopses at the drop of a hat. The code in initiate_bulk_draining() is almost correct, and can be used as a model for pnfs_destroy_all_layouts(), so move that code to pnfs.c, and refactor the code to allow us to choose between a single filesystem bulk recall, and a recall of all layouts. Also note that initiate_bulk_draining() currently calls iput() while holding locks. Fix that too. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com> Cc: stable@vger.kernel.org
Diffstat (limited to 'fs/nfs/nfs4filelayoutdev.c')
0 files changed, 0 insertions, 0 deletions