linux-ext4.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] ext2: fix missing percpu_counter_inc (fwd)
@ 2020-06-09 17:14 Mikulas Patocka
  2020-06-10  8:45 ` Jan Kara
  0 siblings, 1 reply; 2+ messages in thread
From: Mikulas Patocka @ 2020-06-09 17:14 UTC (permalink / raw)
  To: Theodore Ts'o, Andreas Dilger, Jan Kara; +Cc: linux-ext4

I'm resending this because I didn't get any response.

Mikulas



---------- Forwarded message ----------
Date: Mon, 20 Apr 2020 16:02:21 -0400 (EDT)
From: Mikulas Patocka <mpatocka@redhat.com>
To: Jan Kara <jack@suse.com>
Cc: linux-ext4@vger.kernel.org
Subject: [PATCH] ext2: fix missing percpu_counter_inc

sbi->s_freeinodes_counter is only decreased by the ext2 code, it is never
increased. This patch fixes it.

Note that sbi->s_freeinodes_counter is only used in the algorithm that
tries to find the group for new allocations, so this bug is not easily
visible (the only visibility is that the group finding algorithm selects
inoptinal result).

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Cc: stable@vger.kernel.org

---
 fs/ext2/ialloc.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Index: linux-2.6/fs/ext2/ialloc.c
===================================================================
--- linux-2.6.orig/fs/ext2/ialloc.c	2019-09-20 14:39:07.951999000 +0200
+++ linux-2.6/fs/ext2/ialloc.c	2020-04-20 21:33:26.389999000 +0200
@@ -80,6 +80,7 @@ static void ext2_release_inode(struct su
 	if (dir)
 		le16_add_cpu(&desc->bg_used_dirs_count, -1);
 	spin_unlock(sb_bgl_lock(EXT2_SB(sb), group));
+	percpu_counter_inc(&EXT2_SB(sb)->s_freeinodes_counter);
 	if (dir)
 		percpu_counter_dec(&EXT2_SB(sb)->s_dirs_counter);
 	mark_buffer_dirty(bh);
@@ -528,7 +529,7 @@ got:
 		goto fail;
 	}
 
-	percpu_counter_add(&sbi->s_freeinodes_counter, -1);
+	percpu_counter_dec(&sbi->s_freeinodes_counter);
 	if (S_ISDIR(mode))
 		percpu_counter_inc(&sbi->s_dirs_counter);
 


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] ext2: fix missing percpu_counter_inc (fwd)
  2020-06-09 17:14 [PATCH] ext2: fix missing percpu_counter_inc (fwd) Mikulas Patocka
@ 2020-06-10  8:45 ` Jan Kara
  0 siblings, 0 replies; 2+ messages in thread
From: Jan Kara @ 2020-06-10  8:45 UTC (permalink / raw)
  To: Mikulas Patocka; +Cc: Theodore Ts'o, Andreas Dilger, Jan Kara, linux-ext4

On Tue 09-06-20 13:14:18, Mikulas Patocka wrote:
> I'm resending this because I didn't get any response.

I'm sorry far that. The patch got buried in my inbox... I've queued it up
now. Thanks!

								Honza

> ---------- Forwarded message ----------
> Date: Mon, 20 Apr 2020 16:02:21 -0400 (EDT)
> From: Mikulas Patocka <mpatocka@redhat.com>
> To: Jan Kara <jack@suse.com>
> Cc: linux-ext4@vger.kernel.org
> Subject: [PATCH] ext2: fix missing percpu_counter_inc
> 
> sbi->s_freeinodes_counter is only decreased by the ext2 code, it is never
> increased. This patch fixes it.
> 
> Note that sbi->s_freeinodes_counter is only used in the algorithm that
> tries to find the group for new allocations, so this bug is not easily
> visible (the only visibility is that the group finding algorithm selects
> inoptinal result).
> 
> Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
> Cc: stable@vger.kernel.org
> 
> ---
>  fs/ext2/ialloc.c |    3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> Index: linux-2.6/fs/ext2/ialloc.c
> ===================================================================
> --- linux-2.6.orig/fs/ext2/ialloc.c	2019-09-20 14:39:07.951999000 +0200
> +++ linux-2.6/fs/ext2/ialloc.c	2020-04-20 21:33:26.389999000 +0200
> @@ -80,6 +80,7 @@ static void ext2_release_inode(struct su
>  	if (dir)
>  		le16_add_cpu(&desc->bg_used_dirs_count, -1);
>  	spin_unlock(sb_bgl_lock(EXT2_SB(sb), group));
> +	percpu_counter_inc(&EXT2_SB(sb)->s_freeinodes_counter);
>  	if (dir)
>  		percpu_counter_dec(&EXT2_SB(sb)->s_dirs_counter);
>  	mark_buffer_dirty(bh);
> @@ -528,7 +529,7 @@ got:
>  		goto fail;
>  	}
>  
> -	percpu_counter_add(&sbi->s_freeinodes_counter, -1);
> +	percpu_counter_dec(&sbi->s_freeinodes_counter);
>  	if (S_ISDIR(mode))
>  		percpu_counter_inc(&sbi->s_dirs_counter);
>  
> 
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-06-10  8:45 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-06-09 17:14 [PATCH] ext2: fix missing percpu_counter_inc (fwd) Mikulas Patocka
2020-06-10  8:45 ` Jan Kara

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).