On Thu, Jul 05, 2007 at 12:17:25AM +0400, Alexey Dobriyan wrote: > On Wed, Jul 04, 2007 at 09:30:24PM +0200, Borislav Petkov wrote: > > Fix error handling in ext4_create_journal according to kernel conventions. > > > --- linux-2.6.22-rc7/fs/ext4/super.c.orig > > +++ linux-2.6.22-rc7/fs/ext4/super.c > > @@ -2150,6 +2150,7 @@ > > unsigned int journal_inum) > > { > > journal_t *journal; > > + int err; > > > > if (sb->s_flags & MS_RDONLY) { > > printk(KERN_ERR "EXT4-fs: readonly filesystem when trying to " > > @@ -2157,13 +2158,15 @@ > > return -EROFS; > > } > > > > - if (!(journal = ext4_get_journal(sb, journal_inum))) > > + journal = ext4_get_journal(sb, journal_inum); > > + if (!journal) > > return -EINVAL; > > OK. > > > printk(KERN_INFO "EXT4-fs: creating new journal on inode %u\n", > > journal_inum); > > > > - if (jbd2_journal_create(journal)) { > > + err = jbd2_journal_create(journal); > > + if (err) { > > printk(KERN_ERR "EXT4-fs: error creating journal.\n"); > > jbd2_journal_destroy(journal); > > return -EIO; > > Original code is fine. Hmm, ok but this is not the way error handling is done in the rest of ext3/4. If you look for error variables declarations of type int in super.c, e.g. in ext4_load_journal(), ext4_clear_journal_err() and ext4_remount() to name a few, you'll see how the return value of the called function is assigned to the error variable and then the last is checked in the if-conditional, which is the usual way error handling is done in the kernel, imho. And my patch addresses exactly that. -- Regards/Gruß, Boris. - To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html