vserver 1.9.5.x5
[linux-2.6.git] / include / linux / ext3_fs_i.h
index 48baa3f..5e781aa 100644 (file)
 #define _LINUX_EXT3_FS_I
 
 #include <linux/rwsem.h>
+#include <linux/rbtree.h>
+#include <linux/seqlock.h>
+
+struct ext3_reserve_window {
+       __u32                   _rsv_start;     /* First byte reserved */
+       __u32                   _rsv_end;       /* Last byte reserved or 0 */
+};
+
+struct ext3_reserve_window_node {
+       struct rb_node          rsv_node;
+       atomic_t                rsv_goal_size;
+       atomic_t                rsv_alloc_hit;
+       seqlock_t               rsv_seqlock;
+       struct ext3_reserve_window      rsv_window;
+};
+
+#define rsv_start rsv_window._rsv_start
+#define rsv_end rsv_window._rsv_end
 
 /*
- * second extended file system inode data in memory
+ * third extended file system inode data in memory
  */
 struct ext3_inode_info {
        __le32  i_data[15];     /* unconverted */
@@ -57,10 +75,9 @@ struct ext3_inode_info {
         * allocation when we detect linearly ascending requests.
         */
        __u32   i_next_alloc_goal;
-#ifdef EXT3_PREALLOCATE
-       __u32   i_prealloc_block;
-       __u32   i_prealloc_count;
-#endif
+       /* block reservation window */
+       struct ext3_reserve_window_node i_rsv_window;
+
        __u32   i_dir_start_lookup;
 #ifdef CONFIG_EXT3_FS_XATTR
        /*
@@ -96,6 +113,9 @@ struct ext3_inode_info {
         */
        loff_t  i_disksize;
 
+       /* on-disk additional length */
+       __u16 i_extra_isize;
+
        /*
         * truncate_sem is for serialising ext3_truncate() against
         * ext3_getblock().  In the 2.4 ext2 design, great chunks of inode's