Re: [PATCH] btrfs-progs: Cleanup for using BTRFS_SETGET_STACK instead of raw convert
That's a good cleanup, please send the kernel version as well. david -- 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] btrfs-progs: Cleanup for using BTRFS_SETGET_STACK instead of raw convert
On Wed, Jun 26, 2013 at 01:27:08PM +0800, Qu Wenruo wrote: --- a/btrfs-convert.c +++ b/btrfs-convert.c @@ -1802,7 +1802,7 @@ static int prepare_system_chunk_sb(struct btrfs_super_block *super) btrfs_set_stack_chunk_num_stripes(chunk, 1); btrfs_set_stack_chunk_sub_stripes(chunk, 0); chunk-stripe.devid = super-dev_item.devid; This should use the btrfs_set_* accessors too, right? - chunk-stripe.offset = cpu_to_le64(0); + btrfs_set_stack_stripe_offset(chunk-stripe, 0); memcpy(chunk-stripe.dev_uuid, super-dev_item.uuid, BTRFS_UUID_SIZE); btrfs_set_super_sys_array_size(super, sizeof(*key) + sizeof(*chunk)); return 0; --- a/btrfs-image.c +++ b/btrfs-image.c @@ -1332,7 +1332,7 @@ static void update_super_old(u8 *buffer) btrfs_set_stack_chunk_num_stripes(chunk, 1); btrfs_set_stack_chunk_sub_stripes(chunk, 0); chunk-stripe.devid = super-dev_item.devid; same here, and there's one more in update_super(). - chunk-stripe.offset = cpu_to_le64(0); + btrfs_set_stack_stripe_offset(chunk-stripe, 0); memcpy(chunk-stripe.dev_uuid, super-dev_item.uuid, BTRFS_UUID_SIZE); btrfs_set_super_sys_array_size(super, sizeof(*key) + sizeof(*chunk)); csum_block(buffer, 4096); -- 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] btrfs-progs: Cleanup for using BTRFS_SETGET_STACK instead of raw convert
于 2013年07月03日 01:36, David Sterba 写道: On Wed, Jun 26, 2013 at 01:27:08PM +0800, Qu Wenruo wrote: --- a/btrfs-convert.c +++ b/btrfs-convert.c @@ -1802,7 +1802,7 @@ static int prepare_system_chunk_sb(struct btrfs_super_block *super) btrfs_set_stack_chunk_num_stripes(chunk, 1); btrfs_set_stack_chunk_sub_stripes(chunk, 0); chunk-stripe.devid = super-dev_item.devid; This should use the btrfs_set_* accessors too, right? I'm afraid not. :( chunk-stripe.devid is __le64 and so the same is dev_item.devid. btrfs_set_* is calling cpu_to_le64, but neither of them is u64. If using btrfs_set_*, we need to first convert le64 to cpu and then convert back. So here I didn't use the btrfs_set_* functions. - chunk-stripe.offset = cpu_to_le64(0); + btrfs_set_stack_stripe_offset(chunk-stripe, 0); memcpy(chunk-stripe.dev_uuid, super-dev_item.uuid, BTRFS_UUID_SIZE); btrfs_set_super_sys_array_size(super, sizeof(*key) + sizeof(*chunk)); return 0; --- a/btrfs-image.c +++ b/btrfs-image.c @@ -1332,7 +1332,7 @@ static void update_super_old(u8 *buffer) btrfs_set_stack_chunk_num_stripes(chunk, 1); btrfs_set_stack_chunk_sub_stripes(chunk, 0); chunk-stripe.devid = super-dev_item.devid; same here, and there's one more in update_super(). Same reason above. - chunk-stripe.offset = cpu_to_le64(0); + btrfs_set_stack_stripe_offset(chunk-stripe, 0); memcpy(chunk-stripe.dev_uuid, super-dev_item.uuid, BTRFS_UUID_SIZE); btrfs_set_super_sys_array_size(super, sizeof(*key) + sizeof(*chunk)); csum_block(buffer, 4096); -- - Qu Wenruo Development Dept.I Nanjing Fujitsu Nanda Software Tech. Co., Ltd.(FNST) No. 6 Wenzhu Road, Nanjing, 210012, China TEL: +86+25-86630566-8526 COINS: 7998-8526 FAX: +86+25-83317685 MAIL: quwen...@cn.fujitsu.com - -- 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] btrfs-progs: Cleanup for using BTRFS_SETGET_STACK instead of raw convert
于 2013年07月03日 01:26, David Sterba 写道: That's a good cleanup, please send the kernel version as well. david I'll send the kernel patch asap. -- - Qu Wenruo Development Dept.I Nanjing Fujitsu Nanda Software Tech. Co., Ltd.(FNST) No. 6 Wenzhu Road, Nanjing, 210012, China TEL: +86+25-86630566-8526 COINS: 7998-8526 FAX: +86+25-83317685 MAIL: quwen...@cn.fujitsu.com - -- 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] btrfs-progs: Cleanup for using BTRFS_SETGET_STACK instead of raw convert
Some codes still use the cpu_to_lexx instead of the BTRFS_SETGET_STACK_FUNCS declared in ctree.h. Also added some BTRFS_SETGET_STACK_FUNCS for btrfs_header and btrfs_super. Signed-off-by: Qu Wenruo quwen...@cn.fujitsu.com --- btrfs-convert.c| 2 +- btrfs-find-root.c | 6 +++--- btrfs-image.c | 2 +- btrfs-show-super.c | 2 +- ctree.h| 7 +++ disk-io.c | 6 +++--- utils.c| 4 ++-- volumes.c | 2 +- 8 files changed, 19 insertions(+), 12 deletions(-) diff --git a/btrfs-convert.c b/btrfs-convert.c index 399856f..cb96790 100644 --- a/btrfs-convert.c +++ b/btrfs-convert.c @@ -1802,7 +1802,7 @@ static int prepare_system_chunk_sb(struct btrfs_super_block *super) btrfs_set_stack_chunk_num_stripes(chunk, 1); btrfs_set_stack_chunk_sub_stripes(chunk, 0); chunk-stripe.devid = super-dev_item.devid; - chunk-stripe.offset = cpu_to_le64(0); + btrfs_set_stack_stripe_offset(chunk-stripe, 0); memcpy(chunk-stripe.dev_uuid, super-dev_item.uuid, BTRFS_UUID_SIZE); btrfs_set_super_sys_array_size(super, sizeof(*key) + sizeof(*chunk)); return 0; diff --git a/btrfs-find-root.c b/btrfs-find-root.c index 810d835..d3f4ccc 100644 --- a/btrfs-find-root.c +++ b/btrfs-find-root.c @@ -247,10 +247,10 @@ static int search_iobuf(struct btrfs_root *root, void *iobuf, u64 h_byte, h_level, h_gen, h_owner; // printf(searching %Lu\n, offset + block_off); - h_byte = le64_to_cpu(header-bytenr); - h_owner = le64_to_cpu(header-owner); + h_byte = btrfs_stack_header_bytenr(header); + h_owner = btrfs_stack_header_owner(header); h_level = header-level; - h_gen = le64_to_cpu(header-generation); + h_gen = btrfs_stack_header_generation(header); if (h_owner != objectid) goto next; diff --git a/btrfs-image.c b/btrfs-image.c index 22239fe..599a35f 100644 --- a/btrfs-image.c +++ b/btrfs-image.c @@ -1332,7 +1332,7 @@ static void update_super_old(u8 *buffer) btrfs_set_stack_chunk_num_stripes(chunk, 1); btrfs_set_stack_chunk_sub_stripes(chunk, 0); chunk-stripe.devid = super-dev_item.devid; - chunk-stripe.offset = cpu_to_le64(0); + btrfs_set_stack_stripe_offset(chunk-stripe, 0); memcpy(chunk-stripe.dev_uuid, super-dev_item.uuid, BTRFS_UUID_SIZE); btrfs_set_super_sys_array_size(super, sizeof(*key) + sizeof(*chunk)); csum_block(buffer, 4096); diff --git a/btrfs-show-super.c b/btrfs-show-super.c index f587f10..3e2567e 100644 --- a/btrfs-show-super.c +++ b/btrfs-show-super.c @@ -186,7 +186,7 @@ static void dump_superblock(struct btrfs_super_block *sb) s = (char *) sb-magic; for (i = 0; i 8; i++) putchar(isprint(s[i]) ? s[i] : '.'); - if (sb-magic == cpu_to_le64(BTRFS_MAGIC)) + if (btrfs_super_magic(sb) == BTRFS_MAGIC) printf( [match]\n); else printf( [DON'T MATCH]\n); diff --git a/ctree.h b/ctree.h index 3fe14b0..4c2f430 100644 --- a/ctree.h +++ b/ctree.h @@ -1712,6 +1712,12 @@ BTRFS_SETGET_HEADER_FUNCS(header_owner, struct btrfs_header, owner, 64); BTRFS_SETGET_HEADER_FUNCS(header_nritems, struct btrfs_header, nritems, 32); BTRFS_SETGET_HEADER_FUNCS(header_flags, struct btrfs_header, flags, 64); BTRFS_SETGET_HEADER_FUNCS(header_level, struct btrfs_header, level, 8); +BTRFS_SETGET_STACK_FUNCS(stack_header_bytenr, struct btrfs_header, bytenr, 64); +BTRFS_SETGET_STACK_FUNCS(stack_header_nritems, struct btrfs_header, nritems, +32); +BTRFS_SETGET_STACK_FUNCS(stack_header_owner, struct btrfs_header, owner, 64); +BTRFS_SETGET_STACK_FUNCS(stack_header_generation, struct btrfs_header, +generation, 64); static inline int btrfs_header_flag(struct extent_buffer *eb, u64 flag) { @@ -1918,6 +1924,7 @@ BTRFS_SETGET_STACK_FUNCS(super_csum_type, struct btrfs_super_block, csum_type, 16); BTRFS_SETGET_STACK_FUNCS(super_cache_generation, struct btrfs_super_block, cache_generation, 64); +BTRFS_SETGET_STACK_FUNCS(super_magic, struct btrfs_super_block, magic, 64); static inline int btrfs_super_csum_size(struct btrfs_super_block *s) { diff --git a/disk-io.c b/disk-io.c index 9ffe6e4..4eef029 100644 --- a/disk-io.c +++ b/disk-io.c @@ -1104,7 +1104,7 @@ int btrfs_read_dev_super(int fd, struct btrfs_super_block *sb, u64 sb_bytenr) return -1; if (btrfs_super_bytenr(buf) != sb_bytenr || - buf.magic != cpu_to_le64(BTRFS_MAGIC)) + btrfs_super_magic(buf) != BTRFS_MAGIC) return -1; memcpy(sb, buf, sizeof(*sb)); @@ -1120,9 +1120,9 @@ int btrfs_read_dev_super(int fd, struct btrfs_super_block *sb, u64 sb_bytenr) if