ocfs2: take ip_alloc_sem during entire truncate
[sfrench/cifs-2.6.git] / fs / ocfs2 / alloc.c
index a0c8667caa722142ce7114ca73e240409aa8b478..02b6e7af8edbdd077d8e567506e2fbcd56519d9f 100644 (file)
@@ -2869,7 +2869,7 @@ int ocfs2_complete_truncate_log_recovery(struct ocfs2_super *osb,
        tl = &tl_copy->id2.i_dealloc;
        num_recs = le16_to_cpu(tl->tl_used);
        mlog(0, "cleanup %u records from %llu\n", num_recs,
-            (unsigned long long)tl_copy->i_blkno);
+            (unsigned long long)le64_to_cpu(tl_copy->i_blkno));
 
        mutex_lock(&tl_inode->i_mutex);
        for(i = 0; i < num_recs; i++) {
@@ -3631,8 +3631,6 @@ int ocfs2_commit_truncate(struct ocfs2_super *osb,
 
        mlog_entry_void();
 
-       down_write(&OCFS2_I(inode)->ip_alloc_sem);
-
        new_highest_cpos = ocfs2_clusters_for_bytes(osb->sb,
                                                     i_size_read(inode));
 
@@ -3754,7 +3752,6 @@ start:
        goto start;
 
 bail:
-       up_write(&OCFS2_I(inode)->ip_alloc_sem);
 
        ocfs2_schedule_truncate_log_flush(osb, 1);
 
@@ -3801,8 +3798,8 @@ int ocfs2_prepare_truncate(struct ocfs2_super *osb,
        fe = (struct ocfs2_dinode *) fe_bh->b_data;
 
        mlog(0, "fe->i_clusters = %u, new_i_clusters = %u, fe->i_size ="
-            "%llu\n", fe->i_clusters, new_i_clusters,
-            (unsigned long long)fe->i_size);
+            "%llu\n", le32_to_cpu(fe->i_clusters), new_i_clusters,
+            (unsigned long long)le64_to_cpu(fe->i_size));
 
        *tc = kzalloc(sizeof(struct ocfs2_truncate_context), GFP_KERNEL);
        if (!(*tc)) {