Re: [PATCH v12.1 01/15] btrfs: expand cow_file_range() to support in-band dedup and subpage-blocksize
At 07/12/2016 12:41 AM, David Sterba wrote: On Mon, Jul 11, 2016 at 11:05:29AM +0800, Qu Wenruo wrote: From: Wang XiaoguangExtract cow_file_range() new parameters for both in-band dedupe and subpage sector size patchset. This should make conflict of both patchset to minimal, and reduce the effort needed to rebase them. Great, thanks. I did a test merge, there are still conflicts but they seem to be resolvable more easily, picking the changes from the right patchset. I haven't tested it so there's more work, but the point was to get the conflict surface down. There's another candidate, btrfs_set_extent_delalloc as it adds a parameter, can you please send a similar patch for that? It seems that due to my fault, the mail didn't reach mail list. Resend the reply just in case. Of cource, I'll add a new patch for btrfs_set_extent_delalloc(). Thanks, Qu -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v12.1 01/15] btrfs: expand cow_file_range() to support in-band dedup and subpage-blocksize
On 2016/07/12 1:41, David Sterba wrote: > On Mon, Jul 11, 2016 at 11:05:29AM +0800, Qu Wenruo wrote: >> From: Wang Xiaoguang>> >> Extract cow_file_range() new parameters for both in-band dedupe and >> subpage sector size patchset. >> >> This should make conflict of both patchset to minimal, and reduce the >> effort needed to rebase them. > > Great, thanks. I did a test merge, there are still conflicts but they > seem to be resolvable more easily, picking the changes from the right > patchset. I haven't tested it so there's more work, but the point was to > get the conflict surface down. > > There's another candidate, btrfs_set_extent_delalloc as it adds a > parameter, can you please send a similar patch for that? He's going to attend LinuxCon Japan (Jul 13 - Jul 15). So I guess he will reply several days later (next week?). Thanks, Satoru > -- > To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v12.1 01/15] btrfs: expand cow_file_range() to support in-band dedup and subpage-blocksize
On Mon, Jul 11, 2016 at 11:05:29AM +0800, Qu Wenruo wrote: > From: Wang Xiaoguang> > Extract cow_file_range() new parameters for both in-band dedupe and > subpage sector size patchset. > > This should make conflict of both patchset to minimal, and reduce the > effort needed to rebase them. Great, thanks. I did a test merge, there are still conflicts but they seem to be resolvable more easily, picking the changes from the right patchset. I haven't tested it so there's more work, but the point was to get the conflict surface down. There's another candidate, btrfs_set_extent_delalloc as it adds a parameter, can you please send a similar patch for that? -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v12.1 01/15] btrfs: expand cow_file_range() to support in-band dedup and subpage-blocksize
From: Wang XiaoguangExtract cow_file_range() new parameters for both in-band dedupe and subpage sector size patchset. This should make conflict of both patchset to minimal, and reduce the effort needed to rebase them. Cc: Chandan Rajendra Cc: David Sterba Signed-off-by: Wang Xiaoguang Signed-off-by: Qu Wenruo --- fs/btrfs/dedupe.h | 24 fs/btrfs/inode.c | 28 +--- 2 files changed, 41 insertions(+), 11 deletions(-) create mode 100644 fs/btrfs/dedupe.h diff --git a/fs/btrfs/dedupe.h b/fs/btrfs/dedupe.h new file mode 100644 index 000..83ebfe2 --- /dev/null +++ b/fs/btrfs/dedupe.h @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2016 Fujitsu. All rights reserved. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License v2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 021110-1307, USA. + */ + +#ifndef __BTRFS_DEDUPE__ +#define __BTRFS_DEDUPE__ + +/* later in-band dedupe will expand this struct */ +struct btrfs_dedupe_hash; +#endif diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index bf4319d..ef2b27e 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -60,6 +60,7 @@ #include "hash.h" #include "props.h" #include "qgroup.h" +#include "dedupe.h" struct btrfs_iget_args { struct btrfs_key *location; @@ -105,8 +106,9 @@ static int btrfs_truncate(struct inode *inode); static int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered_extent); static noinline int cow_file_range(struct inode *inode, struct page *locked_page, - u64 start, u64 end, int *page_started, - unsigned long *nr_written, int unlock); + u64 start, u64 end, u64 delalloc_end, + int *page_started, unsigned long *nr_written, + int unlock, struct btrfs_dedupe_hash *hash); static struct extent_map *create_pinned_em(struct inode *inode, u64 start, u64 len, u64 orig_start, u64 block_start, u64 block_len, @@ -710,7 +712,10 @@ retry: async_extent->start, async_extent->start + async_extent->ram_size - 1, -_started, _written, 0); +async_extent->start + +async_extent->ram_size - 1, +_started, _written, 0, +NULL); /* JDM XXX */ @@ -923,9 +928,9 @@ static u64 get_extent_allocation_hint(struct inode *inode, u64 start, */ static noinline int cow_file_range(struct inode *inode, struct page *locked_page, - u64 start, u64 end, int *page_started, - unsigned long *nr_written, - int unlock) + u64 start, u64 end, u64 delalloc_end, + int *page_started, unsigned long *nr_written, + int unlock, struct btrfs_dedupe_hash *hash) { struct btrfs_root *root = BTRFS_I(inode)->root; u64 alloc_hint = 0; @@ -1416,7 +1421,8 @@ out_check: if (cow_start != (u64)-1) { ret = cow_file_range(inode, locked_page, cow_start, found_key.offset - 1, -page_started, nr_written, 1); +end, page_started, nr_written, 1, +NULL); if (ret) { if (!nolock && nocow) btrfs_end_write_no_snapshoting(root); @@ -1499,8 +1505,8 @@ out_check: } if (cow_start != (u64)-1) { - ret = cow_file_range(inode, locked_page, cow_start, end, -page_started, nr_written, 1); + ret =