diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/fs.h | 13 | ||||
-rw-r--r-- | include/linux/jbd2.h | 12 | ||||
-rw-r--r-- | include/linux/journal-head.h | 2 | ||||
-rw-r--r-- | include/trace/events/jbd2.h | 29 |
4 files changed, 41 insertions, 15 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h index fa63f1b46103..c437f914d537 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -1872,19 +1872,6 @@ extern struct dentry *mount_pseudo(struct file_system_type *, char *, | |||
1872 | const struct dentry_operations *dops, | 1872 | const struct dentry_operations *dops, |
1873 | unsigned long); | 1873 | unsigned long); |
1874 | 1874 | ||
1875 | static inline void sb_mark_dirty(struct super_block *sb) | ||
1876 | { | ||
1877 | sb->s_dirt = 1; | ||
1878 | } | ||
1879 | static inline void sb_mark_clean(struct super_block *sb) | ||
1880 | { | ||
1881 | sb->s_dirt = 0; | ||
1882 | } | ||
1883 | static inline int sb_is_dirty(struct super_block *sb) | ||
1884 | { | ||
1885 | return sb->s_dirt; | ||
1886 | } | ||
1887 | |||
1888 | /* Alas, no aliases. Too much hassle with bringing module.h everywhere */ | 1875 | /* Alas, no aliases. Too much hassle with bringing module.h everywhere */ |
1889 | #define fops_get(fops) \ | 1876 | #define fops_get(fops) \ |
1890 | (((fops) && try_module_get((fops)->owner) ? (fops) : NULL)) | 1877 | (((fops) && try_module_get((fops)->owner) ? (fops) : NULL)) |
diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h index 5557baefed60..912c30a8ddb1 100644 --- a/include/linux/jbd2.h +++ b/include/linux/jbd2.h | |||
@@ -971,6 +971,10 @@ extern void __journal_clean_data_list(transaction_t *transaction); | |||
971 | /* Log buffer allocation */ | 971 | /* Log buffer allocation */ |
972 | extern struct journal_head * jbd2_journal_get_descriptor_buffer(journal_t *); | 972 | extern struct journal_head * jbd2_journal_get_descriptor_buffer(journal_t *); |
973 | int jbd2_journal_next_log_block(journal_t *, unsigned long long *); | 973 | int jbd2_journal_next_log_block(journal_t *, unsigned long long *); |
974 | int jbd2_journal_get_log_tail(journal_t *journal, tid_t *tid, | ||
975 | unsigned long *block); | ||
976 | void __jbd2_update_log_tail(journal_t *journal, tid_t tid, unsigned long block); | ||
977 | void jbd2_update_log_tail(journal_t *journal, tid_t tid, unsigned long block); | ||
974 | 978 | ||
975 | /* Commit management */ | 979 | /* Commit management */ |
976 | extern void jbd2_journal_commit_transaction(journal_t *); | 980 | extern void jbd2_journal_commit_transaction(journal_t *); |
@@ -1020,6 +1024,11 @@ jbd2_journal_write_metadata_buffer(transaction_t *transaction, | |||
1020 | /* Transaction locking */ | 1024 | /* Transaction locking */ |
1021 | extern void __wait_on_journal (journal_t *); | 1025 | extern void __wait_on_journal (journal_t *); |
1022 | 1026 | ||
1027 | /* Transaction cache support */ | ||
1028 | extern void jbd2_journal_destroy_transaction_cache(void); | ||
1029 | extern int jbd2_journal_init_transaction_cache(void); | ||
1030 | extern void jbd2_journal_free_transaction(transaction_t *); | ||
1031 | |||
1023 | /* | 1032 | /* |
1024 | * Journal locking. | 1033 | * Journal locking. |
1025 | * | 1034 | * |
@@ -1082,7 +1091,8 @@ extern int jbd2_journal_destroy (journal_t *); | |||
1082 | extern int jbd2_journal_recover (journal_t *journal); | 1091 | extern int jbd2_journal_recover (journal_t *journal); |
1083 | extern int jbd2_journal_wipe (journal_t *, int); | 1092 | extern int jbd2_journal_wipe (journal_t *, int); |
1084 | extern int jbd2_journal_skip_recovery (journal_t *); | 1093 | extern int jbd2_journal_skip_recovery (journal_t *); |
1085 | extern void jbd2_journal_update_superblock (journal_t *, int); | 1094 | extern void jbd2_journal_update_sb_log_tail (journal_t *, tid_t, |
1095 | unsigned long, int); | ||
1086 | extern void __jbd2_journal_abort_hard (journal_t *); | 1096 | extern void __jbd2_journal_abort_hard (journal_t *); |
1087 | extern void jbd2_journal_abort (journal_t *, int); | 1097 | extern void jbd2_journal_abort (journal_t *, int); |
1088 | extern int jbd2_journal_errno (journal_t *); | 1098 | extern int jbd2_journal_errno (journal_t *); |
diff --git a/include/linux/journal-head.h b/include/linux/journal-head.h index 423cb6d78ee0..c18b46f8aeeb 100644 --- a/include/linux/journal-head.h +++ b/include/linux/journal-head.h | |||
@@ -66,6 +66,8 @@ struct journal_head { | |||
66 | * transaction (if there is one). Only applies to buffers on a | 66 | * transaction (if there is one). Only applies to buffers on a |
67 | * transaction's data or metadata journaling list. | 67 | * transaction's data or metadata journaling list. |
68 | * [j_list_lock] [jbd_lock_bh_state()] | 68 | * [j_list_lock] [jbd_lock_bh_state()] |
69 | * Either of these locks is enough for reading, both are needed for | ||
70 | * changes. | ||
69 | */ | 71 | */ |
70 | transaction_t *b_transaction; | 72 | transaction_t *b_transaction; |
71 | 73 | ||
diff --git a/include/trace/events/jbd2.h b/include/trace/events/jbd2.h index 75964412ddbb..127993dbf322 100644 --- a/include/trace/events/jbd2.h +++ b/include/trace/events/jbd2.h | |||
@@ -81,6 +81,13 @@ DEFINE_EVENT(jbd2_commit, jbd2_commit_logging, | |||
81 | TP_ARGS(journal, commit_transaction) | 81 | TP_ARGS(journal, commit_transaction) |
82 | ); | 82 | ); |
83 | 83 | ||
84 | DEFINE_EVENT(jbd2_commit, jbd2_drop_transaction, | ||
85 | |||
86 | TP_PROTO(journal_t *journal, transaction_t *commit_transaction), | ||
87 | |||
88 | TP_ARGS(journal, commit_transaction) | ||
89 | ); | ||
90 | |||
84 | TRACE_EVENT(jbd2_end_commit, | 91 | TRACE_EVENT(jbd2_end_commit, |
85 | TP_PROTO(journal_t *journal, transaction_t *commit_transaction), | 92 | TP_PROTO(journal_t *journal, transaction_t *commit_transaction), |
86 | 93 | ||
@@ -200,7 +207,7 @@ TRACE_EVENT(jbd2_checkpoint_stats, | |||
200 | __entry->forced_to_close, __entry->written, __entry->dropped) | 207 | __entry->forced_to_close, __entry->written, __entry->dropped) |
201 | ); | 208 | ); |
202 | 209 | ||
203 | TRACE_EVENT(jbd2_cleanup_journal_tail, | 210 | TRACE_EVENT(jbd2_update_log_tail, |
204 | 211 | ||
205 | TP_PROTO(journal_t *journal, tid_t first_tid, | 212 | TP_PROTO(journal_t *journal, tid_t first_tid, |
206 | unsigned long block_nr, unsigned long freed), | 213 | unsigned long block_nr, unsigned long freed), |
@@ -229,6 +236,26 @@ TRACE_EVENT(jbd2_cleanup_journal_tail, | |||
229 | __entry->block_nr, __entry->freed) | 236 | __entry->block_nr, __entry->freed) |
230 | ); | 237 | ); |
231 | 238 | ||
239 | TRACE_EVENT(jbd2_write_superblock, | ||
240 | |||
241 | TP_PROTO(journal_t *journal, int write_op), | ||
242 | |||
243 | TP_ARGS(journal, write_op), | ||
244 | |||
245 | TP_STRUCT__entry( | ||
246 | __field( dev_t, dev ) | ||
247 | __field( int, write_op ) | ||
248 | ), | ||
249 | |||
250 | TP_fast_assign( | ||
251 | __entry->dev = journal->j_fs_dev->bd_dev; | ||
252 | __entry->write_op = write_op; | ||
253 | ), | ||
254 | |||
255 | TP_printk("dev %d,%d write_op %x", MAJOR(__entry->dev), | ||
256 | MINOR(__entry->dev), __entry->write_op) | ||
257 | ); | ||
258 | |||
232 | #endif /* _TRACE_JBD2_H */ | 259 | #endif /* _TRACE_JBD2_H */ |
233 | 260 | ||
234 | /* This part must be outside protection */ | 261 | /* This part must be outside protection */ |