]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - fs/btrfs/ordered-data.h
Btrfs: make sure logged extents complete in the current transaction V3
[karo-tx-linux.git] / fs / btrfs / ordered-data.h
index d81a274d621ee47cf2510b2323997d67567a3a88..0124bffc775fd5e5aad8a750f2e9094ff904b27c 100644 (file)
@@ -71,6 +71,8 @@ struct btrfs_ordered_sum {
                                       ordered extent */
 #define BTRFS_ORDERED_TRUNCATED 9 /* Set when we have to truncate an extent */
 
+#define BTRFS_ORDERED_LOGGED 10 /* Set when we've waited on this ordered extent
+                                * in the logging code. */
 struct btrfs_ordered_extent {
        /* logical offset in the file */
        u64 file_offset;
@@ -121,6 +123,9 @@ struct btrfs_ordered_extent {
        /* If we need to wait on this to be done */
        struct list_head log_list;
 
+       /* If the transaction needs to wait on this ordered extent */
+       struct list_head trans_list;
+
        /* used to wait for the BTRFS_ORDERED_COMPLETE bit */
        wait_queue_head_t wait;
 
@@ -197,7 +202,8 @@ void btrfs_get_logged_extents(struct inode *inode,
 void btrfs_put_logged_extents(struct list_head *logged_list);
 void btrfs_submit_logged_extents(struct list_head *logged_list,
                                 struct btrfs_root *log);
-void btrfs_wait_logged_extents(struct btrfs_root *log, u64 transid);
+void btrfs_wait_logged_extents(struct btrfs_trans_handle *trans,
+                              struct btrfs_root *log, u64 transid);
 void btrfs_free_logged_extents(struct btrfs_root *log, u64 transid);
 int __init ordered_data_init(void);
 void ordered_data_exit(void);