* [PATCH 1/4] ext4: fold two if statements into one @ 2011-10-26 7:11 Yongqiang Yang 2011-10-26 7:11 ` [PATCH 2/4] ext4: move variable to its scope Yongqiang Yang ` (3 more replies) 0 siblings, 4 replies; 8+ messages in thread From: Yongqiang Yang @ 2011-10-26 7:11 UTC (permalink / raw) To: tytso; +Cc: linux-ext4, Yongqiang Yang Signed-off-by: Yongqiang Yang <xiaoqiangnk@gmail.com> --- fs/ext4/extents.c | 23 +++++++++++------------ 1 files changed, 11 insertions(+), 12 deletions(-) diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index f1ed90b..f887023 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -4082,18 +4082,17 @@ got_allocated_blocks: */ reserved_clusters = get_reserved_cluster_alloc(inode, map->m_lblk, allocated); - if (map->m_flags & EXT4_MAP_FROM_CLUSTER) { - if (reserved_clusters) { - /* - * We have clusters reserved for this range. - * But since we are not doing actual allocation - * and are simply using blocks from previously - * allocated cluster, we should release the - * reservation and not claim quota. - */ - ext4_da_update_reserve_space(inode, - reserved_clusters, 0); - } + if ((map->m_flags & EXT4_MAP_FROM_CLUSTER) && + reserved_clusters) { + /* + * We have clusters reserved for this range. + * But since we are not doing actual allocation + * and are simply using blocks from previously + * allocated cluster, we should release the + * reservation and not claim quota. + */ + ext4_da_update_reserve_space(inode, + reserved_clusters, 0); } else { BUG_ON(allocated_clusters < reserved_clusters); /* We will claim quota for all newly allocated blocks.*/ -- 1.7.5.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/4] ext4: move variable to its scope 2011-10-26 7:11 [PATCH 1/4] ext4: fold two if statements into one Yongqiang Yang @ 2011-10-26 7:11 ` Yongqiang Yang 2011-10-29 13:24 ` Ted Ts'o 2011-10-26 7:11 ` [PATCH 3/4] ext4: let AGGRESSIVE_TEST brace code only related to itself Yongqiang Yang ` (2 subsequent siblings) 3 siblings, 1 reply; 8+ messages in thread From: Yongqiang Yang @ 2011-10-26 7:11 UTC (permalink / raw) To: tytso; +Cc: linux-ext4, Yongqiang Yang Signed-off-by: Yongqiang Yang <xiaoqiangnk@gmail.com> --- fs/ext4/extents.c | 15 ++++++++------- 1 files changed, 8 insertions(+), 7 deletions(-) diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index f887023..8b09a47 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -117,10 +117,9 @@ static ext4_fsblk_t ext4_ext_find_goal(struct inode *inode, struct ext4_ext_path *path, ext4_lblk_t block) { - int depth; - if (path) { struct ext4_extent *ex; + int depth; depth = path->p_depth; /* @@ -247,7 +246,7 @@ static inline int ext4_ext_space_root_idx(struct inode *inode, int check) int ext4_ext_calc_metadata_amount(struct inode *inode, ext4_lblk_t lblock) { struct ext4_inode_info *ei = EXT4_I(inode); - int idxs, num = 0; + int idxs; idxs = ((inode->i_sb->s_blocksize - sizeof(struct ext4_extent_header)) / sizeof(struct ext4_extent_idx)); @@ -262,6 +261,7 @@ int ext4_ext_calc_metadata_amount(struct inode *inode, ext4_lblk_t lblock) */ if (ei->i_da_metadata_calc_len && ei->i_da_metadata_calc_last_lblock+1 == lblock) { + int num = 0; if ((ei->i_da_metadata_calc_len % idxs) == 0) num++; if ((ei->i_da_metadata_calc_len % (idxs*idxs)) == 0) @@ -324,8 +324,6 @@ static int ext4_valid_extent_entries(struct inode *inode, struct ext4_extent_header *eh, int depth) { - struct ext4_extent *ext; - struct ext4_extent_idx *ext_idx; unsigned short entries; if (eh->eh_entries == 0) return 1; @@ -334,6 +332,7 @@ static int ext4_valid_extent_entries(struct inode *inode, if (depth == 0) { /* leaf entries */ + struct ext4_extent *ext; ext = EXT_FIRST_EXTENT(eh); while (entries) { if (!ext4_valid_extent(inode, ext)) @@ -342,6 +341,7 @@ static int ext4_valid_extent_entries(struct inode *inode, entries--; } } else { + struct ext4_extent_idx *ext_idx; ext_idx = EXT_FIRST_INDEX(eh); while (entries) { if (!ext4_valid_extent_idx(inode, ext_idx)) @@ -3720,13 +3720,12 @@ int ext4_ext_map_blocks(handle_t *handle, struct inode *inode, ext4_fsblk_t newblock = 0; int free_on_err = 0, err = 0, depth, ret; unsigned int allocated = 0, offset = 0; - unsigned int allocated_clusters = 0, reserved_clusters = 0; + unsigned int allocated_clusters = 0; unsigned int punched_out = 0; unsigned int result = 0; struct ext4_allocation_request ar; ext4_io_end_t *io = EXT4_I(inode)->cur_aio_dio; ext4_lblk_t cluster_offset; - struct ext4_map_blocks punch_map; ext_debug("blocks %u/%u requested for inode %lu\n", map->m_lblk, map->m_len, inode->i_ino); @@ -3802,6 +3801,7 @@ int ext4_ext_map_blocks(handle_t *handle, struct inode *inode, /* if found extent covers block, simply return it */ if (in_range(map->m_lblk, ee_block, ee_len)) { + struct ext4_map_blocks punch_map; ext4_fsblk_t partial_cluster = 0; newblock = map->m_lblk - ee_block + ee_start; @@ -4077,6 +4077,7 @@ got_allocated_blocks: * block allocation which had been deferred till now. */ if (flags & EXT4_GET_BLOCKS_DELALLOC_RESERVE) { + unsigned int reserved_clusters = 0; /* * Check how many clusters we had reserved this allocted range. */ -- 1.7.5.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 2/4] ext4: move variable to its scope 2011-10-26 7:11 ` [PATCH 2/4] ext4: move variable to its scope Yongqiang Yang @ 2011-10-29 13:24 ` Ted Ts'o 0 siblings, 0 replies; 8+ messages in thread From: Ted Ts'o @ 2011-10-29 13:24 UTC (permalink / raw) To: Yongqiang Yang; +Cc: linux-ext4 On Wed, Oct 26, 2011 at 03:11:50PM +0800, Yongqiang Yang wrote: > Signed-off-by: Yongqiang Yang <xiaoqiangnk@gmail.com> Applied, thanks. - Ted ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 3/4] ext4: let AGGRESSIVE_TEST brace code only related to itself 2011-10-26 7:11 [PATCH 1/4] ext4: fold two if statements into one Yongqiang Yang 2011-10-26 7:11 ` [PATCH 2/4] ext4: move variable to its scope Yongqiang Yang @ 2011-10-26 7:11 ` Yongqiang Yang 2011-10-29 13:30 ` Ted Ts'o 2011-10-26 7:11 ` [PATCH 4/4] ext4: trace punch_hole correctly in ext4_ext_map_blocks Yongqiang Yang 2011-10-29 13:14 ` [PATCH 1/4] ext4: fold two if statements into one Ted Ts'o 3 siblings, 1 reply; 8+ messages in thread From: Yongqiang Yang @ 2011-10-26 7:11 UTC (permalink / raw) To: tytso; +Cc: linux-ext4, Yongqiang Yang Signed-off-by: Yongqiang Yang <xiaoqiangnk@gmail.com> --- fs/ext4/extents.c | 16 ++++++++-------- 1 files changed, 8 insertions(+), 8 deletions(-) diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 8b09a47..49b4e28 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -182,12 +182,12 @@ static inline int ext4_ext_space_block(struct inode *inode, int check) size = (inode->i_sb->s_blocksize - sizeof(struct ext4_extent_header)) / sizeof(struct ext4_extent); - if (!check) { #ifdef AGGRESSIVE_TEST + if (!check) { if (size > 6) size = 6; -#endif } +#endif return size; } @@ -197,12 +197,12 @@ static inline int ext4_ext_space_block_idx(struct inode *inode, int check) size = (inode->i_sb->s_blocksize - sizeof(struct ext4_extent_header)) / sizeof(struct ext4_extent_idx); - if (!check) { #ifdef AGGRESSIVE_TEST + if (!check) { if (size > 5) size = 5; -#endif } +#endif return size; } @@ -213,12 +213,12 @@ static inline int ext4_ext_space_root(struct inode *inode, int check) size = sizeof(EXT4_I(inode)->i_data); size -= sizeof(struct ext4_extent_header); size /= sizeof(struct ext4_extent); - if (!check) { #ifdef AGGRESSIVE_TEST + if (!check) { if (size > 3) size = 3; -#endif } +#endif return size; } @@ -229,12 +229,12 @@ static inline int ext4_ext_space_root_idx(struct inode *inode, int check) size = sizeof(EXT4_I(inode)->i_data); size -= sizeof(struct ext4_extent_header); size /= sizeof(struct ext4_extent_idx); - if (!check) { #ifdef AGGRESSIVE_TEST + if (!check) { if (size > 4) size = 4; -#endif } +#endif return size; } -- 1.7.5.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 3/4] ext4: let AGGRESSIVE_TEST brace code only related to itself 2011-10-26 7:11 ` [PATCH 3/4] ext4: let AGGRESSIVE_TEST brace code only related to itself Yongqiang Yang @ 2011-10-29 13:30 ` Ted Ts'o 0 siblings, 0 replies; 8+ messages in thread From: Ted Ts'o @ 2011-10-29 13:30 UTC (permalink / raw) To: Yongqiang Yang; +Cc: linux-ext4 On Wed, Oct 26, 2011 at 03:11:51PM +0800, Yongqiang Yang wrote: > Signed-off-by: Yongqiang Yang <xiaoqiangnk@gmail.com> Applied, with a minor tweak --- this *is* a place where folding two nested if statements is a good idea (and reduces ext4's lines of code count :-). - Ted commit 2a83a909eab183807ca3ccbb2559e22611131336 Author: Yongqiang Yang <xiaoqiangnk@gmail.com> Date: Sat Oct 29 09:29:11 2011 -0400 ext4: clean up AGGRESSIVE_TEST code Signed-off-by: Yongqiang Yang <xiaoqiangnk@gmail.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 73823d5..b66cef0 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -181,12 +181,10 @@ static inline int ext4_ext_space_block(struct inode *inode, int check) size = (inode->i_sb->s_blocksize - sizeof(struct ext4_extent_header)) / sizeof(struct ext4_extent); - if (!check) { #ifdef AGGRESSIVE_TEST - if (size > 6) - size = 6; + if (!check && size > 6) + size = 6; #endif - } return size; } @@ -196,12 +194,10 @@ static inline int ext4_ext_space_block_idx(struct inode *inode, int check) size = (inode->i_sb->s_blocksize - sizeof(struct ext4_extent_header)) / sizeof(struct ext4_extent_idx); - if (!check) { #ifdef AGGRESSIVE_TEST - if (size > 5) - size = 5; + if (!check && size > 5) + size = 5; #endif - } return size; } @@ -212,12 +208,10 @@ static inline int ext4_ext_space_root(struct inode *inode, int check) size = sizeof(EXT4_I(inode)->i_data); size -= sizeof(struct ext4_extent_header); size /= sizeof(struct ext4_extent); - if (!check) { #ifdef AGGRESSIVE_TEST - if (size > 3) - size = 3; + if (!check && size > 3) + size = 3; #endif - } return size; } @@ -228,12 +222,10 @@ static inline int ext4_ext_space_root_idx(struct inode *inode, int check) size = sizeof(EXT4_I(inode)->i_data); size -= sizeof(struct ext4_extent_header); size /= sizeof(struct ext4_extent_idx); - if (!check) { #ifdef AGGRESSIVE_TEST - if (size > 4) - size = 4; + if (!check && size > 4) + size = 4; #endif - } return size; } ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 4/4] ext4: trace punch_hole correctly in ext4_ext_map_blocks 2011-10-26 7:11 [PATCH 1/4] ext4: fold two if statements into one Yongqiang Yang 2011-10-26 7:11 ` [PATCH 2/4] ext4: move variable to its scope Yongqiang Yang 2011-10-26 7:11 ` [PATCH 3/4] ext4: let AGGRESSIVE_TEST brace code only related to itself Yongqiang Yang @ 2011-10-26 7:11 ` Yongqiang Yang 2011-10-29 13:51 ` Ted Ts'o 2011-10-29 13:14 ` [PATCH 1/4] ext4: fold two if statements into one Ted Ts'o 3 siblings, 1 reply; 8+ messages in thread From: Yongqiang Yang @ 2011-10-26 7:11 UTC (permalink / raw) To: tytso; +Cc: linux-ext4, Yongqiang Yang When ext4_ext_map_blocks() is called by punch_hole, trace should trace blocks punched out. Signed-off-by: Yongqiang Yang <xiaoqiangnk@gmail.com> --- fs/ext4/extents.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 49b4e28..58af095 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -4173,12 +4173,12 @@ out2: ext4_ext_drop_refs(path); kfree(path); } - trace_ext4_ext_map_blocks_exit(inode, map->m_lblk, - newblock, map->m_len, err ? err : allocated); ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 4/4] ext4: trace punch_hole correctly in ext4_ext_map_blocks 2011-10-26 7:11 ` [PATCH 4/4] ext4: trace punch_hole correctly in ext4_ext_map_blocks Yongqiang Yang @ 2011-10-29 13:51 ` Ted Ts'o 0 siblings, 0 replies; 8+ messages in thread From: Ted Ts'o @ 2011-10-29 13:51 UTC (permalink / raw) To: Yongqiang Yang; +Cc: linux-ext4 On Wed, Oct 26, 2011 at 03:11:52PM +0800, Yongqiang Yang wrote: > When ext4_ext_map_blocks() is called by punch_hole, trace should > trace blocks punched out. > > Signed-off-by: Yongqiang Yang <xiaoqiangnk@gmail.com> Thanks for catching this; applied. - Ted ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/4] ext4: fold two if statements into one 2011-10-26 7:11 [PATCH 1/4] ext4: fold two if statements into one Yongqiang Yang ` (2 preceding siblings ...) 2011-10-26 7:11 ` [PATCH 4/4] ext4: trace punch_hole correctly in ext4_ext_map_blocks Yongqiang Yang @ 2011-10-29 13:14 ` Ted Ts'o 3 siblings, 0 replies; 8+ messages in thread From: Ted Ts'o @ 2011-10-29 13:14 UTC (permalink / raw) To: Yongqiang Yang; +Cc: linux-ext4 On Wed, Oct 26, 2011 at 03:11:49PM +0800, Yongqiang Yang wrote: > Signed-off-by: Yongqiang Yang <xiaoqiangnk@gmail.com> > --- > fs/ext4/extents.c | 23 +++++++++++------------ > 1 files changed, 11 insertions(+), 12 deletions(-) Unfortunately this patch is incorrect since it changes when the else clause would get executed: if (a) { if (b) { ... } } else { ... } is not the same as: if (a && b) { ... } else { ... } Regards, - Ted ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2011-10-29 18:12 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-10-26 7:11 [PATCH 1/4] ext4: fold two if statements into one Yongqiang Yang 2011-10-26 7:11 ` [PATCH 2/4] ext4: move variable to its scope Yongqiang Yang 2011-10-29 13:24 ` Ted Ts'o 2011-10-26 7:11 ` [PATCH 3/4] ext4: let AGGRESSIVE_TEST brace code only related to itself Yongqiang Yang 2011-10-29 13:30 ` Ted Ts'o 2011-10-26 7:11 ` [PATCH 4/4] ext4: trace punch_hole correctly in ext4_ext_map_blocks Yongqiang Yang 2011-10-29 13:51 ` Ted Ts'o 2011-10-29 13:14 ` [PATCH 1/4] ext4: fold two if statements into one Ted Ts'o
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).