summaryrefslogtreecommitdiffstats
path: root/fs/nfs/blocklayout/Makefile
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2014-09-10 08:23:34 -0700
committerTrond Myklebust <trond.myklebust@primarydata.com>2014-09-10 12:47:03 -0700
commit8067253c8cc531b6f367b9f5942bdc6168385701 (patch)
tree78d7663906883132df08a2a1aecf6e385fd766d1 /fs/nfs/blocklayout/Makefile
parent8c792ea940499153732adea2ea4ca37f6999778f (diff)
downloadlinux-stable-8067253c8cc531b6f367b9f5942bdc6168385701.tar.gz
linux-stable-8067253c8cc531b6f367b9f5942bdc6168385701.tar.bz2
linux-stable-8067253c8cc531b6f367b9f5942bdc6168385701.zip
pnfs/blocklayout: rewrite extent tracking
Currently the block layout driver tracks extents in three separate data structures: - the two list of pnfs_block_extent structures returned by the server - the list of sectors that were in invalid state but have been written to - a list of pnfs_block_short_extent structures for LAYOUTCOMMIT All of these share the property that they are not only highly inefficient data structures, but also that operations on them are even more inefficient than nessecary. In addition there are various implementation defects like: - using an int to track sectors, causing corruption for large offsets - incorrect normalization of page or block granularity ranges - insufficient error handling - incorrect synchronization as extents can be modified while they are in use This patch replace all three data with a single unified rbtree structure tracking all extents, as well as their in-memory state, although we still need to instance for read-only and read-write extent due to the arcane client side COW feature in the block layouts spec. To fix the problem of extent possibly being modified while in use we make sure to return a copy of the extent for use in the write path - the extent can only be invalidated by a layout recall or return which has to wait until the I/O operations finished due to refcounts on the layout segment. The new extent tree work similar to the schemes used by block based filesystems like XFS or ext4. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Diffstat (limited to 'fs/nfs/blocklayout/Makefile')
-rw-r--r--fs/nfs/blocklayout/Makefile3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/nfs/blocklayout/Makefile b/fs/nfs/blocklayout/Makefile
index d5815505c020..3fa5ec780a8e 100644
--- a/fs/nfs/blocklayout/Makefile
+++ b/fs/nfs/blocklayout/Makefile
@@ -2,4 +2,5 @@
# Makefile for the pNFS block layout driver kernel module
#
obj-$(CONFIG_PNFS_BLOCK) += blocklayoutdriver.o
-blocklayoutdriver-objs := blocklayout.o extents.o blocklayoutdev.o blocklayoutdm.o
+blocklayoutdriver-objs := blocklayout.o blocklayoutdev.o blocklayoutdm.o \
+ extent_tree.o