Merge branch 'topic/misc' into for-linus
[safe/jmp/linux-2.6] / fs / btrfs / btrfs_inode.h
index ea1ea0a..7a4dee1 100644 (file)
@@ -44,9 +44,6 @@ struct btrfs_inode {
         */
        struct extent_io_tree io_failure_tree;
 
-       /* held while inesrting or deleting extents from files */
-       struct mutex extent_mutex;
-
        /* held while logging the inode in tree-log.c */
        struct mutex log_mutex;
 
@@ -86,6 +83,12 @@ struct btrfs_inode {
         * transid of the trans_handle that last modified this inode
         */
        u64 last_trans;
+
+       /*
+        * log transid when this inode was last modified
+        */
+       u64 last_sub_trans;
+
        /*
         * transid that last logged this inode
         */
@@ -128,6 +131,16 @@ struct btrfs_inode {
        u64 last_unlink_trans;
 
        /*
+        * Counters to keep track of the number of extent item's we may use due
+        * to delalloc and such.  outstanding_extents is the number of extent
+        * items we think we'll end up using, and reserved_extents is the number
+        * of extent items we've reserved metadata for.
+        */
+       spinlock_t accounting_lock;
+       int reserved_extents;
+       int outstanding_extents;
+
+       /*
         * ordered_data_close is set by truncate when a file that used
         * to have good data has been truncated to zero.  When it is set
         * the btrfs file release call will add this inode to the
@@ -138,6 +151,12 @@ struct btrfs_inode {
         * of these.
         */
        unsigned ordered_data_close:1;
+       unsigned dummy_inode:1;
+
+       /*
+        * always compress this one file
+        */
+       unsigned force_compress:1;
 
        struct inode vfs_inode;
 };
@@ -149,7 +168,7 @@ static inline struct btrfs_inode *BTRFS_I(struct inode *inode)
 
 static inline void btrfs_i_size_write(struct inode *inode, u64 size)
 {
-       inode->i_size = size;
+       i_size_write(inode, size);
        BTRFS_I(inode)->disk_i_size = size;
 }