diff options
Diffstat (limited to 'include/linux/raid/raid5.h')
-rw-r--r-- | include/linux/raid/raid5.h | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/include/linux/raid/raid5.h b/include/linux/raid/raid5.h index 394da8207b34..914af667044f 100644 --- a/include/linux/raid/raid5.h +++ b/include/linux/raid/raid5.h | |||
@@ -135,6 +135,7 @@ struct stripe_head { | |||
135 | atomic_t count; /* nr of active thread/requests */ | 135 | atomic_t count; /* nr of active thread/requests */ |
136 | spinlock_t lock; | 136 | spinlock_t lock; |
137 | int bm_seq; /* sequence number for bitmap flushes */ | 137 | int bm_seq; /* sequence number for bitmap flushes */ |
138 | int disks; /* disks in stripe */ | ||
138 | struct r5dev { | 139 | struct r5dev { |
139 | struct bio req; | 140 | struct bio req; |
140 | struct bio_vec vec; | 141 | struct bio_vec vec; |
@@ -156,6 +157,7 @@ struct stripe_head { | |||
156 | #define R5_ReadError 8 /* seen a read error here recently */ | 157 | #define R5_ReadError 8 /* seen a read error here recently */ |
157 | #define R5_ReWrite 9 /* have tried to over-write the readerror */ | 158 | #define R5_ReWrite 9 /* have tried to over-write the readerror */ |
158 | 159 | ||
160 | #define R5_Expanded 10 /* This block now has post-expand data */ | ||
159 | /* | 161 | /* |
160 | * Write method | 162 | * Write method |
161 | */ | 163 | */ |
@@ -174,7 +176,9 @@ struct stripe_head { | |||
174 | #define STRIPE_DELAYED 6 | 176 | #define STRIPE_DELAYED 6 |
175 | #define STRIPE_DEGRADED 7 | 177 | #define STRIPE_DEGRADED 7 |
176 | #define STRIPE_BIT_DELAY 8 | 178 | #define STRIPE_BIT_DELAY 8 |
177 | 179 | #define STRIPE_EXPANDING 9 | |
180 | #define STRIPE_EXPAND_SOURCE 10 | ||
181 | #define STRIPE_EXPAND_READY 11 | ||
178 | /* | 182 | /* |
179 | * Plugging: | 183 | * Plugging: |
180 | * | 184 | * |
@@ -211,12 +215,24 @@ struct raid5_private_data { | |||
211 | int raid_disks, working_disks, failed_disks; | 215 | int raid_disks, working_disks, failed_disks; |
212 | int max_nr_stripes; | 216 | int max_nr_stripes; |
213 | 217 | ||
218 | /* used during an expand */ | ||
219 | sector_t expand_progress; /* MaxSector when no expand happening */ | ||
220 | sector_t expand_lo; /* from here up to expand_progress it out-of-bounds | ||
221 | * as we haven't flushed the metadata yet | ||
222 | */ | ||
223 | int previous_raid_disks; | ||
224 | |||
214 | struct list_head handle_list; /* stripes needing handling */ | 225 | struct list_head handle_list; /* stripes needing handling */ |
215 | struct list_head delayed_list; /* stripes that have plugged requests */ | 226 | struct list_head delayed_list; /* stripes that have plugged requests */ |
216 | struct list_head bitmap_list; /* stripes delaying awaiting bitmap update */ | 227 | struct list_head bitmap_list; /* stripes delaying awaiting bitmap update */ |
217 | atomic_t preread_active_stripes; /* stripes with scheduled io */ | 228 | atomic_t preread_active_stripes; /* stripes with scheduled io */ |
218 | 229 | ||
219 | char cache_name[20]; | 230 | atomic_t reshape_stripes; /* stripes with pending writes for reshape */ |
231 | /* unfortunately we need two cache names as we temporarily have | ||
232 | * two caches. | ||
233 | */ | ||
234 | int active_name; | ||
235 | char cache_name[2][20]; | ||
220 | kmem_cache_t *slab_cache; /* for allocating stripes */ | 236 | kmem_cache_t *slab_cache; /* for allocating stripes */ |
221 | 237 | ||
222 | int seq_flush, seq_write; | 238 | int seq_flush, seq_write; |
@@ -238,9 +254,10 @@ struct raid5_private_data { | |||
238 | wait_queue_head_t wait_for_overlap; | 254 | wait_queue_head_t wait_for_overlap; |
239 | int inactive_blocked; /* release of inactive stripes blocked, | 255 | int inactive_blocked; /* release of inactive stripes blocked, |
240 | * waiting for 25% to be free | 256 | * waiting for 25% to be free |
241 | */ | 257 | */ |
258 | int pool_size; /* number of disks in stripeheads in pool */ | ||
242 | spinlock_t device_lock; | 259 | spinlock_t device_lock; |
243 | struct disk_info disks[0]; | 260 | struct disk_info *disks; |
244 | }; | 261 | }; |
245 | 262 | ||
246 | typedef struct raid5_private_data raid5_conf_t; | 263 | typedef struct raid5_private_data raid5_conf_t; |