summaryrefslogtreecommitdiffstats
path: root/fs/nfs/pnfs.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2014-09-10 08:23:29 -0700
committerTrond Myklebust <trond.myklebust@primarydata.com>2014-09-10 12:47:02 -0700
commit7c5d187581f57657de79e795602d9f1a0254c88c (patch)
tree9e316ee5e0f348dc56244461255356eb6f8d2933 /fs/nfs/pnfs.c
parent3a3908c8b09d5ec19d543836d4f38d240ae27fe8 (diff)
downloadlinux-7c5d187581f57657de79e795602d9f1a0254c88c.tar.bz2
pnfs: force a layout commit when encountering busy segments during recall
Expedite layout recall processing by forcing a layout commit when we see busy segments. Without it the layout recall might have to wait until the VM decided to start writeback for the file, which can introduce long delays. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Diffstat (limited to 'fs/nfs/pnfs.c')
-rw-r--r--fs/nfs/pnfs.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
index 8827ab130ed3..ce5d1ea695d1 100644
--- a/fs/nfs/pnfs.c
+++ b/fs/nfs/pnfs.c
@@ -594,6 +594,9 @@ pnfs_layout_free_bulk_destroy_list(struct list_head *layout_list,
dprintk("%s freeing layout for inode %lu\n", __func__,
lo->plh_inode->i_ino);
inode = lo->plh_inode;
+
+ pnfs_layoutcommit_inode(inode, false);
+
spin_lock(&inode->i_lock);
list_del_init(&lo->plh_bulk_destroy);
lo->plh_block_lgets++; /* permanently block new LAYOUTGETs */