#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 */
* 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
/*
*/
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