Re: [PATCH v10 08/21] btrfs: ordered-extent: Add support for dedupe
From: Qu Wenruo <hidden>
Date: 2016-06-02 01:08:31
At 06/02/2016 06:06 AM, Mark Fasheh wrote:
On Fri, Apr 01, 2016 at 02:34:59PM +0800, Qu Wenruo wrote:quoted
From: Wang Xiaoguang <redacted> Add ordered-extent support for dedupe. Note, current ordered-extent support only supports non-compressed source extent. Support for compressed source extent will be added later. Signed-off-by: Qu Wenruo <redacted> Signed-off-by: Wang Xiaoguang <redacted> --- fs/btrfs/ordered-data.c | 44 ++++++++++++++++++++++++++++++++++++++++---- fs/btrfs/ordered-data.h | 13 +++++++++++++ 2 files changed, 53 insertions(+), 4 deletions(-)diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c index 0de7da5..ef24ad1 100644 --- a/fs/btrfs/ordered-data.c +++ b/fs/btrfs/ordered-data.c@@ -26,6 +26,7 @@ #include "extent_io.h" #include "disk-io.h" #include "compression.h" +#include "dedupe.h" static struct kmem_cache *btrfs_ordered_extent_cache;@@ -184,7 +185,8 @@ static inline struct rb_node *tree_search(struct btrfs_ordered_inode_tree *tree, */ static int __btrfs_add_ordered_extent(struct inode *inode, u64 file_offset, u64 start, u64 len, u64 disk_len, - int type, int dio, int compress_type) + int type, int dio, int compress_type, + struct btrfs_dedupe_hash *hash) { struct btrfs_root *root = BTRFS_I(inode)->root; struct btrfs_ordered_inode_tree *tree;@@ -204,6 +206,31 @@ static int __btrfs_add_ordered_extent(struct inode *inode, u64 file_offset, entry->inode = igrab(inode); entry->compress_type = compress_type; entry->truncated_len = (u64)-1; + entry->hash = NULL; + /* + * Hash hit must go through dedupe routine at all cost, even dedupe + * is disabled. As its delayed ref is already increased. + */Initially, I had a hard time understanding this comment but I'm pretty sure I know what you mean. /* * A hash hit means we have already incremented the extents delayed ref. * We must handle this even if another process raced to turn off dedupe * otherwise we might leak a reference. */ might be better. Hope that helps. --Mark
Same meaning, much better grammar. Thanks, Qu
-- Mark Fasheh