ocfs2: implement the VFS clone_range, copy_range, and dedupe_range features
authorDarrick J. Wong <darrick.wong@oracle.com>
Wed, 9 Nov 2016 22:13:11 +0000 (14:13 -0800)
committerDarrick J. Wong <darrick.wong@oracle.com>
Sat, 10 Dec 2016 20:39:45 +0000 (12:39 -0800)
commit29ac8e856cb3694e004037de595dec4ec53d42f2
tree006df64270ecc128a4b837215c7ef78bd259ff51
parent86e59436d406d833a5da4a94aefb3c3be6b26053
ocfs2: implement the VFS clone_range, copy_range, and dedupe_range features

Connect the new VFS clone_range, copy_range, and dedupe_range features
to the existing reflink capability of ocfs2.  Compared to the existing
ocfs2 reflink ioctl We have to do things a little differently to support
the VFS semantics (we can clone subranges of a file but we don't clone
xattrs), but the VFS ioctls are more broadly supported.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
v2: Convert inline data files to extents files before reflinking,
and fix i_blocks so that stat(2) output is correct.
v3: Make zero-length dedupe consistent with btrfs behavior.
v4: Use VFS double-inode lock routines and remove MAX_DEDUPE_LEN.
fs/ocfs2/file.c
fs/ocfs2/file.h
fs/ocfs2/refcounttree.c
fs/ocfs2/refcounttree.h