···247247 */248248249249 if (!ignore_cache && !ocfs2_buffer_uptodate(ci, bh)) {250250- mlog(ML_UPTODATE,251251- "bh (%llu), owner %llu not uptodate\n",250250+ trace_ocfs2_read_blocks_from_disk(252251 (unsigned long long)bh->b_blocknr,253252 (unsigned long long)ocfs2_metadata_cache_owner(ci));254253 /* We're using ignore_cache here to say
···2649264926502650DEFINE_OCFS2_ULL_EVENT(ocfs2_read_blocks_sync_jbd);2651265126522652+DEFINE_OCFS2_ULL_ULL_EVENT(ocfs2_read_blocks_from_disk);26532653+26522654DEFINE_OCFS2_ULL_INT_INT_INT_EVENT(ocfs2_read_blocks_bh);2653265526542656DEFINE_OCFS2_ULL_INT_INT_INT_EVENT(ocfs2_read_blocks_end);···26902688);2691268926922690/* End of trace events for fs/ocfs2/buffer_head_io.c. */26912691+26922692+/* Trace events for fs/ocfs2/uptodate.c. */26932693+26942694+DEFINE_OCFS2_ULL_EVENT(ocfs2_purge_copied_metadata_tree);26952695+26962696+DEFINE_OCFS2_ULL_UINT_UINT_EVENT(ocfs2_metadata_cache_purge);26972697+26982698+DEFINE_OCFS2_ULL_ULL_UINT_EVENT(ocfs2_buffer_cached_begin);26992699+27002700+TRACE_EVENT(ocfs2_buffer_cached_end,27012701+ TP_PROTO(int index, void *item),27022702+ TP_ARGS(index, item),27032703+ TP_STRUCT__entry(27042704+ __field(int, index)27052705+ __field(void *, item)27062706+ ),27072707+ TP_fast_assign(27082708+ __entry->index = index;27092709+ __entry->item = item;27102710+ ),27112711+ TP_printk("%d %p", __entry->index, __entry->item)27122712+);27132713+27142714+DEFINE_OCFS2_ULL_ULL_UINT_EVENT(ocfs2_append_cache_array);27152715+27162716+DEFINE_OCFS2_ULL_ULL_UINT_EVENT(ocfs2_insert_cache_tree);27172717+27182718+DEFINE_OCFS2_ULL_UINT_UINT_EVENT(ocfs2_expand_cache);27192719+27202720+DEFINE_OCFS2_ULL_UINT_UINT_EVENT(ocfs2_set_buffer_uptodate);27212721+27222722+DEFINE_OCFS2_ULL_ULL_EVENT(ocfs2_set_buffer_uptodate_begin);27232723+27242724+DEFINE_OCFS2_ULL_UINT_UINT_EVENT(ocfs2_remove_metadata_array);27252725+27262726+DEFINE_OCFS2_ULL_ULL_EVENT(ocfs2_remove_metadata_tree);27272727+27282728+DEFINE_OCFS2_ULL_ULL_UINT_UINT_EVENT(ocfs2_remove_block_from_cache);27292729+27302730+/* End of trace events for fs/ocfs2/uptodate.c. */26932731#endif /* _TRACE_OCFS2_H */2694273226952733/* This part must be outside protection */
+36-37
fs/ocfs2/uptodate.c
···5454#include <linux/buffer_head.h>5555#include <linux/rbtree.h>56565757-#define MLOG_MASK_PREFIX ML_UPTODATE5858-5957#include <cluster/masklog.h>60586159#include "ocfs2.h"62606361#include "inode.h"6462#include "uptodate.h"6363+#include "ocfs2_trace.h"65646665struct ocfs2_meta_cache_item {6766 struct rb_node c_node;···151152 while ((node = rb_last(root)) != NULL) {152153 item = rb_entry(node, struct ocfs2_meta_cache_item, c_node);153154154154- mlog(0, "Purge item %llu\n",155155- (unsigned long long) item->c_block);155155+ trace_ocfs2_purge_copied_metadata_tree(156156+ (unsigned long long) item->c_block);156157157158 rb_erase(&item->c_node, root);158159 kmem_cache_free(ocfs2_uptodate_cachep, item);···179180 tree = !(ci->ci_flags & OCFS2_CACHE_FL_INLINE);180181 to_purge = ci->ci_num_cached;181182182182- mlog(0, "Purge %u %s items from Owner %llu\n", to_purge,183183- tree ? "array" : "tree",184184- (unsigned long long)ocfs2_metadata_cache_owner(ci));183183+ trace_ocfs2_metadata_cache_purge(184184+ (unsigned long long)ocfs2_metadata_cache_owner(ci),185185+ to_purge, tree);185186186187 /* If we're a tree, save off the root so that we can safely187188 * initialize the cache. We do the work to free tree members···248249249250 ocfs2_metadata_cache_lock(ci);250251251251- mlog(0, "Owner %llu, query block %llu (inline = %u)\n",252252- (unsigned long long)ocfs2_metadata_cache_owner(ci),253253- (unsigned long long) bh->b_blocknr,254254- !!(ci->ci_flags & OCFS2_CACHE_FL_INLINE));252252+ trace_ocfs2_buffer_cached_begin(253253+ (unsigned long long)ocfs2_metadata_cache_owner(ci),254254+ (unsigned long long) bh->b_blocknr,255255+ !!(ci->ci_flags & OCFS2_CACHE_FL_INLINE));255256256257 if (ci->ci_flags & OCFS2_CACHE_FL_INLINE)257258 index = ocfs2_search_cache_array(ci, bh->b_blocknr);···260261261262 ocfs2_metadata_cache_unlock(ci);262263263263- mlog(0, "index = %d, item = %p\n", index, item);264264+ trace_ocfs2_buffer_cached_end(index, item);264265265266 return (index != -1) || (item != NULL);266267}···305306{306307 BUG_ON(ci->ci_num_cached >= OCFS2_CACHE_INFO_MAX_ARRAY);307308308308- mlog(0, "block %llu takes position %u\n", (unsigned long long) block,309309- ci->ci_num_cached);309309+ trace_ocfs2_append_cache_array(310310+ (unsigned long long)ocfs2_metadata_cache_owner(ci),311311+ (unsigned long long)block, ci->ci_num_cached);310312311313 ci->ci_cache.ci_array[ci->ci_num_cached] = block;312314 ci->ci_num_cached++;···324324 struct rb_node **p = &ci->ci_cache.ci_tree.rb_node;325325 struct ocfs2_meta_cache_item *tmp;326326327327- mlog(0, "Insert block %llu num = %u\n", (unsigned long long) block,328328- ci->ci_num_cached);327327+ trace_ocfs2_insert_cache_tree(328328+ (unsigned long long)ocfs2_metadata_cache_owner(ci),329329+ (unsigned long long)block, ci->ci_num_cached);329330330331 while(*p) {331332 parent = *p;···390389 tree[i] = NULL;391390 }392391393393- mlog(0, "Expanded %llu to a tree cache: flags 0x%x, num = %u\n",394394- (unsigned long long)ocfs2_metadata_cache_owner(ci),395395- ci->ci_flags, ci->ci_num_cached);392392+ trace_ocfs2_expand_cache(393393+ (unsigned long long)ocfs2_metadata_cache_owner(ci),394394+ ci->ci_flags, ci->ci_num_cached);396395}397396398397/* Slow path function - memory allocation is necessary. See the···406405 struct ocfs2_meta_cache_item *tree[OCFS2_CACHE_INFO_MAX_ARRAY] =407406 { NULL, };408407409409- mlog(0, "Owner %llu, block %llu, expand = %d\n",410410- (unsigned long long)ocfs2_metadata_cache_owner(ci),411411- (unsigned long long)block, expand_tree);408408+ trace_ocfs2_set_buffer_uptodate(409409+ (unsigned long long)ocfs2_metadata_cache_owner(ci),410410+ (unsigned long long)block, expand_tree);412411413412 new = kmem_cache_alloc(ocfs2_uptodate_cachep, GFP_NOFS);414413 if (!new) {···434433435434 ocfs2_metadata_cache_lock(ci);436435 if (ocfs2_insert_can_use_array(ci)) {437437- mlog(0, "Someone cleared the tree underneath us\n");438436 /* Ok, items were removed from the cache in between439437 * locks. Detect this and revert back to the fast path */440438 ocfs2_append_cache_array(ci, block);···490490 if (ocfs2_buffer_cached(ci, bh))491491 return;492492493493- mlog(0, "Owner %llu, inserting block %llu\n",494494- (unsigned long long)ocfs2_metadata_cache_owner(ci),495495- (unsigned long long)bh->b_blocknr);493493+ trace_ocfs2_set_buffer_uptodate_begin(494494+ (unsigned long long)ocfs2_metadata_cache_owner(ci),495495+ (unsigned long long)bh->b_blocknr);496496497497 /* No need to recheck under spinlock - insertion is guarded by498498 * co_io_lock() */···542542 BUG_ON(index >= ci->ci_num_cached);543543 BUG_ON(!ci->ci_num_cached);544544545545- mlog(0, "remove index %d (num_cached = %u\n", index,546546- ci->ci_num_cached);545545+ trace_ocfs2_remove_metadata_array(546546+ (unsigned long long)ocfs2_metadata_cache_owner(ci),547547+ index, ci->ci_num_cached);547548548549 ci->ci_num_cached--;549550···560559static void ocfs2_remove_metadata_tree(struct ocfs2_caching_info *ci,561560 struct ocfs2_meta_cache_item *item)562561{563563- mlog(0, "remove block %llu from tree\n",564564- (unsigned long long) item->c_block);562562+ trace_ocfs2_remove_metadata_tree(563563+ (unsigned long long)ocfs2_metadata_cache_owner(ci),564564+ (unsigned long long)item->c_block);565565566566 rb_erase(&item->c_node, &ci->ci_cache.ci_tree);567567 ci->ci_num_cached--;···575573 struct ocfs2_meta_cache_item *item = NULL;576574577575 ocfs2_metadata_cache_lock(ci);578578- mlog(0, "Owner %llu, remove %llu, items = %u, array = %u\n",579579- (unsigned long long)ocfs2_metadata_cache_owner(ci),580580- (unsigned long long) block, ci->ci_num_cached,581581- ci->ci_flags & OCFS2_CACHE_FL_INLINE);576576+ trace_ocfs2_remove_block_from_cache(577577+ (unsigned long long)ocfs2_metadata_cache_owner(ci),578578+ (unsigned long long) block, ci->ci_num_cached,579579+ ci->ci_flags);582580583581 if (ci->ci_flags & OCFS2_CACHE_FL_INLINE) {584582 index = ocfs2_search_cache_array(ci, block);···627625 0, SLAB_HWCACHE_ALIGN, NULL);628626 if (!ocfs2_uptodate_cachep)629627 return -ENOMEM;630630-631631- mlog(0, "%u inlined cache items per inode.\n",632632- OCFS2_CACHE_INFO_MAX_ARRAY);633628634629 return 0;635630}