Re: [PATCH v12.1 01/15] btrfs: expand cow_file_range() to support in-band dedup and subpage-blocksize

2016-07-19 Thread Qu Wenruo



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 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?



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

2016-07-11 Thread Satoru Takeuchi
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

2016-07-11 Thread David Sterba
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

2016-07-10 Thread Qu Wenruo
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.

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 =