]> git.itanic.dy.fi Git - linux-stable/blobdiff - fs/ext4/ext4.h
ext4: use buckets for cr 1 block scan instead of rbtree
[linux-stable] / fs / ext4 / ext4.h
index adfc30ee4b7beac49b6a5ce3fd8c4d97b8fc27aa..0d86931269bfcf45bc82846bfc6580c91bd7a05a 100644 (file)
@@ -167,8 +167,6 @@ enum SHIFT_DIRECTION {
 #define EXT4_MB_CR0_OPTIMIZED          0x8000
 /* Avg fragment size rb tree lookup succeeded at least once for cr = 1 */
 #define EXT4_MB_CR1_OPTIMIZED          0x00010000
-/* Perform linear traversal for one group */
-#define EXT4_MB_SEARCH_NEXT_LINEAR     0x00020000
 struct ext4_allocation_request {
        /* target inode for block we're allocating */
        struct inode *inode;
@@ -1589,8 +1587,8 @@ struct ext4_sb_info {
        struct list_head s_discard_list;
        struct work_struct s_discard_work;
        atomic_t s_retry_alloc_pending;
-       struct rb_root s_mb_avg_fragment_size_root;
-       rwlock_t s_mb_rb_lock;
+       struct list_head *s_mb_avg_fragment_size;
+       rwlock_t *s_mb_avg_fragment_size_locks;
        struct list_head *s_mb_largest_free_orders;
        rwlock_t *s_mb_largest_free_orders_locks;
 
@@ -3402,6 +3400,8 @@ struct ext4_group_info {
        ext4_grpblk_t   bb_first_free;  /* first free block */
        ext4_grpblk_t   bb_free;        /* total free blocks */
        ext4_grpblk_t   bb_fragments;   /* nr of freespace fragments */
+       int             bb_avg_fragment_size_order;     /* order of average
+                                                          fragment in BG */
        ext4_grpblk_t   bb_largest_free_order;/* order of largest frag in BG */
        ext4_group_t    bb_group;       /* Group number */
        struct          list_head bb_prealloc_list;
@@ -3409,7 +3409,7 @@ struct ext4_group_info {
        void            *bb_bitmap;
 #endif
        struct rw_semaphore alloc_sem;
-       struct rb_node  bb_avg_fragment_size_rb;
+       struct list_head bb_avg_fragment_size_node;
        struct list_head bb_largest_free_order_node;
        ext4_grpblk_t   bb_counters[];  /* Nr of free power-of-two-block
                                         * regions, index is order.