diff options
Diffstat (limited to 'include/linux/jbd2.h')
-rw-r--r-- | include/linux/jbd2.h | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h index ec9cadf58227..622c3d8ca4ed 100644 --- a/include/linux/jbd2.h +++ b/include/linux/jbd2.h | |||
@@ -381,6 +381,38 @@ static inline void jbd_unlock_bh_journal_head(struct buffer_head *bh) | |||
381 | bit_spin_unlock(BH_JournalHead, &bh->b_state); | 381 | bit_spin_unlock(BH_JournalHead, &bh->b_state); |
382 | } | 382 | } |
383 | 383 | ||
384 | /* Flags in jbd_inode->i_flags */ | ||
385 | #define __JI_COMMIT_RUNNING 0 | ||
386 | /* Commit of the inode data in progress. We use this flag to protect us from | ||
387 | * concurrent deletion of inode. We cannot use reference to inode for this | ||
388 | * since we cannot afford doing last iput() on behalf of kjournald | ||
389 | */ | ||
390 | #define JI_COMMIT_RUNNING (1 << __JI_COMMIT_RUNNING) | ||
391 | |||
392 | /** | ||
393 | * struct jbd_inode is the structure linking inodes in ordered mode | ||
394 | * present in a transaction so that we can sync them during commit. | ||
395 | */ | ||
396 | struct jbd2_inode { | ||
397 | /* Which transaction does this inode belong to? Either the running | ||
398 | * transaction or the committing one. [j_list_lock] */ | ||
399 | transaction_t *i_transaction; | ||
400 | |||
401 | /* Pointer to the running transaction modifying inode's data in case | ||
402 | * there is already a committing transaction touching it. [j_list_lock] */ | ||
403 | transaction_t *i_next_transaction; | ||
404 | |||
405 | /* List of inodes in the i_transaction [j_list_lock] */ | ||
406 | struct list_head i_list; | ||
407 | |||
408 | /* VFS inode this inode belongs to [constant during the lifetime | ||
409 | * of the structure] */ | ||
410 | struct inode *i_vfs_inode; | ||
411 | |||
412 | /* Flags of inode [j_list_lock] */ | ||
413 | unsigned int i_flags; | ||
414 | }; | ||
415 | |||
384 | struct jbd2_revoke_table_s; | 416 | struct jbd2_revoke_table_s; |
385 | 417 | ||
386 | /** | 418 | /** |
@@ -567,6 +599,12 @@ struct transaction_s | |||
567 | struct journal_head *t_log_list; | 599 | struct journal_head *t_log_list; |
568 | 600 | ||
569 | /* | 601 | /* |
602 | * List of inodes whose data we've modified in data=ordered mode. | ||
603 | * [j_list_lock] | ||
604 | */ | ||
605 | struct list_head t_inode_list; | ||
606 | |||
607 | /* | ||
570 | * Protects info related to handles | 608 | * Protects info related to handles |
571 | */ | 609 | */ |
572 | spinlock_t t_handle_lock; | 610 | spinlock_t t_handle_lock; |
@@ -1046,6 +1084,10 @@ extern void jbd2_journal_ack_err (journal_t *); | |||
1046 | extern int jbd2_journal_clear_err (journal_t *); | 1084 | extern int jbd2_journal_clear_err (journal_t *); |
1047 | extern int jbd2_journal_bmap(journal_t *, unsigned long, unsigned long long *); | 1085 | extern int jbd2_journal_bmap(journal_t *, unsigned long, unsigned long long *); |
1048 | extern int jbd2_journal_force_commit(journal_t *); | 1086 | extern int jbd2_journal_force_commit(journal_t *); |
1087 | extern int jbd2_journal_file_inode(handle_t *handle, struct jbd2_inode *inode); | ||
1088 | extern int jbd2_journal_begin_ordered_truncate(struct jbd2_inode *inode, loff_t new_size); | ||
1089 | extern void jbd2_journal_init_jbd_inode(struct jbd2_inode *jinode, struct inode *inode); | ||
1090 | extern void jbd2_journal_release_jbd_inode(journal_t *journal, struct jbd2_inode *jinode); | ||
1049 | 1091 | ||
1050 | /* | 1092 | /* |
1051 | * journal_head management | 1093 | * journal_head management |