Loading fs/jbd2/journal.c +0 −67 Original line number Diff line number Diff line Loading @@ -2390,73 +2390,6 @@ static void __exit journal_exit(void) jbd2_journal_destroy_caches(); } /* * jbd2_dev_to_name is a utility function used by the jbd2 and ext4 * tracing infrastructure to map a dev_t to a device name. * * The caller should use rcu_read_lock() in order to make sure the * device name stays valid until its done with it. We use * rcu_read_lock() as well to make sure we're safe in case the caller * gets sloppy, and because rcu_read_lock() is cheap and can be safely * nested. */ struct devname_cache { struct rcu_head rcu; dev_t device; char devname[BDEVNAME_SIZE]; }; #define CACHE_SIZE_BITS 6 static struct devname_cache *devcache[1 << CACHE_SIZE_BITS]; static DEFINE_SPINLOCK(devname_cache_lock); static void free_devcache(struct rcu_head *rcu) { kfree(rcu); } const char *jbd2_dev_to_name(dev_t device) { int i = hash_32(device, CACHE_SIZE_BITS); char *ret; struct block_device *bd; static struct devname_cache *new_dev; rcu_read_lock(); if (devcache[i] && devcache[i]->device == device) { ret = devcache[i]->devname; rcu_read_unlock(); return ret; } rcu_read_unlock(); new_dev = kmalloc(sizeof(struct devname_cache), GFP_KERNEL); if (!new_dev) return "NODEV-ALLOCFAILURE"; /* Something non-NULL */ bd = bdget(device); spin_lock(&devname_cache_lock); if (devcache[i]) { if (devcache[i]->device == device) { kfree(new_dev); bdput(bd); ret = devcache[i]->devname; spin_unlock(&devname_cache_lock); return ret; } call_rcu(&devcache[i]->rcu, free_devcache); } devcache[i] = new_dev; devcache[i]->device = device; if (bd) { bdevname(bd, devcache[i]->devname); bdput(bd); } else __bdevname(device, devcache[i]->devname); ret = devcache[i]->devname; spin_unlock(&devname_cache_lock); return ret; } EXPORT_SYMBOL(jbd2_dev_to_name); MODULE_LICENSE("GPL"); module_init(journal_init); module_exit(journal_exit); Loading include/linux/jbd2.h +0 −6 Original line number Diff line number Diff line Loading @@ -1329,12 +1329,6 @@ extern int jbd_blocks_per_page(struct inode *inode); #define BUFFER_TRACE2(bh, bh2, info) do {} while (0) #define JBUFFER_TRACE(jh, info) do {} while (0) /* * jbd2_dev_to_name is a utility function used by the jbd2 and ext4 * tracing infrastructure to map a dev_t to a device name. */ extern const char *jbd2_dev_to_name(dev_t device); #endif /* __KERNEL__ */ #endif /* _LINUX_JBD2_H */ include/trace/events/jbd2.h +19 −17 Original line number Diff line number Diff line Loading @@ -26,8 +26,8 @@ TRACE_EVENT(jbd2_checkpoint, __entry->result = result; ), TP_printk("dev %s result %d", jbd2_dev_to_name(__entry->dev), __entry->result) TP_printk("dev %d,%d result %d", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->result) ); DECLARE_EVENT_CLASS(jbd2_commit, Loading @@ -48,9 +48,9 @@ DECLARE_EVENT_CLASS(jbd2_commit, __entry->transaction = commit_transaction->t_tid; ), TP_printk("dev %s transaction %d sync %d", jbd2_dev_to_name(__entry->dev), __entry->transaction, __entry->sync_commit) TP_printk("dev %d,%d transaction %d sync %d", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->transaction, __entry->sync_commit) ); DEFINE_EVENT(jbd2_commit, jbd2_start_commit, Loading Loading @@ -100,9 +100,9 @@ TRACE_EVENT(jbd2_end_commit, __entry->head = journal->j_tail_sequence; ), TP_printk("dev %s transaction %d sync %d head %d", jbd2_dev_to_name(__entry->dev), __entry->transaction, __entry->sync_commit, __entry->head) TP_printk("dev %d,%d transaction %d sync %d head %d", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->transaction, __entry->sync_commit, __entry->head) ); TRACE_EVENT(jbd2_submit_inode_data, Loading @@ -120,8 +120,9 @@ TRACE_EVENT(jbd2_submit_inode_data, __entry->ino = inode->i_ino; ), TP_printk("dev %s ino %lu", jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino) TP_printk("dev %d,%d ino %lu", MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long) __entry->ino) ); TRACE_EVENT(jbd2_run_stats, Loading Loading @@ -156,9 +157,9 @@ TRACE_EVENT(jbd2_run_stats, __entry->blocks_logged = stats->rs_blocks_logged; ), TP_printk("dev %s tid %lu wait %u running %u locked %u flushing %u " TP_printk("dev %d,%d tid %lu wait %u running %u locked %u flushing %u " "logging %u handle_count %u blocks %u blocks_logged %u", jbd2_dev_to_name(__entry->dev), __entry->tid, MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid, jiffies_to_msecs(__entry->wait), jiffies_to_msecs(__entry->running), jiffies_to_msecs(__entry->locked), Loading Loading @@ -192,9 +193,9 @@ TRACE_EVENT(jbd2_checkpoint_stats, __entry->dropped = stats->cs_dropped; ), TP_printk("dev %s tid %lu chp_time %u forced_to_close %u " TP_printk("dev %d,%d tid %lu chp_time %u forced_to_close %u " "written %u dropped %u", jbd2_dev_to_name(__entry->dev), __entry->tid, MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid, jiffies_to_msecs(__entry->chp_time), __entry->forced_to_close, __entry->written, __entry->dropped) ); Loading Loading @@ -222,9 +223,10 @@ TRACE_EVENT(jbd2_cleanup_journal_tail, __entry->freed = freed; ), TP_printk("dev %s from %u to %u offset %lu freed %lu", jbd2_dev_to_name(__entry->dev), __entry->tail_sequence, __entry->first_tid, __entry->block_nr, __entry->freed) TP_printk("dev %d,%d from %u to %u offset %lu freed %lu", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tail_sequence, __entry->first_tid, __entry->block_nr, __entry->freed) ); #endif /* _TRACE_JBD2_H */ Loading Loading
fs/jbd2/journal.c +0 −67 Original line number Diff line number Diff line Loading @@ -2390,73 +2390,6 @@ static void __exit journal_exit(void) jbd2_journal_destroy_caches(); } /* * jbd2_dev_to_name is a utility function used by the jbd2 and ext4 * tracing infrastructure to map a dev_t to a device name. * * The caller should use rcu_read_lock() in order to make sure the * device name stays valid until its done with it. We use * rcu_read_lock() as well to make sure we're safe in case the caller * gets sloppy, and because rcu_read_lock() is cheap and can be safely * nested. */ struct devname_cache { struct rcu_head rcu; dev_t device; char devname[BDEVNAME_SIZE]; }; #define CACHE_SIZE_BITS 6 static struct devname_cache *devcache[1 << CACHE_SIZE_BITS]; static DEFINE_SPINLOCK(devname_cache_lock); static void free_devcache(struct rcu_head *rcu) { kfree(rcu); } const char *jbd2_dev_to_name(dev_t device) { int i = hash_32(device, CACHE_SIZE_BITS); char *ret; struct block_device *bd; static struct devname_cache *new_dev; rcu_read_lock(); if (devcache[i] && devcache[i]->device == device) { ret = devcache[i]->devname; rcu_read_unlock(); return ret; } rcu_read_unlock(); new_dev = kmalloc(sizeof(struct devname_cache), GFP_KERNEL); if (!new_dev) return "NODEV-ALLOCFAILURE"; /* Something non-NULL */ bd = bdget(device); spin_lock(&devname_cache_lock); if (devcache[i]) { if (devcache[i]->device == device) { kfree(new_dev); bdput(bd); ret = devcache[i]->devname; spin_unlock(&devname_cache_lock); return ret; } call_rcu(&devcache[i]->rcu, free_devcache); } devcache[i] = new_dev; devcache[i]->device = device; if (bd) { bdevname(bd, devcache[i]->devname); bdput(bd); } else __bdevname(device, devcache[i]->devname); ret = devcache[i]->devname; spin_unlock(&devname_cache_lock); return ret; } EXPORT_SYMBOL(jbd2_dev_to_name); MODULE_LICENSE("GPL"); module_init(journal_init); module_exit(journal_exit); Loading
include/linux/jbd2.h +0 −6 Original line number Diff line number Diff line Loading @@ -1329,12 +1329,6 @@ extern int jbd_blocks_per_page(struct inode *inode); #define BUFFER_TRACE2(bh, bh2, info) do {} while (0) #define JBUFFER_TRACE(jh, info) do {} while (0) /* * jbd2_dev_to_name is a utility function used by the jbd2 and ext4 * tracing infrastructure to map a dev_t to a device name. */ extern const char *jbd2_dev_to_name(dev_t device); #endif /* __KERNEL__ */ #endif /* _LINUX_JBD2_H */
include/trace/events/jbd2.h +19 −17 Original line number Diff line number Diff line Loading @@ -26,8 +26,8 @@ TRACE_EVENT(jbd2_checkpoint, __entry->result = result; ), TP_printk("dev %s result %d", jbd2_dev_to_name(__entry->dev), __entry->result) TP_printk("dev %d,%d result %d", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->result) ); DECLARE_EVENT_CLASS(jbd2_commit, Loading @@ -48,9 +48,9 @@ DECLARE_EVENT_CLASS(jbd2_commit, __entry->transaction = commit_transaction->t_tid; ), TP_printk("dev %s transaction %d sync %d", jbd2_dev_to_name(__entry->dev), __entry->transaction, __entry->sync_commit) TP_printk("dev %d,%d transaction %d sync %d", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->transaction, __entry->sync_commit) ); DEFINE_EVENT(jbd2_commit, jbd2_start_commit, Loading Loading @@ -100,9 +100,9 @@ TRACE_EVENT(jbd2_end_commit, __entry->head = journal->j_tail_sequence; ), TP_printk("dev %s transaction %d sync %d head %d", jbd2_dev_to_name(__entry->dev), __entry->transaction, __entry->sync_commit, __entry->head) TP_printk("dev %d,%d transaction %d sync %d head %d", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->transaction, __entry->sync_commit, __entry->head) ); TRACE_EVENT(jbd2_submit_inode_data, Loading @@ -120,8 +120,9 @@ TRACE_EVENT(jbd2_submit_inode_data, __entry->ino = inode->i_ino; ), TP_printk("dev %s ino %lu", jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino) TP_printk("dev %d,%d ino %lu", MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long) __entry->ino) ); TRACE_EVENT(jbd2_run_stats, Loading Loading @@ -156,9 +157,9 @@ TRACE_EVENT(jbd2_run_stats, __entry->blocks_logged = stats->rs_blocks_logged; ), TP_printk("dev %s tid %lu wait %u running %u locked %u flushing %u " TP_printk("dev %d,%d tid %lu wait %u running %u locked %u flushing %u " "logging %u handle_count %u blocks %u blocks_logged %u", jbd2_dev_to_name(__entry->dev), __entry->tid, MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid, jiffies_to_msecs(__entry->wait), jiffies_to_msecs(__entry->running), jiffies_to_msecs(__entry->locked), Loading Loading @@ -192,9 +193,9 @@ TRACE_EVENT(jbd2_checkpoint_stats, __entry->dropped = stats->cs_dropped; ), TP_printk("dev %s tid %lu chp_time %u forced_to_close %u " TP_printk("dev %d,%d tid %lu chp_time %u forced_to_close %u " "written %u dropped %u", jbd2_dev_to_name(__entry->dev), __entry->tid, MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid, jiffies_to_msecs(__entry->chp_time), __entry->forced_to_close, __entry->written, __entry->dropped) ); Loading Loading @@ -222,9 +223,10 @@ TRACE_EVENT(jbd2_cleanup_journal_tail, __entry->freed = freed; ), TP_printk("dev %s from %u to %u offset %lu freed %lu", jbd2_dev_to_name(__entry->dev), __entry->tail_sequence, __entry->first_tid, __entry->block_nr, __entry->freed) TP_printk("dev %d,%d from %u to %u offset %lu freed %lu", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tail_sequence, __entry->first_tid, __entry->block_nr, __entry->freed) ); #endif /* _TRACE_JBD2_H */ Loading