From: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> To: Beata Michalska <b.michalska@samsung.com>, tytso@mit.edu Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-api@vger.kernel.org, greg@kroah.com, jack@suse.cz, adilger.kernel@dilger.ca, hughd@google.com, lczerner@redhat.com, hch@infradead.org, linux-ext4@vger.kernel.org, linux-mm@kvack.org, kyungmin.park@samsung.com, kmpark@infradead.org Subject: Re: [RFC v3 2/4] ext4: Add helper function to mark group as corrupted Date: Wed, 22 Jul 2015 12:40:03 +0200 [thread overview] Message-ID: <3417027.tdShitEpvE@amdc1976> (raw) In-Reply-To: <1434460173-18427-3-git-send-email-b.michalska@samsung.com> Hi, On Tuesday, June 16, 2015 03:09:31 PM Beata Michalska wrote: > Add ext4_mark_group_corrupted helper function to > simplify the code and to keep the logic in one place. > > Signed-off-by: Beata Michalska <b.michalska@samsung.com> This small cleanup patch is not really required for your notifications framework to work and it seems to be a good change on its own. Maybe it can be merged independently of other patches? Ted, what is your opinion on it? Best regards, -- Bartlomiej Zolnierkiewicz Samsung R&D Institute Poland Samsung Electronics > --- > fs/ext4/balloc.c | 15 +++------------ > fs/ext4/ext4.h | 9 +++++++++ > fs/ext4/ialloc.c | 5 +---- > fs/ext4/mballoc.c | 11 ++--------- > 4 files changed, 15 insertions(+), 25 deletions(-) > > diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c > index 83a6f49..e95b27a 100644 > --- a/fs/ext4/balloc.c > +++ b/fs/ext4/balloc.c > @@ -193,10 +193,7 @@ static int ext4_init_block_bitmap(struct super_block *sb, > * essentially implementing a per-group read-only flag. */ > if (!ext4_group_desc_csum_verify(sb, block_group, gdp)) { > grp = ext4_get_group_info(sb, block_group); > - if (!EXT4_MB_GRP_BBITMAP_CORRUPT(grp)) > - percpu_counter_sub(&sbi->s_freeclusters_counter, > - grp->bb_free); > - set_bit(EXT4_GROUP_INFO_BBITMAP_CORRUPT_BIT, &grp->bb_state); > + ext4_mark_group_corrupted(sbi, grp); > if (!EXT4_MB_GRP_IBITMAP_CORRUPT(grp)) { > int count; > count = ext4_free_inodes_count(sb, gdp); > @@ -379,20 +376,14 @@ static void ext4_validate_block_bitmap(struct super_block *sb, > ext4_unlock_group(sb, block_group); > ext4_error(sb, "bg %u: block %llu: invalid block bitmap", > block_group, blk); > - if (!EXT4_MB_GRP_BBITMAP_CORRUPT(grp)) > - percpu_counter_sub(&sbi->s_freeclusters_counter, > - grp->bb_free); > - set_bit(EXT4_GROUP_INFO_BBITMAP_CORRUPT_BIT, &grp->bb_state); > + ext4_mark_group_corrupted(sbi, grp); > return; > } > if (unlikely(!ext4_block_bitmap_csum_verify(sb, block_group, > desc, bh))) { > ext4_unlock_group(sb, block_group); > ext4_error(sb, "bg %u: bad block bitmap checksum", block_group); > - if (!EXT4_MB_GRP_BBITMAP_CORRUPT(grp)) > - percpu_counter_sub(&sbi->s_freeclusters_counter, > - grp->bb_free); > - set_bit(EXT4_GROUP_INFO_BBITMAP_CORRUPT_BIT, &grp->bb_state); > + ext4_mark_group_corrupted(sbi, grp); > return; > } > set_buffer_verified(bh); > diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h > index f63c3d5..163afe2 100644 > --- a/fs/ext4/ext4.h > +++ b/fs/ext4/ext4.h > @@ -2535,6 +2535,15 @@ static inline spinlock_t *ext4_group_lock_ptr(struct super_block *sb, > return bgl_lock_ptr(EXT4_SB(sb)->s_blockgroup_lock, group); > } > > +static inline > +void ext4_mark_group_corrupted(struct ext4_sb_info *sbi, > + struct ext4_group_info *grp) > +{ > + if (!EXT4_MB_GRP_BBITMAP_CORRUPT(grp)) > + percpu_counter_sub(&sbi->s_freeclusters_counter, grp->bb_free); > + set_bit(EXT4_GROUP_INFO_BBITMAP_CORRUPT_BIT, &grp->bb_state); > +} > + > /* > * Returns true if the filesystem is busy enough that attempts to > * access the block group locks has run into contention. > diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c > index ac644c3..ebe0499 100644 > --- a/fs/ext4/ialloc.c > +++ b/fs/ext4/ialloc.c > @@ -79,10 +79,7 @@ static unsigned ext4_init_inode_bitmap(struct super_block *sb, > if (!ext4_group_desc_csum_verify(sb, block_group, gdp)) { > ext4_error(sb, "Checksum bad for group %u", block_group); > grp = ext4_get_group_info(sb, block_group); > - if (!EXT4_MB_GRP_BBITMAP_CORRUPT(grp)) > - percpu_counter_sub(&sbi->s_freeclusters_counter, > - grp->bb_free); > - set_bit(EXT4_GROUP_INFO_BBITMAP_CORRUPT_BIT, &grp->bb_state); > + ext4_mark_group_corrupted(sbi, grp); > if (!EXT4_MB_GRP_IBITMAP_CORRUPT(grp)) { > int count; > count = ext4_free_inodes_count(sb, gdp); > diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c > index 8d1e602..24a4b6d 100644 > --- a/fs/ext4/mballoc.c > +++ b/fs/ext4/mballoc.c > @@ -760,10 +760,7 @@ void ext4_mb_generate_buddy(struct super_block *sb, > * corrupt and update bb_free using bitmap value > */ > grp->bb_free = free; > - if (!EXT4_MB_GRP_BBITMAP_CORRUPT(grp)) > - percpu_counter_sub(&sbi->s_freeclusters_counter, > - grp->bb_free); > - set_bit(EXT4_GROUP_INFO_BBITMAP_CORRUPT_BIT, &grp->bb_state); > + ext4_mark_group_corrupted(sbi, grp); > } > mb_set_largest_free_order(sb, grp); > > @@ -1448,12 +1445,8 @@ static void mb_free_blocks(struct inode *inode, struct ext4_buddy *e4b, > "freeing already freed block " > "(bit %u); block bitmap corrupt.", > block); > - if (!EXT4_MB_GRP_BBITMAP_CORRUPT(e4b->bd_info)) > - percpu_counter_sub(&sbi->s_freeclusters_counter, > - e4b->bd_info->bb_free); > /* Mark the block group as corrupt. */ > - set_bit(EXT4_GROUP_INFO_BBITMAP_CORRUPT_BIT, > - &e4b->bd_info->bb_state); > + ext4_mark_group_corrupted(sbi, e4b->bd_info); > mb_regenerate_buddy(e4b); > goto done; > }
WARNING: multiple messages have this Message-ID (diff)
From: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> To: Beata Michalska <b.michalska@samsung.com>, tytso@mit.edu Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-api@vger.kernel.org, greg@kroah.com, jack@suse.cz, adilger.kernel@dilger.ca, hughd@google.com, lczerner@redhat.com, hch@infradead.org, linux-ext4@vger.kernel.org, linux-mm@kvack.org, kyungmin.park@samsung.com, kmpark@infradead.org Subject: Re: [RFC v3 2/4] ext4: Add helper function to mark group as corrupted Date: Wed, 22 Jul 2015 12:40:03 +0200 [thread overview] Message-ID: <3417027.tdShitEpvE@amdc1976> (raw) In-Reply-To: <1434460173-18427-3-git-send-email-b.michalska@samsung.com> Hi, On Tuesday, June 16, 2015 03:09:31 PM Beata Michalska wrote: > Add ext4_mark_group_corrupted helper function to > simplify the code and to keep the logic in one place. > > Signed-off-by: Beata Michalska <b.michalska@samsung.com> This small cleanup patch is not really required for your notifications framework to work and it seems to be a good change on its own. Maybe it can be merged independently of other patches? Ted, what is your opinion on it? Best regards, -- Bartlomiej Zolnierkiewicz Samsung R&D Institute Poland Samsung Electronics > --- > fs/ext4/balloc.c | 15 +++------------ > fs/ext4/ext4.h | 9 +++++++++ > fs/ext4/ialloc.c | 5 +---- > fs/ext4/mballoc.c | 11 ++--------- > 4 files changed, 15 insertions(+), 25 deletions(-) > > diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c > index 83a6f49..e95b27a 100644 > --- a/fs/ext4/balloc.c > +++ b/fs/ext4/balloc.c > @@ -193,10 +193,7 @@ static int ext4_init_block_bitmap(struct super_block *sb, > * essentially implementing a per-group read-only flag. */ > if (!ext4_group_desc_csum_verify(sb, block_group, gdp)) { > grp = ext4_get_group_info(sb, block_group); > - if (!EXT4_MB_GRP_BBITMAP_CORRUPT(grp)) > - percpu_counter_sub(&sbi->s_freeclusters_counter, > - grp->bb_free); > - set_bit(EXT4_GROUP_INFO_BBITMAP_CORRUPT_BIT, &grp->bb_state); > + ext4_mark_group_corrupted(sbi, grp); > if (!EXT4_MB_GRP_IBITMAP_CORRUPT(grp)) { > int count; > count = ext4_free_inodes_count(sb, gdp); > @@ -379,20 +376,14 @@ static void ext4_validate_block_bitmap(struct super_block *sb, > ext4_unlock_group(sb, block_group); > ext4_error(sb, "bg %u: block %llu: invalid block bitmap", > block_group, blk); > - if (!EXT4_MB_GRP_BBITMAP_CORRUPT(grp)) > - percpu_counter_sub(&sbi->s_freeclusters_counter, > - grp->bb_free); > - set_bit(EXT4_GROUP_INFO_BBITMAP_CORRUPT_BIT, &grp->bb_state); > + ext4_mark_group_corrupted(sbi, grp); > return; > } > if (unlikely(!ext4_block_bitmap_csum_verify(sb, block_group, > desc, bh))) { > ext4_unlock_group(sb, block_group); > ext4_error(sb, "bg %u: bad block bitmap checksum", block_group); > - if (!EXT4_MB_GRP_BBITMAP_CORRUPT(grp)) > - percpu_counter_sub(&sbi->s_freeclusters_counter, > - grp->bb_free); > - set_bit(EXT4_GROUP_INFO_BBITMAP_CORRUPT_BIT, &grp->bb_state); > + ext4_mark_group_corrupted(sbi, grp); > return; > } > set_buffer_verified(bh); > diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h > index f63c3d5..163afe2 100644 > --- a/fs/ext4/ext4.h > +++ b/fs/ext4/ext4.h > @@ -2535,6 +2535,15 @@ static inline spinlock_t *ext4_group_lock_ptr(struct super_block *sb, > return bgl_lock_ptr(EXT4_SB(sb)->s_blockgroup_lock, group); > } > > +static inline > +void ext4_mark_group_corrupted(struct ext4_sb_info *sbi, > + struct ext4_group_info *grp) > +{ > + if (!EXT4_MB_GRP_BBITMAP_CORRUPT(grp)) > + percpu_counter_sub(&sbi->s_freeclusters_counter, grp->bb_free); > + set_bit(EXT4_GROUP_INFO_BBITMAP_CORRUPT_BIT, &grp->bb_state); > +} > + > /* > * Returns true if the filesystem is busy enough that attempts to > * access the block group locks has run into contention. > diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c > index ac644c3..ebe0499 100644 > --- a/fs/ext4/ialloc.c > +++ b/fs/ext4/ialloc.c > @@ -79,10 +79,7 @@ static unsigned ext4_init_inode_bitmap(struct super_block *sb, > if (!ext4_group_desc_csum_verify(sb, block_group, gdp)) { > ext4_error(sb, "Checksum bad for group %u", block_group); > grp = ext4_get_group_info(sb, block_group); > - if (!EXT4_MB_GRP_BBITMAP_CORRUPT(grp)) > - percpu_counter_sub(&sbi->s_freeclusters_counter, > - grp->bb_free); > - set_bit(EXT4_GROUP_INFO_BBITMAP_CORRUPT_BIT, &grp->bb_state); > + ext4_mark_group_corrupted(sbi, grp); > if (!EXT4_MB_GRP_IBITMAP_CORRUPT(grp)) { > int count; > count = ext4_free_inodes_count(sb, gdp); > diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c > index 8d1e602..24a4b6d 100644 > --- a/fs/ext4/mballoc.c > +++ b/fs/ext4/mballoc.c > @@ -760,10 +760,7 @@ void ext4_mb_generate_buddy(struct super_block *sb, > * corrupt and update bb_free using bitmap value > */ > grp->bb_free = free; > - if (!EXT4_MB_GRP_BBITMAP_CORRUPT(grp)) > - percpu_counter_sub(&sbi->s_freeclusters_counter, > - grp->bb_free); > - set_bit(EXT4_GROUP_INFO_BBITMAP_CORRUPT_BIT, &grp->bb_state); > + ext4_mark_group_corrupted(sbi, grp); > } > mb_set_largest_free_order(sb, grp); > > @@ -1448,12 +1445,8 @@ static void mb_free_blocks(struct inode *inode, struct ext4_buddy *e4b, > "freeing already freed block " > "(bit %u); block bitmap corrupt.", > block); > - if (!EXT4_MB_GRP_BBITMAP_CORRUPT(e4b->bd_info)) > - percpu_counter_sub(&sbi->s_freeclusters_counter, > - e4b->bd_info->bb_free); > /* Mark the block group as corrupt. */ > - set_bit(EXT4_GROUP_INFO_BBITMAP_CORRUPT_BIT, > - &e4b->bd_info->bb_state); > + ext4_mark_group_corrupted(sbi, e4b->bd_info); > mb_regenerate_buddy(e4b); > goto done; > } -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2015-07-22 10:40 UTC|newest] Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-06-16 13:09 [RFC v3 0/4] fs: Add generic file system event notifications Beata Michalska 2015-06-16 13:09 ` Beata Michalska 2015-06-16 13:09 ` [RFC v3 1/4] " Beata Michalska 2015-06-16 13:09 ` Beata Michalska 2015-06-16 16:21 ` Al Viro 2015-06-16 16:21 ` Al Viro 2015-06-16 16:21 ` Al Viro 2015-06-17 9:22 ` Beata Michalska 2015-06-17 9:22 ` Beata Michalska 2015-06-17 23:06 ` Dave Chinner 2015-06-17 23:06 ` Dave Chinner 2015-06-18 8:25 ` Beata Michalska 2015-06-18 8:25 ` Beata Michalska 2015-06-19 0:03 ` Dave Chinner 2015-06-19 0:03 ` Dave Chinner 2015-06-19 17:28 ` Beata Michalska 2015-06-19 17:28 ` Beata Michalska 2015-06-19 17:28 ` Beata Michalska 2015-06-19 23:21 ` Dave Chinner 2015-06-19 23:21 ` Dave Chinner 2015-06-22 15:46 ` Beata Michalska 2015-06-22 15:46 ` Beata Michalska 2015-06-18 11:17 ` Kinglong Mee 2015-06-18 11:17 ` Kinglong Mee 2015-06-18 14:50 ` Beata Michalska 2015-06-18 14:50 ` Beata Michalska 2015-06-24 8:47 ` Dmitry Monakhov 2015-06-24 8:47 ` Dmitry Monakhov 2015-06-24 15:31 ` Beata Michalska 2015-06-24 15:31 ` Beata Michalska 2015-06-24 16:26 ` Steve French 2015-06-24 16:26 ` Steve French 2015-06-26 7:30 ` Beata Michalska 2015-06-26 7:30 ` Beata Michalska 2015-07-22 15:55 ` Bartlomiej Zolnierkiewicz 2015-07-22 15:55 ` Bartlomiej Zolnierkiewicz 2015-07-30 8:22 ` Beata Michalska 2015-07-30 8:22 ` Beata Michalska 2015-06-16 13:09 ` [RFC v3 2/4] ext4: Add helper function to mark group as corrupted Beata Michalska 2015-06-16 13:09 ` Beata Michalska 2015-07-22 10:40 ` Bartlomiej Zolnierkiewicz [this message] 2015-07-22 10:40 ` Bartlomiej Zolnierkiewicz 2015-06-16 13:09 ` [RFC v3 3/4] ext4: Add support for generic FS events Beata Michalska 2015-06-16 13:09 ` Beata Michalska 2015-06-16 13:09 ` Beata Michalska 2015-06-17 6:15 ` Leon Romanovsky 2015-06-17 6:15 ` Leon Romanovsky 2015-06-17 9:25 ` Beata Michalska 2015-06-17 9:25 ` Beata Michalska 2015-06-16 13:09 ` [RFC v3 4/4] shmem: " Beata Michalska 2015-06-16 13:09 ` Beata Michalska 2015-06-17 6:08 ` Leon Romanovsky 2015-06-17 6:08 ` Leon Romanovsky 2015-06-17 9:23 ` Beata Michalska 2015-06-17 9:23 ` Beata Michalska
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=3417027.tdShitEpvE@amdc1976 \ --to=b.zolnierkie@samsung.com \ --cc=adilger.kernel@dilger.ca \ --cc=b.michalska@samsung.com \ --cc=greg@kroah.com \ --cc=hch@infradead.org \ --cc=hughd@google.com \ --cc=jack@suse.cz \ --cc=kmpark@infradead.org \ --cc=kyungmin.park@samsung.com \ --cc=lczerner@redhat.com \ --cc=linux-api@vger.kernel.org \ --cc=linux-ext4@vger.kernel.org \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=tytso@mit.edu \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.