UBIFS: correct orphan deletion order
authorAdrian Hunter <ext-adrian.hunter@nokia.com>
Wed, 23 Jul 2008 13:55:55 +0000 (16:55 +0300)
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Wed, 13 Aug 2008 08:32:53 +0000 (11:32 +0300)
The debug function that checks orphans, does so using the
TNC mutex. That means it will not see a correct picture
if the inode is removed from the orphan tree before it is
removed from TNC.

Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
fs/ubifs/journal.c

index 25de6fd..acdae00 100644 (file)
@@ -871,10 +871,11 @@ int ubifs_jnl_delete_inode(struct ubifs_info *c, const struct inode *inode)
                return ubifs_jnl_write_inode(c, inode);
        }
 
-       ubifs_delete_orphan(c, inode->i_ino);
        err = ubifs_tnc_remove_ino(c, inode->i_ino);
        if (err)
                ubifs_ro_mode(c, err);
+       else
+               ubifs_delete_orphan(c, inode->i_ino);
        up_read(&c->commit_sem);
        return err;
 }