]> Pileus Git - ~andy/linux/blobdiff - fs/btrfs/ctree.h
Btrfs: fix unprotected ->log_batch
[~andy/linux] / fs / btrfs / ctree.h
index 4b81ea3fa1b2afe6dbe100ff870b660b006a4490..6923b9e4f90dff571fd1c00753784fc43a622cb9 100644 (file)
@@ -1028,12 +1028,22 @@ struct btrfs_space_info {
        wait_queue_head_t wait;
 };
 
+#define        BTRFS_BLOCK_RSV_GLOBAL          1
+#define        BTRFS_BLOCK_RSV_DELALLOC        2
+#define        BTRFS_BLOCK_RSV_TRANS           3
+#define        BTRFS_BLOCK_RSV_CHUNK           4
+#define        BTRFS_BLOCK_RSV_DELOPS          5
+#define        BTRFS_BLOCK_RSV_EMPTY           6
+#define        BTRFS_BLOCK_RSV_TEMP            7
+
 struct btrfs_block_rsv {
        u64 size;
        u64 reserved;
        struct btrfs_space_info *space_info;
        spinlock_t lock;
-       unsigned int full;
+       unsigned short full;
+       unsigned short type;
+       unsigned short failfast;
 };
 
 /*
@@ -1481,9 +1491,9 @@ struct btrfs_root {
        wait_queue_head_t log_commit_wait[2];
        atomic_t log_writers;
        atomic_t log_commit[2];
+       atomic_t log_batch;
        unsigned long log_transid;
        unsigned long last_log_commit;
-       unsigned long log_batch;
        pid_t log_start_pid;
        bool log_multiple_pids;
 
@@ -2874,8 +2884,9 @@ int btrfs_delalloc_reserve_metadata(struct inode *inode, u64 num_bytes);
 void btrfs_delalloc_release_metadata(struct inode *inode, u64 num_bytes);
 int btrfs_delalloc_reserve_space(struct inode *inode, u64 num_bytes);
 void btrfs_delalloc_release_space(struct inode *inode, u64 num_bytes);
-void btrfs_init_block_rsv(struct btrfs_block_rsv *rsv);
-struct btrfs_block_rsv *btrfs_alloc_block_rsv(struct btrfs_root *root);
+void btrfs_init_block_rsv(struct btrfs_block_rsv *rsv, unsigned short type);
+struct btrfs_block_rsv *btrfs_alloc_block_rsv(struct btrfs_root *root,
+                                             unsigned short type);
 void btrfs_free_block_rsv(struct btrfs_root *root,
                          struct btrfs_block_rsv *rsv);
 int btrfs_block_rsv_add(struct btrfs_root *root,
@@ -3249,6 +3260,8 @@ int btrfs_unlink_subvol(struct btrfs_trans_handle *trans,
                        struct btrfs_root *root,
                        struct inode *dir, u64 objectid,
                        const char *name, int name_len);
+int btrfs_truncate_page(struct inode *inode, loff_t from, loff_t len,
+                       int front);
 int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans,
                               struct btrfs_root *root,
                               struct inode *inode, u64 new_size,
@@ -3313,8 +3326,8 @@ int btrfs_add_inode_defrag(struct btrfs_trans_handle *trans,
                           struct inode *inode);
 int btrfs_run_defrag_inodes(struct btrfs_fs_info *fs_info);
 int btrfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync);
-int btrfs_drop_extent_cache(struct inode *inode, u64 start, u64 end,
-                           int skip_pinned);
+void btrfs_drop_extent_cache(struct inode *inode, u64 start, u64 end,
+                            int skip_pinned);
 int btrfs_replace_extent_cache(struct inode *inode, struct extent_map *replace,
                               u64 start, u64 end, int skip_pinned,
                               int modified);
@@ -3322,10 +3335,10 @@ extern const struct file_operations btrfs_file_operations;
 int __btrfs_drop_extents(struct btrfs_trans_handle *trans,
                         struct btrfs_root *root, struct inode *inode,
                         struct btrfs_path *path, u64 start, u64 end,
-                        u64 *hint_byte, int drop_cache);
+                        u64 *drop_end, int drop_cache);
 int btrfs_drop_extents(struct btrfs_trans_handle *trans,
                       struct btrfs_root *root, struct inode *inode, u64 start,
-                      u64 end, u64 *hint_byte, int drop_cache);
+                      u64 end, int drop_cache);
 int btrfs_mark_extent_written(struct btrfs_trans_handle *trans,
                              struct inode *inode, u64 start, u64 end);
 int btrfs_release_file(struct inode *inode, struct file *file);