ext2: adjust block num when retry allocation
diff mbox series

Message ID 20191020232326.84881-1-cgxu519@mykernel.net
State Not Applicable
Headers show
Series
  • ext2: adjust block num when retry allocation
Related show

Commit Message

Chengguang Xu Oct. 20, 2019, 11:23 p.m. UTC
Set block num to original *count in a case
of retrying allocation in case num < *count

Signed-off-by: Chengguang Xu <cgxu519@mykernel.net>
---
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(+)

Comments

Jan Kara Oct. 21, 2019, 9:18 a.m. UTC | #1
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 <cgxu519@mykernel.net>
> ---
> 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
> 
> 
>
Chengguang Xu Oct. 22, 2019, 5:36 a.m. UTC | #2
---- 在 星期一, 2019-10-21 17:18:00 Jan Kara <jack@suse.cz> 撰写 ----
 > 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 <cgxu519@mykernel.net>
 > > ---
 > > 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

Patch
diff mbox series

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;
 	}