From Alex Tomas. We can't assert that any more because locks are dropped. fs/ext3/ialloc.c | 21 ++++----------------- 1 files changed, 4 insertions(+), 17 deletions(-) diff -puN fs/ext3/ialloc.c~ext3-concurrent-block-inode-allocation-fix fs/ext3/ialloc.c --- 25/fs/ext3/ialloc.c~ext3-concurrent-block-inode-allocation-fix 2003-05-29 00:32:36.000000000 -0700 +++ 25-akpm/fs/ext3/ialloc.c 2003-05-29 01:21:52.000000000 -0700 @@ -481,23 +481,10 @@ repeat: err = ext3_journal_dirty_metadata(handle, bitmap_bh); if (err) goto fail; } else { - if (le16_to_cpu(gdp->bg_free_inodes_count) != 0) { - ext3_error (sb, "ext3_new_inode", - "Free inodes count corrupted in group %d", - group); - /* Is it really ENOSPC? */ - err = -ENOSPC; - if (sb->s_flags & MS_RDONLY) - goto fail; - - BUFFER_TRACE(bh2, "get_write_access"); - err = ext3_journal_get_write_access(handle, bh2); - if (err) goto fail; - gdp->bg_free_inodes_count = 0; - BUFFER_TRACE(bh2, "call ext3_journal_dirty_metadata"); - err = ext3_journal_dirty_metadata(handle, bh2); - if (err) goto fail; - } + /* + * This case is possible in concurrent environment. Just + * repeat from group search + */ goto repeat; } ino += group * EXT3_INODES_PER_GROUP(sb) + 1; _