Merge branch 'sh-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[pandora-kernel.git] / fs / ocfs2 / alloc.c
index 80ffbe3..48aa9c7 100644 (file)
@@ -30,7 +30,6 @@
 #include <linux/swap.h>
 #include <linux/quotaops.h>
 
-#define MLOG_MASK_PREFIX ML_DISK_ALLOC
 #include <cluster/masklog.h>
 
 #include "ocfs2.h"
@@ -50,6 +49,7 @@
 #include "uptodate.h"
 #include "xattr.h"
 #include "refcounttree.h"
+#include "ocfs2_trace.h"
 
 #include "buffer_head_io.h"
 
@@ -886,8 +886,7 @@ static int ocfs2_validate_extent_block(struct super_block *sb,
        struct ocfs2_extent_block *eb =
                (struct ocfs2_extent_block *)bh->b_data;
 
-       mlog(0, "Validating extent block %llu\n",
-            (unsigned long long)bh->b_blocknr);
+       trace_ocfs2_validate_extent_block((unsigned long long)bh->b_blocknr);
 
        BUG_ON(!buffer_uptodate(bh));
 
@@ -985,7 +984,7 @@ int ocfs2_num_free_extents(struct ocfs2_super *osb,
 bail:
        brelse(eb_bh);
 
-       mlog(0, "retval = %d\n", retval);
+       trace_ocfs2_num_free_extents(retval);
        return retval;
 }
 
@@ -1194,8 +1193,11 @@ static int ocfs2_add_branch(handle_t *handle,
         * from new_cpos).
         */
        if (root_end > new_cpos) {
-               mlog(0, "adjust the cluster end from %u to %u\n",
-                    root_end, new_cpos);
+               trace_ocfs2_adjust_rightmost_branch(
+                       (unsigned long long)
+                       ocfs2_metadata_cache_owner(et->et_ci),
+                       root_end, new_cpos);
+
                status = ocfs2_adjust_rightmost_branch(handle, et);
                if (status) {
                        mlog_errno(status);
@@ -1527,7 +1529,10 @@ static int ocfs2_grow_tree(handle_t *handle, struct ocfs2_extent_tree *et,
         * another tree level */
        if (shift) {
                BUG_ON(bh);
-               mlog(0, "need to shift tree depth (current = %d)\n", depth);
+               trace_ocfs2_grow_tree(
+                       (unsigned long long)
+                       ocfs2_metadata_cache_owner(et->et_ci),
+                       depth);
 
                /* ocfs2_shift_tree_depth will return us a buffer with
                 * the new extent block (so we can pass that to
@@ -1557,7 +1562,6 @@ static int ocfs2_grow_tree(handle_t *handle, struct ocfs2_extent_tree *et,
 
        /* call ocfs2_add_branch to add the final part of the tree with
         * the new data. */
-       mlog(0, "add branch. bh = %p\n", bh);
        ret = ocfs2_add_branch(handle, et, bh, last_eb_bh,
                               meta_ac);
        if (ret < 0) {
@@ -1632,8 +1636,9 @@ static void ocfs2_rotate_leaf(struct ocfs2_extent_list *el,
        }
        insert_index = i;
 
-       mlog(0, "ins %u: index %d, has_empty %d, next_free %d, count %d\n",
-            insert_cpos, insert_index, has_empty, next_free, le16_to_cpu(el->l_count));
+       trace_ocfs2_rotate_leaf(insert_cpos, insert_index,
+                               has_empty, next_free,
+                               le16_to_cpu(el->l_count));
 
        BUG_ON(insert_index < 0);
        BUG_ON(insert_index >= le16_to_cpu(el->l_count));
@@ -2046,7 +2051,7 @@ static void ocfs2_complete_edge_insert(handle_t *handle,
        left_el = path_leaf_el(left_path);
        right_el = path_leaf_el(right_path);
        for(i = left_path->p_tree_depth - 1; i > subtree_index; i--) {
-               mlog(0, "Adjust records at index %u\n", i);
+               trace_ocfs2_complete_edge_insert(i);
 
                /*
                 * One nice property of knowing that all of these
@@ -2376,7 +2381,9 @@ static int ocfs2_rotate_tree_right(handle_t *handle,
                goto out;
        }
 
-       mlog(0, "Insert: %u, first left path cpos: %u\n", insert_cpos, cpos);
+       trace_ocfs2_rotate_tree_right(
+               (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci),
+               insert_cpos, cpos);
 
        /*
         * What we want to do here is:
@@ -2405,8 +2412,10 @@ static int ocfs2_rotate_tree_right(handle_t *handle,
         * rotating subtrees.
         */
        while (cpos && insert_cpos <= cpos) {
-               mlog(0, "Rotating a tree: ins. cpos: %u, left path cpos: %u\n",
-                    insert_cpos, cpos);
+               trace_ocfs2_rotate_tree_right(
+                       (unsigned long long)
+                       ocfs2_metadata_cache_owner(et->et_ci),
+                       insert_cpos, cpos);
 
                ret = ocfs2_find_path(et->et_ci, left_path, cpos);
                if (ret) {
@@ -2448,10 +2457,10 @@ static int ocfs2_rotate_tree_right(handle_t *handle,
 
                start = ocfs2_find_subtree_root(et, left_path, right_path);
 
-               mlog(0, "Subtree root at index %d (blk %llu, depth %d)\n",
-                    start,
-                    (unsigned long long) right_path->p_node[start].bh->b_blocknr,
-                    right_path->p_tree_depth);
+               trace_ocfs2_rotate_subtree(start,
+                       (unsigned long long)
+                       right_path->p_node[start].bh->b_blocknr,
+                       right_path->p_tree_depth);
 
                ret = ocfs2_extend_rotate_transaction(handle, start,
                                                      orig_credits, right_path);
@@ -2951,8 +2960,7 @@ static int __ocfs2_rotate_tree_left(handle_t *handle,
                subtree_root = ocfs2_find_subtree_root(et, left_path,
                                                       right_path);
 
-               mlog(0, "Subtree root at index %d (blk %llu, depth %d)\n",
-                    subtree_root,
+               trace_ocfs2_rotate_subtree(subtree_root,
                     (unsigned long long)
                     right_path->p_node[subtree_root].bh->b_blocknr,
                     right_path->p_tree_depth);
@@ -3976,9 +3984,11 @@ static int ocfs2_append_rec_to_path(handle_t *handle,
                        goto out;
                }
 
-               mlog(0, "Append may need a left path update. cpos: %u, "
-                    "left_cpos: %u\n", le32_to_cpu(insert_rec->e_cpos),
-                    left_cpos);
+               trace_ocfs2_append_rec_to_path(
+                       (unsigned long long)
+                       ocfs2_metadata_cache_owner(et->et_ci),
+                       le32_to_cpu(insert_rec->e_cpos),
+                       left_cpos);
 
                /*
                 * No need to worry if the append is already in the
@@ -4509,7 +4519,7 @@ set_tail_append:
 }
 
 /*
- * Helper function called at the begining of an insert.
+ * Helper function called at the beginning of an insert.
  *
  * This computes a few things that are commonly used in the process of
  * inserting into the btree:
@@ -4665,9 +4675,9 @@ int ocfs2_insert_extent(handle_t *handle,
        struct ocfs2_insert_type insert = {0, };
        struct ocfs2_extent_rec rec;
 
-       mlog(0, "add %u clusters at position %u to owner %llu\n",
-            new_clusters, cpos,
-            (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci));
+       trace_ocfs2_insert_extent_start(
+               (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci),
+               cpos, new_clusters);
 
        memset(&rec, 0, sizeof(rec));
        rec.e_cpos = cpu_to_le32(cpos);
@@ -4687,11 +4697,9 @@ int ocfs2_insert_extent(handle_t *handle,
                goto bail;
        }
 
-       mlog(0, "Insert.appending: %u, Insert.Contig: %u, "
-            "Insert.contig_index: %d, Insert.free_records: %d, "
-            "Insert.tree_depth: %d\n",
-            insert.ins_appending, insert.ins_contig, insert.ins_contig_index,
-            free_records, insert.ins_tree_depth);
+       trace_ocfs2_insert_extent(insert.ins_appending, insert.ins_contig,
+                                 insert.ins_contig_index, free_records,
+                                 insert.ins_tree_depth);
 
        if (insert.ins_contig == CONTIG_NONE && free_records == 0) {
                status = ocfs2_grow_tree(handle, et,
@@ -4732,7 +4740,7 @@ int ocfs2_add_clusters_in_btree(handle_t *handle,
                                struct ocfs2_alloc_context *meta_ac,
                                enum ocfs2_alloc_restarted *reason_ret)
 {
-       int status = 0;
+       int status = 0, err = 0;
        int free_extents;
        enum ocfs2_alloc_restarted reason = RESTART_NONE;
        u32 bit_off, num_bits;
@@ -4759,14 +4767,14 @@ int ocfs2_add_clusters_in_btree(handle_t *handle,
         * 2) we are so fragmented, we've needed to add metadata too
         *    many times. */
        if (!free_extents && !meta_ac) {
-               mlog(0, "we haven't reserved any metadata!\n");
+               err = -1;
                status = -EAGAIN;
                reason = RESTART_META;
                goto leave;
        } else if ((!free_extents)
                   && (ocfs2_alloc_context_bits_left(meta_ac)
                       < ocfs2_extend_meta_needed(et->et_root_el))) {
-               mlog(0, "filesystem is really fragmented...\n");
+               err = -2;
                status = -EAGAIN;
                reason = RESTART_META;
                goto leave;
@@ -4791,9 +4799,9 @@ int ocfs2_add_clusters_in_btree(handle_t *handle,
        }
 
        block = ocfs2_clusters_to_blocks(osb->sb, bit_off);
-       mlog(0, "Allocating %u clusters at block %u for owner %llu\n",
-            num_bits, bit_off,
-            (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci));
+       trace_ocfs2_add_clusters_in_btree(
+            (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci),
+            bit_off, num_bits);
        status = ocfs2_insert_extent(handle, et, *logical_offset, block,
                                     num_bits, flags, meta_ac);
        if (status < 0) {
@@ -4807,8 +4815,7 @@ int ocfs2_add_clusters_in_btree(handle_t *handle,
        *logical_offset += num_bits;
 
        if (clusters_to_add) {
-               mlog(0, "need to alloc once more, wanted = %u\n",
-                    clusters_to_add);
+               err = clusters_to_add;
                status = -EAGAIN;
                reason = RESTART_TRANS;
        }
@@ -4816,6 +4823,7 @@ int ocfs2_add_clusters_in_btree(handle_t *handle,
 leave:
        if (reason_ret)
                *reason_ret = reason;
+       trace_ocfs2_add_clusters_in_btree_ret(status, reason, err);
        return status;
 }
 
@@ -5041,9 +5049,9 @@ int ocfs2_split_extent(handle_t *handle,
 
        ctxt.c_has_empty_extent = ocfs2_is_empty_extent(&el->l_recs[0]);
 
-       mlog(0, "index: %d, contig: %u, has_empty: %u, split_covers: %u\n",
-            split_index, ctxt.c_contig_type, ctxt.c_has_empty_extent,
-            ctxt.c_split_covers_rec);
+       trace_ocfs2_split_extent(split_index, ctxt.c_contig_type,
+                                ctxt.c_has_empty_extent,
+                                ctxt.c_split_covers_rec);
 
        if (ctxt.c_contig_type == CONTIG_NONE) {
                if (ctxt.c_split_covers_rec)
@@ -5177,8 +5185,9 @@ int ocfs2_mark_extent_written(struct inode *inode,
 {
        int ret;
 
-       mlog(0, "Inode %lu cpos %u, len %u, phys clusters %u\n",
-            inode->i_ino, cpos, len, phys);
+       trace_ocfs2_mark_extent_written(
+               (unsigned long long)OCFS2_I(inode)->ip_blkno,
+               cpos, len, phys);
 
        if (!ocfs2_writes_unwritten_extents(OCFS2_SB(inode->i_sb))) {
                ocfs2_error(inode->i_sb, "Inode %llu has unwritten extents "
@@ -5497,11 +5506,10 @@ int ocfs2_remove_extent(handle_t *handle,
 
        BUG_ON(cpos < le32_to_cpu(rec->e_cpos) || trunc_range > rec_range);
 
-       mlog(0, "Owner %llu, remove (cpos %u, len %u). Existing index %d "
-            "(cpos %u, len %u)\n",
-            (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci),
-            cpos, len, index,
-            le32_to_cpu(rec->e_cpos), ocfs2_rec_clusters(el, rec));
+       trace_ocfs2_remove_extent(
+               (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci),
+               cpos, len, index, le32_to_cpu(rec->e_cpos),
+               ocfs2_rec_clusters(el, rec));
 
        if (le32_to_cpu(rec->e_cpos) == cpos || rec_range == trunc_range) {
                ret = ocfs2_truncate_rec(handle, et, path, index, dealloc,
@@ -5780,9 +5788,6 @@ int ocfs2_truncate_log_append(struct ocfs2_super *osb,
        struct ocfs2_dinode *di;
        struct ocfs2_truncate_log *tl;
 
-       mlog(0, "start_blk = %llu, num_clusters = %u\n",
-            (unsigned long long)start_blk, num_clusters);
-
        BUG_ON(mutex_trylock(&tl_inode->i_mutex));
 
        start_cluster = ocfs2_blocks_to_clusters(osb->sb, start_blk);
@@ -5819,10 +5824,9 @@ int ocfs2_truncate_log_append(struct ocfs2_super *osb,
                goto bail;
        }
 
-       mlog(0, "Log truncate of %u clusters starting at cluster %u to "
-            "%llu (index = %d)\n", num_clusters, start_cluster,
-            (unsigned long long)OCFS2_I(tl_inode)->ip_blkno, index);
-
+       trace_ocfs2_truncate_log_append(
+               (unsigned long long)OCFS2_I(tl_inode)->ip_blkno, index,
+               start_cluster, num_clusters);
        if (ocfs2_truncate_log_can_coalesce(tl, start_cluster)) {
                /*
                 * Move index back to the record we are coalescing with.
@@ -5831,9 +5835,10 @@ int ocfs2_truncate_log_append(struct ocfs2_super *osb,
                index--;
 
                num_clusters += le32_to_cpu(tl->tl_recs[index].t_clusters);
-               mlog(0, "Coalesce with index %u (start = %u, clusters = %u)\n",
-                    index, le32_to_cpu(tl->tl_recs[index].t_start),
-                    num_clusters);
+               trace_ocfs2_truncate_log_append(
+                       (unsigned long long)OCFS2_I(tl_inode)->ip_blkno,
+                       index, le32_to_cpu(tl->tl_recs[index].t_start),
+                       num_clusters);
        } else {
                tl->tl_recs[index].t_start = cpu_to_le32(start_cluster);
                tl->tl_used = cpu_to_le16(index + 1);
@@ -5897,8 +5902,9 @@ static int ocfs2_replay_truncate_records(struct ocfs2_super *osb,
                /* if start_blk is not set, we ignore the record as
                 * invalid. */
                if (start_blk) {
-                       mlog(0, "free record %d, start = %u, clusters = %u\n",
-                            i, le32_to_cpu(rec.t_start), num_clusters);
+                       trace_ocfs2_replay_truncate_records(
+                               (unsigned long long)OCFS2_I(tl_inode)->ip_blkno,
+                               i, le32_to_cpu(rec.t_start), num_clusters);
 
                        status = ocfs2_free_clusters(handle, data_alloc_inode,
                                                     data_alloc_bh, start_blk,
@@ -5941,8 +5947,9 @@ int __ocfs2_flush_truncate_log(struct ocfs2_super *osb)
 
        tl = &di->id2.i_dealloc;
        num_to_flush = le16_to_cpu(tl->tl_used);
-       mlog(0, "Flush %u records from truncate log #%llu\n",
-            num_to_flush, (unsigned long long)OCFS2_I(tl_inode)->ip_blkno);
+       trace_ocfs2_flush_truncate_log(
+               (unsigned long long)OCFS2_I(tl_inode)->ip_blkno,
+               num_to_flush);
        if (!num_to_flush) {
                status = 0;
                goto out;
@@ -6079,7 +6086,7 @@ int ocfs2_begin_truncate_log_recovery(struct ocfs2_super *osb,
 
        *tl_copy = NULL;
 
-       mlog(0, "recover truncate log from slot %d\n", slot_num);
+       trace_ocfs2_begin_truncate_log_recovery(slot_num);
 
        status = ocfs2_get_truncate_log_info(osb, slot_num, &tl_inode, &tl_bh);
        if (status < 0) {
@@ -6096,8 +6103,7 @@ int ocfs2_begin_truncate_log_recovery(struct ocfs2_super *osb,
 
        tl = &di->id2.i_dealloc;
        if (le16_to_cpu(tl->tl_used)) {
-               mlog(0, "We'll have %u logs to recover\n",
-                    le16_to_cpu(tl->tl_used));
+               trace_ocfs2_truncate_log_recovery_num(le16_to_cpu(tl->tl_used));
 
                *tl_copy = kmalloc(tl_bh->b_size, GFP_KERNEL);
                if (!(*tl_copy)) {
@@ -6154,8 +6160,9 @@ 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)le64_to_cpu(tl_copy->i_blkno));
+       trace_ocfs2_complete_truncate_log_recovery(
+               (unsigned long long)le64_to_cpu(tl_copy->i_blkno),
+               num_recs);
 
        mutex_lock(&tl_inode->i_mutex);
        for(i = 0; i < num_recs; i++) {
@@ -6313,8 +6320,8 @@ static int ocfs2_free_cached_blocks(struct ocfs2_super *osb,
                else
                        bg_blkno = ocfs2_which_suballoc_group(head->free_blk,
                                                              head->free_bit);
-               mlog(0, "Free bit: (bit %u, blkno %llu)\n",
-                    head->free_bit, (unsigned long long)head->free_blk);
+               trace_ocfs2_free_cached_blocks(
+                    (unsigned long long)head->free_blk, head->free_bit);
 
                ret = ocfs2_free_suballoc_bits(handle, inode, di_bh,
                                               head->free_bit, bg_blkno, 1);
@@ -6367,8 +6374,7 @@ int ocfs2_cache_cluster_dealloc(struct ocfs2_cached_dealloc_ctxt *ctxt,
                return ret;
        }
 
-       mlog(0, "Insert clusters: (bit %u, blk %llu)\n",
-            bit, (unsigned long long)blkno);
+       trace_ocfs2_cache_cluster_dealloc((unsigned long long)blkno, bit);
 
        item->free_blk = blkno;
        item->free_bit = bit;
@@ -6443,8 +6449,8 @@ int ocfs2_run_deallocs(struct ocfs2_super *osb,
                fl = ctxt->c_first_suballocator;
 
                if (fl->f_first) {
-                       mlog(0, "Free items: (type %u, slot %d)\n",
-                            fl->f_inode_type, fl->f_slot);
+                       trace_ocfs2_run_deallocs(fl->f_inode_type,
+                                                fl->f_slot);
                        ret2 = ocfs2_free_cached_blocks(osb,
                                                        fl->f_inode_type,
                                                        fl->f_slot,
@@ -6521,8 +6527,9 @@ int ocfs2_cache_block_dealloc(struct ocfs2_cached_dealloc_ctxt *ctxt,
                goto out;
        }
 
-       mlog(0, "Insert: (type %d, slot %u, bit %u, blk %llu)\n",
-            type, slot, bit, (unsigned long long)blkno);
+       trace_ocfs2_cache_block_dealloc(type, slot,
+                                       (unsigned long long)suballoc,
+                                       (unsigned long long)blkno, bit);
 
        item->free_bg = suballoc;
        item->free_blk = blkno;
@@ -7002,8 +7009,11 @@ start:
                goto bail;
        }
 
-       mlog(0, "inode->ip_clusters = %u, tree_depth = %u\n",
-            OCFS2_I(inode)->ip_clusters, path->p_tree_depth);
+       trace_ocfs2_commit_truncate(
+               (unsigned long long)OCFS2_I(inode)->ip_blkno,
+               new_highest_cpos,
+               OCFS2_I(inode)->ip_clusters,
+               path->p_tree_depth);
 
        /*
         * By now, el will point to the extent list on the bottom most