Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec...
[safe/jmp/linux-2.6] / fs / ocfs2 / inode.c
index af18988..abb0a95 100644 (file)
@@ -376,6 +376,10 @@ void ocfs2_populate_inode(struct inode *inode, struct ocfs2_dinode *fe,
 
        OCFS2_I(inode)->ip_last_used_slot = 0;
        OCFS2_I(inode)->ip_last_used_group = 0;
+
+       if (S_ISDIR(inode->i_mode))
+               ocfs2_resv_set_type(&OCFS2_I(inode)->ip_la_data_resv,
+                                   OCFS2_RESV_FLAG_DIR);
        mlog_exit_void();
 }
 
@@ -539,7 +543,6 @@ static int ocfs2_truncate_for_delete(struct ocfs2_super *osb,
                                     struct buffer_head *fe_bh)
 {
        int status = 0;
-       struct ocfs2_truncate_context *tc = NULL;
        struct ocfs2_dinode *fe;
        handle_t *handle = NULL;
 
@@ -582,13 +585,7 @@ static int ocfs2_truncate_for_delete(struct ocfs2_super *osb,
                ocfs2_commit_trans(osb, handle);
                handle = NULL;
 
-               status = ocfs2_prepare_truncate(osb, inode, fe_bh, &tc);
-               if (status < 0) {
-                       mlog_errno(status);
-                       goto out;
-               }
-
-               status = ocfs2_commit_truncate(osb, inode, fe_bh, tc);
+               status = ocfs2_commit_truncate(osb, inode, fe_bh);
                if (status < 0) {
                        mlog_errno(status);
                        goto out;
@@ -659,12 +656,7 @@ static int ocfs2_remove_inode(struct inode *inode,
 
        di->i_dtime = cpu_to_le64(CURRENT_TIME.tv_sec);
        di->i_flags &= cpu_to_le32(~(OCFS2_VALID_FL | OCFS2_ORPHANED_FL));
-
-       status = ocfs2_journal_dirty(handle, di_bh);
-       if (status < 0) {
-               mlog_errno(status);
-               goto bail_commit;
-       }
+       ocfs2_journal_dirty(handle, di_bh);
 
        ocfs2_remove_from_cache(INODE_CACHE(inode), di_bh);
        dquot_free_inode(inode);
@@ -980,7 +972,7 @@ static void ocfs2_cleanup_delete_inode(struct inode *inode,
 void ocfs2_delete_inode(struct inode *inode)
 {
        int wipe, status;
-       sigset_t blocked, oldset;
+       sigset_t oldset;
        struct buffer_head *di_bh = NULL;
 
        mlog_entry("(inode->i_ino = %lu)\n", inode->i_ino);
@@ -1007,13 +999,7 @@ void ocfs2_delete_inode(struct inode *inode)
         * messaging paths may return us -ERESTARTSYS. Which would
         * cause us to exit early, resulting in inodes being orphaned
         * forever. */
-       sigfillset(&blocked);
-       status = sigprocmask(SIG_BLOCK, &blocked, &oldset);
-       if (status < 0) {
-               mlog_errno(status);
-               ocfs2_cleanup_delete_inode(inode, 1);
-               goto bail;
-       }
+       ocfs2_block_signals(&oldset);
 
        /*
         * Synchronize us against ocfs2_get_dentry. We take this in
@@ -1087,9 +1073,7 @@ bail_unlock_nfs_sync:
        ocfs2_nfs_sync_unlock(OCFS2_SB(inode->i_sb), 0);
 
 bail_unblock:
-       status = sigprocmask(SIG_SETMASK, &oldset, NULL);
-       if (status < 0)
-               mlog_errno(status);
+       ocfs2_unblock_signals(&oldset);
 bail:
        clear_inode(inode);
        mlog_exit_void();
@@ -1123,6 +1107,10 @@ void ocfs2_clear_inode(struct inode *inode)
        ocfs2_mark_lockres_freeing(&oi->ip_inode_lockres);
        ocfs2_mark_lockres_freeing(&oi->ip_open_lockres);
 
+       ocfs2_resv_discard(&OCFS2_SB(inode->i_sb)->osb_la_resmap,
+                          &oi->ip_la_data_resv);
+       ocfs2_resv_init_once(&oi->ip_la_data_resv);
+
        /* We very well may get a clear_inode before all an inodes
         * metadata has hit disk. Of course, we can't drop any cluster
         * locks until the journal has finished with it. The only
@@ -1298,13 +1286,8 @@ int ocfs2_mark_inode_dirty(handle_t *handle,
        fe->i_mtime = cpu_to_le64(inode->i_mtime.tv_sec);
        fe->i_mtime_nsec = cpu_to_le32(inode->i_mtime.tv_nsec);
 
-       status = ocfs2_journal_dirty(handle, bh);
-       if (status < 0)
-               mlog_errno(status);
-
-       status = 0;
+       ocfs2_journal_dirty(handle, bh);
 leave:
-
        mlog_exit(status);
        return status;
 }