Patchwork [ext4] extent tree es_len can be zero?

login
register
mail settings
Submitter Jon ERNST
Date April 30, 2013, 4:59 a.m.
Message ID <20130430045920.296280@gmx.com>
Download mbox | patch
Permalink /patch/240550/
State New
Headers show

Comments

Jon ERNST - April 30, 2013, 4:59 a.m.
Hi ,list,

extent tree es_len can be zero?
if we call ext4_es_end when es_len is zero, it will have problem.


the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Zheng Liu - May 2, 2013, 2:55 a.m.
On Tue, Apr 30, 2013 at 12:59:19AM -0400, Jon ERNST wrote:
> Hi ,list,
> 
> extent tree es_len can be zero?
> if we call ext4_es_end when es_len is zero, it will have problem.
> 
> 
> diff --git a/fs/ext4/extents_status.c b/fs/ext4/extents_status.c
> index 95796a1..49a8da2 100644
> --- a/fs/ext4/extents_status.c
> +++ b/fs/ext4/extents_status.c
> @@ -108,7 +108,7 @@
>   *     tree are ordered by logical block no.
>   *
>   *   --        operations on a extent status tree
> - *     There are three important operations on a delayed extent tree: find
> + *     There are three important operations on a delayed extent tree: finding
>   *     next extent, adding a extent(a range of blocks) and removing a extent.
>   *
>   *   --        race on a extent status tree
> @@ -195,7 +195,7 @@ static void ext4_es_print_tree(struct inode *inode)
>  
>  static inline ext4_lblk_t ext4_es_end(struct extent_status *es)
>  {
> -       BUG_ON(es->es_lblk + es->es_len < es->es_lblk);
> +       BUG_ON(es->es_lblk + es->es_len <= es->es_lblk);

Hi Jon,

Thanks for looking at the code.  When ext4_es_end is called, es_len
shouldn't be zero because we always get 'es' from extent status tree,
and we never save an 'es' whose length is zero.  So we don't need to
worry about this.

Regards,
                                                - Zheng
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/fs/ext4/extents_status.c b/fs/ext4/extents_status.c
index 95796a1..49a8da2 100644
--- a/fs/ext4/extents_status.c
+++ b/fs/ext4/extents_status.c
@@ -108,7 +108,7 @@ 
  *     tree are ordered by logical block no.
  *
  *   --        operations on a extent status tree
- *     There are three important operations on a delayed extent tree: find
+ *     There are three important operations on a delayed extent tree: finding
  *     next extent, adding a extent(a range of blocks) and removing a extent.
  *
  *   --        race on a extent status tree
@@ -195,7 +195,7 @@  static void ext4_es_print_tree(struct inode *inode)
 
 static inline ext4_lblk_t ext4_es_end(struct extent_status *es)
 {
-       BUG_ON(es->es_lblk + es->es_len < es->es_lblk);
+       BUG_ON(es->es_lblk + es->es_len <= es->es_lblk);
        return es->es_lblk + es->es_len - 1;
 }
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in