2019-10-20 23:24:59

by Chengguang Xu

[permalink] [raw]
Subject: [PATCH] ext2: adjust block num when retry allocation

Set block num to original *count in a case
of retrying allocation in case num < *count

Signed-off-by: Chengguang Xu <[email protected]>
---
Hi Jan,

This patch is only compile-tested, I'm not sure if this
kind of unexpected condition which causes reallocation
will actually happen but baesd on the code the fix seems
correct and better.

fs/ext2/balloc.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/fs/ext2/balloc.c b/fs/ext2/balloc.c
index e0cc55164505..924c1c765306 100644
--- a/fs/ext2/balloc.c
+++ b/fs/ext2/balloc.c
@@ -1404,6 +1404,7 @@ ext2_fsblk_t ext2_new_blocks(struct inode *inode, ext2_fsblk_t goal,
* use. So we may want to selectively mark some of the blocks
* as free
*/
+ num = *count;
goto retry_alloc;
}

--
2.21.0




2019-10-21 09:18:29

by Jan Kara

[permalink] [raw]
Subject: Re: [PATCH] ext2: adjust block num when retry allocation

On Mon 21-10-19 07:23:26, Chengguang Xu wrote:
> Set block num to original *count in a case
> of retrying allocation in case num < *count
>
> Signed-off-by: Chengguang Xu <[email protected]>
> ---
> Hi Jan,
>
> This patch is only compile-tested, I'm not sure if this
> kind of unexpected condition which causes reallocation
> will actually happen but baesd on the code the fix seems
> correct and better.

Yeah, you are right that we should reset 'num' back to *count. Although the
practial effect of this is minimal - we take this code path only when the
filesystem is corrupted. But still... Patch applied. Thanks!

Honza
>
> fs/ext2/balloc.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/fs/ext2/balloc.c b/fs/ext2/balloc.c
> index e0cc55164505..924c1c765306 100644
> --- a/fs/ext2/balloc.c
> +++ b/fs/ext2/balloc.c
> @@ -1404,6 +1404,7 @@ ext2_fsblk_t ext2_new_blocks(struct inode *inode, ext2_fsblk_t goal,
> * use. So we may want to selectively mark some of the blocks
> * as free
> */
> + num = *count;
> goto retry_alloc;
> }
>
> --
> 2.21.0
>
>
>
--
Jan Kara <[email protected]>
SUSE Labs, CR

2019-10-22 05:50:34

by Chengguang Xu

[permalink] [raw]
Subject: Re: [PATCH] ext2: adjust block num when retry allocation

---- 在 星期一, 2019-10-21 17:18:00 Jan Kara <[email protected]> 撰写 ----
> On Mon 21-10-19 07:23:26, Chengguang Xu wrote:
> > Set block num to original *count in a case
> > of retrying allocation in case num < *count
> >
> > Signed-off-by: Chengguang Xu <[email protected]>
> > ---
> > Hi Jan,
> >
> > This patch is only compile-tested, I'm not sure if this
> > kind of unexpected condition which causes reallocation
> > will actually happen but baesd on the code the fix seems
> > correct and better.
>
> Yeah, you are right that we should reset 'num' back to *count. Although the
> practial effect of this is minimal - we take this code path only when the
> filesystem is corrupted. But still... Patch applied. Thanks!

Thanks for your review. I found another relevant bug in ext2_try_to_allocate()
today, I'll fix it up and also plan to do some code cleanups for the allocation logic.
Do you prefer two separate patches for bugfix and cleanup or just put all in a patch series?

Thanks,
Chengguang