btrfs: use copy_highpage() instead of 2 kmaps()
[platform/kernel/linux-rpi.git] / fs / btrfs / raid56.c
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Copyright (C) 2012 Fusion-io  All rights reserved.
4  * Copyright (C) 2012 Intel Corp. All rights reserved.
5  */
6
7 #include <linux/sched.h>
8 #include <linux/bio.h>
9 #include <linux/slab.h>
10 #include <linux/blkdev.h>
11 #include <linux/raid/pq.h>
12 #include <linux/hash.h>
13 #include <linux/list_sort.h>
14 #include <linux/raid/xor.h>
15 #include <linux/mm.h>
16 #include "ctree.h"
17 #include "disk-io.h"
18 #include "volumes.h"
19 #include "raid56.h"
20 #include "async-thread.h"
21
22 /* set when additional merges to this rbio are not allowed */
23 #define RBIO_RMW_LOCKED_BIT     1
24
25 /*
26  * set when this rbio is sitting in the hash, but it is just a cache
27  * of past RMW
28  */
29 #define RBIO_CACHE_BIT          2
30
31 /*
32  * set when it is safe to trust the stripe_pages for caching
33  */
34 #define RBIO_CACHE_READY_BIT    3
35
36 #define RBIO_CACHE_SIZE 1024
37
38 #define BTRFS_STRIPE_HASH_TABLE_BITS                            11
39
40 /* Used by the raid56 code to lock stripes for read/modify/write */
41 struct btrfs_stripe_hash {
42         struct list_head hash_list;
43         spinlock_t lock;
44 };
45
46 /* Used by the raid56 code to lock stripes for read/modify/write */
47 struct btrfs_stripe_hash_table {
48         struct list_head stripe_cache;
49         spinlock_t cache_lock;
50         int cache_size;
51         struct btrfs_stripe_hash table[];
52 };
53
54 enum btrfs_rbio_ops {
55         BTRFS_RBIO_WRITE,
56         BTRFS_RBIO_READ_REBUILD,
57         BTRFS_RBIO_PARITY_SCRUB,
58         BTRFS_RBIO_REBUILD_MISSING,
59 };
60
61 struct btrfs_raid_bio {
62         struct btrfs_fs_info *fs_info;
63         struct btrfs_bio *bbio;
64
65         /* while we're doing rmw on a stripe
66          * we put it into a hash table so we can
67          * lock the stripe and merge more rbios
68          * into it.
69          */
70         struct list_head hash_list;
71
72         /*
73          * LRU list for the stripe cache
74          */
75         struct list_head stripe_cache;
76
77         /*
78          * for scheduling work in the helper threads
79          */
80         struct btrfs_work work;
81
82         /*
83          * bio list and bio_list_lock are used
84          * to add more bios into the stripe
85          * in hopes of avoiding the full rmw
86          */
87         struct bio_list bio_list;
88         spinlock_t bio_list_lock;
89
90         /* also protected by the bio_list_lock, the
91          * plug list is used by the plugging code
92          * to collect partial bios while plugged.  The
93          * stripe locking code also uses it to hand off
94          * the stripe lock to the next pending IO
95          */
96         struct list_head plug_list;
97
98         /*
99          * flags that tell us if it is safe to
100          * merge with this bio
101          */
102         unsigned long flags;
103
104         /* size of each individual stripe on disk */
105         int stripe_len;
106
107         /* number of data stripes (no p/q) */
108         int nr_data;
109
110         int real_stripes;
111
112         int stripe_npages;
113         /*
114          * set if we're doing a parity rebuild
115          * for a read from higher up, which is handled
116          * differently from a parity rebuild as part of
117          * rmw
118          */
119         enum btrfs_rbio_ops operation;
120
121         /* first bad stripe */
122         int faila;
123
124         /* second bad stripe (for raid6 use) */
125         int failb;
126
127         int scrubp;
128         /*
129          * number of pages needed to represent the full
130          * stripe
131          */
132         int nr_pages;
133
134         /*
135          * size of all the bios in the bio_list.  This
136          * helps us decide if the rbio maps to a full
137          * stripe or not
138          */
139         int bio_list_bytes;
140
141         int generic_bio_cnt;
142
143         refcount_t refs;
144
145         atomic_t stripes_pending;
146
147         atomic_t error;
148         /*
149          * these are two arrays of pointers.  We allocate the
150          * rbio big enough to hold them both and setup their
151          * locations when the rbio is allocated
152          */
153
154         /* pointers to pages that we allocated for
155          * reading/writing stripes directly from the disk (including P/Q)
156          */
157         struct page **stripe_pages;
158
159         /*
160          * pointers to the pages in the bio_list.  Stored
161          * here for faster lookup
162          */
163         struct page **bio_pages;
164
165         /*
166          * bitmap to record which horizontal stripe has data
167          */
168         unsigned long *dbitmap;
169
170         /* allocated with real_stripes-many pointers for finish_*() calls */
171         void **finish_pointers;
172
173         /* allocated with stripe_npages-many bits for finish_*() calls */
174         unsigned long *finish_pbitmap;
175 };
176
177 static int __raid56_parity_recover(struct btrfs_raid_bio *rbio);
178 static noinline void finish_rmw(struct btrfs_raid_bio *rbio);
179 static void rmw_work(struct btrfs_work *work);
180 static void read_rebuild_work(struct btrfs_work *work);
181 static int fail_bio_stripe(struct btrfs_raid_bio *rbio, struct bio *bio);
182 static int fail_rbio_index(struct btrfs_raid_bio *rbio, int failed);
183 static void __free_raid_bio(struct btrfs_raid_bio *rbio);
184 static void index_rbio_pages(struct btrfs_raid_bio *rbio);
185 static int alloc_rbio_pages(struct btrfs_raid_bio *rbio);
186
187 static noinline void finish_parity_scrub(struct btrfs_raid_bio *rbio,
188                                          int need_check);
189 static void scrub_parity_work(struct btrfs_work *work);
190
191 static void start_async_work(struct btrfs_raid_bio *rbio, btrfs_func_t work_func)
192 {
193         btrfs_init_work(&rbio->work, work_func, NULL, NULL);
194         btrfs_queue_work(rbio->fs_info->rmw_workers, &rbio->work);
195 }
196
197 /*
198  * the stripe hash table is used for locking, and to collect
199  * bios in hopes of making a full stripe
200  */
201 int btrfs_alloc_stripe_hash_table(struct btrfs_fs_info *info)
202 {
203         struct btrfs_stripe_hash_table *table;
204         struct btrfs_stripe_hash_table *x;
205         struct btrfs_stripe_hash *cur;
206         struct btrfs_stripe_hash *h;
207         int num_entries = 1 << BTRFS_STRIPE_HASH_TABLE_BITS;
208         int i;
209
210         if (info->stripe_hash_table)
211                 return 0;
212
213         /*
214          * The table is large, starting with order 4 and can go as high as
215          * order 7 in case lock debugging is turned on.
216          *
217          * Try harder to allocate and fallback to vmalloc to lower the chance
218          * of a failing mount.
219          */
220         table = kvzalloc(struct_size(table, table, num_entries), GFP_KERNEL);
221         if (!table)
222                 return -ENOMEM;
223
224         spin_lock_init(&table->cache_lock);
225         INIT_LIST_HEAD(&table->stripe_cache);
226
227         h = table->table;
228
229         for (i = 0; i < num_entries; i++) {
230                 cur = h + i;
231                 INIT_LIST_HEAD(&cur->hash_list);
232                 spin_lock_init(&cur->lock);
233         }
234
235         x = cmpxchg(&info->stripe_hash_table, NULL, table);
236         if (x)
237                 kvfree(x);
238         return 0;
239 }
240
241 /*
242  * caching an rbio means to copy anything from the
243  * bio_pages array into the stripe_pages array.  We
244  * use the page uptodate bit in the stripe cache array
245  * to indicate if it has valid data
246  *
247  * once the caching is done, we set the cache ready
248  * bit.
249  */
250 static void cache_rbio_pages(struct btrfs_raid_bio *rbio)
251 {
252         int i;
253         int ret;
254
255         ret = alloc_rbio_pages(rbio);
256         if (ret)
257                 return;
258
259         for (i = 0; i < rbio->nr_pages; i++) {
260                 if (!rbio->bio_pages[i])
261                         continue;
262
263                 copy_highpage(rbio->stripe_pages[i], rbio->bio_pages[i]);
264                 SetPageUptodate(rbio->stripe_pages[i]);
265         }
266         set_bit(RBIO_CACHE_READY_BIT, &rbio->flags);
267 }
268
269 /*
270  * we hash on the first logical address of the stripe
271  */
272 static int rbio_bucket(struct btrfs_raid_bio *rbio)
273 {
274         u64 num = rbio->bbio->raid_map[0];
275
276         /*
277          * we shift down quite a bit.  We're using byte
278          * addressing, and most of the lower bits are zeros.
279          * This tends to upset hash_64, and it consistently
280          * returns just one or two different values.
281          *
282          * shifting off the lower bits fixes things.
283          */
284         return hash_64(num >> 16, BTRFS_STRIPE_HASH_TABLE_BITS);
285 }
286
287 /*
288  * stealing an rbio means taking all the uptodate pages from the stripe
289  * array in the source rbio and putting them into the destination rbio
290  */
291 static void steal_rbio(struct btrfs_raid_bio *src, struct btrfs_raid_bio *dest)
292 {
293         int i;
294         struct page *s;
295         struct page *d;
296
297         if (!test_bit(RBIO_CACHE_READY_BIT, &src->flags))
298                 return;
299
300         for (i = 0; i < dest->nr_pages; i++) {
301                 s = src->stripe_pages[i];
302                 if (!s || !PageUptodate(s)) {
303                         continue;
304                 }
305
306                 d = dest->stripe_pages[i];
307                 if (d)
308                         __free_page(d);
309
310                 dest->stripe_pages[i] = s;
311                 src->stripe_pages[i] = NULL;
312         }
313 }
314
315 /*
316  * merging means we take the bio_list from the victim and
317  * splice it into the destination.  The victim should
318  * be discarded afterwards.
319  *
320  * must be called with dest->rbio_list_lock held
321  */
322 static void merge_rbio(struct btrfs_raid_bio *dest,
323                        struct btrfs_raid_bio *victim)
324 {
325         bio_list_merge(&dest->bio_list, &victim->bio_list);
326         dest->bio_list_bytes += victim->bio_list_bytes;
327         dest->generic_bio_cnt += victim->generic_bio_cnt;
328         bio_list_init(&victim->bio_list);
329 }
330
331 /*
332  * used to prune items that are in the cache.  The caller
333  * must hold the hash table lock.
334  */
335 static void __remove_rbio_from_cache(struct btrfs_raid_bio *rbio)
336 {
337         int bucket = rbio_bucket(rbio);
338         struct btrfs_stripe_hash_table *table;
339         struct btrfs_stripe_hash *h;
340         int freeit = 0;
341
342         /*
343          * check the bit again under the hash table lock.
344          */
345         if (!test_bit(RBIO_CACHE_BIT, &rbio->flags))
346                 return;
347
348         table = rbio->fs_info->stripe_hash_table;
349         h = table->table + bucket;
350
351         /* hold the lock for the bucket because we may be
352          * removing it from the hash table
353          */
354         spin_lock(&h->lock);
355
356         /*
357          * hold the lock for the bio list because we need
358          * to make sure the bio list is empty
359          */
360         spin_lock(&rbio->bio_list_lock);
361
362         if (test_and_clear_bit(RBIO_CACHE_BIT, &rbio->flags)) {
363                 list_del_init(&rbio->stripe_cache);
364                 table->cache_size -= 1;
365                 freeit = 1;
366
367                 /* if the bio list isn't empty, this rbio is
368                  * still involved in an IO.  We take it out
369                  * of the cache list, and drop the ref that
370                  * was held for the list.
371                  *
372                  * If the bio_list was empty, we also remove
373                  * the rbio from the hash_table, and drop
374                  * the corresponding ref
375                  */
376                 if (bio_list_empty(&rbio->bio_list)) {
377                         if (!list_empty(&rbio->hash_list)) {
378                                 list_del_init(&rbio->hash_list);
379                                 refcount_dec(&rbio->refs);
380                                 BUG_ON(!list_empty(&rbio->plug_list));
381                         }
382                 }
383         }
384
385         spin_unlock(&rbio->bio_list_lock);
386         spin_unlock(&h->lock);
387
388         if (freeit)
389                 __free_raid_bio(rbio);
390 }
391
392 /*
393  * prune a given rbio from the cache
394  */
395 static void remove_rbio_from_cache(struct btrfs_raid_bio *rbio)
396 {
397         struct btrfs_stripe_hash_table *table;
398         unsigned long flags;
399
400         if (!test_bit(RBIO_CACHE_BIT, &rbio->flags))
401                 return;
402
403         table = rbio->fs_info->stripe_hash_table;
404
405         spin_lock_irqsave(&table->cache_lock, flags);
406         __remove_rbio_from_cache(rbio);
407         spin_unlock_irqrestore(&table->cache_lock, flags);
408 }
409
410 /*
411  * remove everything in the cache
412  */
413 static void btrfs_clear_rbio_cache(struct btrfs_fs_info *info)
414 {
415         struct btrfs_stripe_hash_table *table;
416         unsigned long flags;
417         struct btrfs_raid_bio *rbio;
418
419         table = info->stripe_hash_table;
420
421         spin_lock_irqsave(&table->cache_lock, flags);
422         while (!list_empty(&table->stripe_cache)) {
423                 rbio = list_entry(table->stripe_cache.next,
424                                   struct btrfs_raid_bio,
425                                   stripe_cache);
426                 __remove_rbio_from_cache(rbio);
427         }
428         spin_unlock_irqrestore(&table->cache_lock, flags);
429 }
430
431 /*
432  * remove all cached entries and free the hash table
433  * used by unmount
434  */
435 void btrfs_free_stripe_hash_table(struct btrfs_fs_info *info)
436 {
437         if (!info->stripe_hash_table)
438                 return;
439         btrfs_clear_rbio_cache(info);
440         kvfree(info->stripe_hash_table);
441         info->stripe_hash_table = NULL;
442 }
443
444 /*
445  * insert an rbio into the stripe cache.  It
446  * must have already been prepared by calling
447  * cache_rbio_pages
448  *
449  * If this rbio was already cached, it gets
450  * moved to the front of the lru.
451  *
452  * If the size of the rbio cache is too big, we
453  * prune an item.
454  */
455 static void cache_rbio(struct btrfs_raid_bio *rbio)
456 {
457         struct btrfs_stripe_hash_table *table;
458         unsigned long flags;
459
460         if (!test_bit(RBIO_CACHE_READY_BIT, &rbio->flags))
461                 return;
462
463         table = rbio->fs_info->stripe_hash_table;
464
465         spin_lock_irqsave(&table->cache_lock, flags);
466         spin_lock(&rbio->bio_list_lock);
467
468         /* bump our ref if we were not in the list before */
469         if (!test_and_set_bit(RBIO_CACHE_BIT, &rbio->flags))
470                 refcount_inc(&rbio->refs);
471
472         if (!list_empty(&rbio->stripe_cache)){
473                 list_move(&rbio->stripe_cache, &table->stripe_cache);
474         } else {
475                 list_add(&rbio->stripe_cache, &table->stripe_cache);
476                 table->cache_size += 1;
477         }
478
479         spin_unlock(&rbio->bio_list_lock);
480
481         if (table->cache_size > RBIO_CACHE_SIZE) {
482                 struct btrfs_raid_bio *found;
483
484                 found = list_entry(table->stripe_cache.prev,
485                                   struct btrfs_raid_bio,
486                                   stripe_cache);
487
488                 if (found != rbio)
489                         __remove_rbio_from_cache(found);
490         }
491
492         spin_unlock_irqrestore(&table->cache_lock, flags);
493 }
494
495 /*
496  * helper function to run the xor_blocks api.  It is only
497  * able to do MAX_XOR_BLOCKS at a time, so we need to
498  * loop through.
499  */
500 static void run_xor(void **pages, int src_cnt, ssize_t len)
501 {
502         int src_off = 0;
503         int xor_src_cnt = 0;
504         void *dest = pages[src_cnt];
505
506         while(src_cnt > 0) {
507                 xor_src_cnt = min(src_cnt, MAX_XOR_BLOCKS);
508                 xor_blocks(xor_src_cnt, len, dest, pages + src_off);
509
510                 src_cnt -= xor_src_cnt;
511                 src_off += xor_src_cnt;
512         }
513 }
514
515 /*
516  * Returns true if the bio list inside this rbio covers an entire stripe (no
517  * rmw required).
518  */
519 static int rbio_is_full(struct btrfs_raid_bio *rbio)
520 {
521         unsigned long flags;
522         unsigned long size = rbio->bio_list_bytes;
523         int ret = 1;
524
525         spin_lock_irqsave(&rbio->bio_list_lock, flags);
526         if (size != rbio->nr_data * rbio->stripe_len)
527                 ret = 0;
528         BUG_ON(size > rbio->nr_data * rbio->stripe_len);
529         spin_unlock_irqrestore(&rbio->bio_list_lock, flags);
530
531         return ret;
532 }
533
534 /*
535  * returns 1 if it is safe to merge two rbios together.
536  * The merging is safe if the two rbios correspond to
537  * the same stripe and if they are both going in the same
538  * direction (read vs write), and if neither one is
539  * locked for final IO
540  *
541  * The caller is responsible for locking such that
542  * rmw_locked is safe to test
543  */
544 static int rbio_can_merge(struct btrfs_raid_bio *last,
545                           struct btrfs_raid_bio *cur)
546 {
547         if (test_bit(RBIO_RMW_LOCKED_BIT, &last->flags) ||
548             test_bit(RBIO_RMW_LOCKED_BIT, &cur->flags))
549                 return 0;
550
551         /*
552          * we can't merge with cached rbios, since the
553          * idea is that when we merge the destination
554          * rbio is going to run our IO for us.  We can
555          * steal from cached rbios though, other functions
556          * handle that.
557          */
558         if (test_bit(RBIO_CACHE_BIT, &last->flags) ||
559             test_bit(RBIO_CACHE_BIT, &cur->flags))
560                 return 0;
561
562         if (last->bbio->raid_map[0] !=
563             cur->bbio->raid_map[0])
564                 return 0;
565
566         /* we can't merge with different operations */
567         if (last->operation != cur->operation)
568                 return 0;
569         /*
570          * We've need read the full stripe from the drive.
571          * check and repair the parity and write the new results.
572          *
573          * We're not allowed to add any new bios to the
574          * bio list here, anyone else that wants to
575          * change this stripe needs to do their own rmw.
576          */
577         if (last->operation == BTRFS_RBIO_PARITY_SCRUB)
578                 return 0;
579
580         if (last->operation == BTRFS_RBIO_REBUILD_MISSING)
581                 return 0;
582
583         if (last->operation == BTRFS_RBIO_READ_REBUILD) {
584                 int fa = last->faila;
585                 int fb = last->failb;
586                 int cur_fa = cur->faila;
587                 int cur_fb = cur->failb;
588
589                 if (last->faila >= last->failb) {
590                         fa = last->failb;
591                         fb = last->faila;
592                 }
593
594                 if (cur->faila >= cur->failb) {
595                         cur_fa = cur->failb;
596                         cur_fb = cur->faila;
597                 }
598
599                 if (fa != cur_fa || fb != cur_fb)
600                         return 0;
601         }
602         return 1;
603 }
604
605 static int rbio_stripe_page_index(struct btrfs_raid_bio *rbio, int stripe,
606                                   int index)
607 {
608         return stripe * rbio->stripe_npages + index;
609 }
610
611 /*
612  * these are just the pages from the rbio array, not from anything
613  * the FS sent down to us
614  */
615 static struct page *rbio_stripe_page(struct btrfs_raid_bio *rbio, int stripe,
616                                      int index)
617 {
618         return rbio->stripe_pages[rbio_stripe_page_index(rbio, stripe, index)];
619 }
620
621 /*
622  * helper to index into the pstripe
623  */
624 static struct page *rbio_pstripe_page(struct btrfs_raid_bio *rbio, int index)
625 {
626         return rbio_stripe_page(rbio, rbio->nr_data, index);
627 }
628
629 /*
630  * helper to index into the qstripe, returns null
631  * if there is no qstripe
632  */
633 static struct page *rbio_qstripe_page(struct btrfs_raid_bio *rbio, int index)
634 {
635         if (rbio->nr_data + 1 == rbio->real_stripes)
636                 return NULL;
637         return rbio_stripe_page(rbio, rbio->nr_data + 1, index);
638 }
639
640 /*
641  * The first stripe in the table for a logical address
642  * has the lock.  rbios are added in one of three ways:
643  *
644  * 1) Nobody has the stripe locked yet.  The rbio is given
645  * the lock and 0 is returned.  The caller must start the IO
646  * themselves.
647  *
648  * 2) Someone has the stripe locked, but we're able to merge
649  * with the lock owner.  The rbio is freed and the IO will
650  * start automatically along with the existing rbio.  1 is returned.
651  *
652  * 3) Someone has the stripe locked, but we're not able to merge.
653  * The rbio is added to the lock owner's plug list, or merged into
654  * an rbio already on the plug list.  When the lock owner unlocks,
655  * the next rbio on the list is run and the IO is started automatically.
656  * 1 is returned
657  *
658  * If we return 0, the caller still owns the rbio and must continue with
659  * IO submission.  If we return 1, the caller must assume the rbio has
660  * already been freed.
661  */
662 static noinline int lock_stripe_add(struct btrfs_raid_bio *rbio)
663 {
664         struct btrfs_stripe_hash *h;
665         struct btrfs_raid_bio *cur;
666         struct btrfs_raid_bio *pending;
667         unsigned long flags;
668         struct btrfs_raid_bio *freeit = NULL;
669         struct btrfs_raid_bio *cache_drop = NULL;
670         int ret = 0;
671
672         h = rbio->fs_info->stripe_hash_table->table + rbio_bucket(rbio);
673
674         spin_lock_irqsave(&h->lock, flags);
675         list_for_each_entry(cur, &h->hash_list, hash_list) {
676                 if (cur->bbio->raid_map[0] != rbio->bbio->raid_map[0])
677                         continue;
678
679                 spin_lock(&cur->bio_list_lock);
680
681                 /* Can we steal this cached rbio's pages? */
682                 if (bio_list_empty(&cur->bio_list) &&
683                     list_empty(&cur->plug_list) &&
684                     test_bit(RBIO_CACHE_BIT, &cur->flags) &&
685                     !test_bit(RBIO_RMW_LOCKED_BIT, &cur->flags)) {
686                         list_del_init(&cur->hash_list);
687                         refcount_dec(&cur->refs);
688
689                         steal_rbio(cur, rbio);
690                         cache_drop = cur;
691                         spin_unlock(&cur->bio_list_lock);
692
693                         goto lockit;
694                 }
695
696                 /* Can we merge into the lock owner? */
697                 if (rbio_can_merge(cur, rbio)) {
698                         merge_rbio(cur, rbio);
699                         spin_unlock(&cur->bio_list_lock);
700                         freeit = rbio;
701                         ret = 1;
702                         goto out;
703                 }
704
705
706                 /*
707                  * We couldn't merge with the running rbio, see if we can merge
708                  * with the pending ones.  We don't have to check for rmw_locked
709                  * because there is no way they are inside finish_rmw right now
710                  */
711                 list_for_each_entry(pending, &cur->plug_list, plug_list) {
712                         if (rbio_can_merge(pending, rbio)) {
713                                 merge_rbio(pending, rbio);
714                                 spin_unlock(&cur->bio_list_lock);
715                                 freeit = rbio;
716                                 ret = 1;
717                                 goto out;
718                         }
719                 }
720
721                 /*
722                  * No merging, put us on the tail of the plug list, our rbio
723                  * will be started with the currently running rbio unlocks
724                  */
725                 list_add_tail(&rbio->plug_list, &cur->plug_list);
726                 spin_unlock(&cur->bio_list_lock);
727                 ret = 1;
728                 goto out;
729         }
730 lockit:
731         refcount_inc(&rbio->refs);
732         list_add(&rbio->hash_list, &h->hash_list);
733 out:
734         spin_unlock_irqrestore(&h->lock, flags);
735         if (cache_drop)
736                 remove_rbio_from_cache(cache_drop);
737         if (freeit)
738                 __free_raid_bio(freeit);
739         return ret;
740 }
741
742 /*
743  * called as rmw or parity rebuild is completed.  If the plug list has more
744  * rbios waiting for this stripe, the next one on the list will be started
745  */
746 static noinline void unlock_stripe(struct btrfs_raid_bio *rbio)
747 {
748         int bucket;
749         struct btrfs_stripe_hash *h;
750         unsigned long flags;
751         int keep_cache = 0;
752
753         bucket = rbio_bucket(rbio);
754         h = rbio->fs_info->stripe_hash_table->table + bucket;
755
756         if (list_empty(&rbio->plug_list))
757                 cache_rbio(rbio);
758
759         spin_lock_irqsave(&h->lock, flags);
760         spin_lock(&rbio->bio_list_lock);
761
762         if (!list_empty(&rbio->hash_list)) {
763                 /*
764                  * if we're still cached and there is no other IO
765                  * to perform, just leave this rbio here for others
766                  * to steal from later
767                  */
768                 if (list_empty(&rbio->plug_list) &&
769                     test_bit(RBIO_CACHE_BIT, &rbio->flags)) {
770                         keep_cache = 1;
771                         clear_bit(RBIO_RMW_LOCKED_BIT, &rbio->flags);
772                         BUG_ON(!bio_list_empty(&rbio->bio_list));
773                         goto done;
774                 }
775
776                 list_del_init(&rbio->hash_list);
777                 refcount_dec(&rbio->refs);
778
779                 /*
780                  * we use the plug list to hold all the rbios
781                  * waiting for the chance to lock this stripe.
782                  * hand the lock over to one of them.
783                  */
784                 if (!list_empty(&rbio->plug_list)) {
785                         struct btrfs_raid_bio *next;
786                         struct list_head *head = rbio->plug_list.next;
787
788                         next = list_entry(head, struct btrfs_raid_bio,
789                                           plug_list);
790
791                         list_del_init(&rbio->plug_list);
792
793                         list_add(&next->hash_list, &h->hash_list);
794                         refcount_inc(&next->refs);
795                         spin_unlock(&rbio->bio_list_lock);
796                         spin_unlock_irqrestore(&h->lock, flags);
797
798                         if (next->operation == BTRFS_RBIO_READ_REBUILD)
799                                 start_async_work(next, read_rebuild_work);
800                         else if (next->operation == BTRFS_RBIO_REBUILD_MISSING) {
801                                 steal_rbio(rbio, next);
802                                 start_async_work(next, read_rebuild_work);
803                         } else if (next->operation == BTRFS_RBIO_WRITE) {
804                                 steal_rbio(rbio, next);
805                                 start_async_work(next, rmw_work);
806                         } else if (next->operation == BTRFS_RBIO_PARITY_SCRUB) {
807                                 steal_rbio(rbio, next);
808                                 start_async_work(next, scrub_parity_work);
809                         }
810
811                         goto done_nolock;
812                 }
813         }
814 done:
815         spin_unlock(&rbio->bio_list_lock);
816         spin_unlock_irqrestore(&h->lock, flags);
817
818 done_nolock:
819         if (!keep_cache)
820                 remove_rbio_from_cache(rbio);
821 }
822
823 static void __free_raid_bio(struct btrfs_raid_bio *rbio)
824 {
825         int i;
826
827         if (!refcount_dec_and_test(&rbio->refs))
828                 return;
829
830         WARN_ON(!list_empty(&rbio->stripe_cache));
831         WARN_ON(!list_empty(&rbio->hash_list));
832         WARN_ON(!bio_list_empty(&rbio->bio_list));
833
834         for (i = 0; i < rbio->nr_pages; i++) {
835                 if (rbio->stripe_pages[i]) {
836                         __free_page(rbio->stripe_pages[i]);
837                         rbio->stripe_pages[i] = NULL;
838                 }
839         }
840
841         btrfs_put_bbio(rbio->bbio);
842         kfree(rbio);
843 }
844
845 static void rbio_endio_bio_list(struct bio *cur, blk_status_t err)
846 {
847         struct bio *next;
848
849         while (cur) {
850                 next = cur->bi_next;
851                 cur->bi_next = NULL;
852                 cur->bi_status = err;
853                 bio_endio(cur);
854                 cur = next;
855         }
856 }
857
858 /*
859  * this frees the rbio and runs through all the bios in the
860  * bio_list and calls end_io on them
861  */
862 static void rbio_orig_end_io(struct btrfs_raid_bio *rbio, blk_status_t err)
863 {
864         struct bio *cur = bio_list_get(&rbio->bio_list);
865         struct bio *extra;
866
867         if (rbio->generic_bio_cnt)
868                 btrfs_bio_counter_sub(rbio->fs_info, rbio->generic_bio_cnt);
869
870         /*
871          * At this moment, rbio->bio_list is empty, however since rbio does not
872          * always have RBIO_RMW_LOCKED_BIT set and rbio is still linked on the
873          * hash list, rbio may be merged with others so that rbio->bio_list
874          * becomes non-empty.
875          * Once unlock_stripe() is done, rbio->bio_list will not be updated any
876          * more and we can call bio_endio() on all queued bios.
877          */
878         unlock_stripe(rbio);
879         extra = bio_list_get(&rbio->bio_list);
880         __free_raid_bio(rbio);
881
882         rbio_endio_bio_list(cur, err);
883         if (extra)
884                 rbio_endio_bio_list(extra, err);
885 }
886
887 /*
888  * end io function used by finish_rmw.  When we finally
889  * get here, we've written a full stripe
890  */
891 static void raid_write_end_io(struct bio *bio)
892 {
893         struct btrfs_raid_bio *rbio = bio->bi_private;
894         blk_status_t err = bio->bi_status;
895         int max_errors;
896
897         if (err)
898                 fail_bio_stripe(rbio, bio);
899
900         bio_put(bio);
901
902         if (!atomic_dec_and_test(&rbio->stripes_pending))
903                 return;
904
905         err = BLK_STS_OK;
906
907         /* OK, we have read all the stripes we need to. */
908         max_errors = (rbio->operation == BTRFS_RBIO_PARITY_SCRUB) ?
909                      0 : rbio->bbio->max_errors;
910         if (atomic_read(&rbio->error) > max_errors)
911                 err = BLK_STS_IOERR;
912
913         rbio_orig_end_io(rbio, err);
914 }
915
916 /*
917  * the read/modify/write code wants to use the original bio for
918  * any pages it included, and then use the rbio for everything
919  * else.  This function decides if a given index (stripe number)
920  * and page number in that stripe fall inside the original bio
921  * or the rbio.
922  *
923  * if you set bio_list_only, you'll get a NULL back for any ranges
924  * that are outside the bio_list
925  *
926  * This doesn't take any refs on anything, you get a bare page pointer
927  * and the caller must bump refs as required.
928  *
929  * You must call index_rbio_pages once before you can trust
930  * the answers from this function.
931  */
932 static struct page *page_in_rbio(struct btrfs_raid_bio *rbio,
933                                  int index, int pagenr, int bio_list_only)
934 {
935         int chunk_page;
936         struct page *p = NULL;
937
938         chunk_page = index * (rbio->stripe_len >> PAGE_SHIFT) + pagenr;
939
940         spin_lock_irq(&rbio->bio_list_lock);
941         p = rbio->bio_pages[chunk_page];
942         spin_unlock_irq(&rbio->bio_list_lock);
943
944         if (p || bio_list_only)
945                 return p;
946
947         return rbio->stripe_pages[chunk_page];
948 }
949
950 /*
951  * number of pages we need for the entire stripe across all the
952  * drives
953  */
954 static unsigned long rbio_nr_pages(unsigned long stripe_len, int nr_stripes)
955 {
956         return DIV_ROUND_UP(stripe_len, PAGE_SIZE) * nr_stripes;
957 }
958
959 /*
960  * allocation and initial setup for the btrfs_raid_bio.  Not
961  * this does not allocate any pages for rbio->pages.
962  */
963 static struct btrfs_raid_bio *alloc_rbio(struct btrfs_fs_info *fs_info,
964                                          struct btrfs_bio *bbio,
965                                          u64 stripe_len)
966 {
967         struct btrfs_raid_bio *rbio;
968         int nr_data = 0;
969         int real_stripes = bbio->num_stripes - bbio->num_tgtdevs;
970         int num_pages = rbio_nr_pages(stripe_len, real_stripes);
971         int stripe_npages = DIV_ROUND_UP(stripe_len, PAGE_SIZE);
972         void *p;
973
974         rbio = kzalloc(sizeof(*rbio) +
975                        sizeof(*rbio->stripe_pages) * num_pages +
976                        sizeof(*rbio->bio_pages) * num_pages +
977                        sizeof(*rbio->finish_pointers) * real_stripes +
978                        sizeof(*rbio->dbitmap) * BITS_TO_LONGS(stripe_npages) +
979                        sizeof(*rbio->finish_pbitmap) *
980                                 BITS_TO_LONGS(stripe_npages),
981                        GFP_NOFS);
982         if (!rbio)
983                 return ERR_PTR(-ENOMEM);
984
985         bio_list_init(&rbio->bio_list);
986         INIT_LIST_HEAD(&rbio->plug_list);
987         spin_lock_init(&rbio->bio_list_lock);
988         INIT_LIST_HEAD(&rbio->stripe_cache);
989         INIT_LIST_HEAD(&rbio->hash_list);
990         rbio->bbio = bbio;
991         rbio->fs_info = fs_info;
992         rbio->stripe_len = stripe_len;
993         rbio->nr_pages = num_pages;
994         rbio->real_stripes = real_stripes;
995         rbio->stripe_npages = stripe_npages;
996         rbio->faila = -1;
997         rbio->failb = -1;
998         refcount_set(&rbio->refs, 1);
999         atomic_set(&rbio->error, 0);
1000         atomic_set(&rbio->stripes_pending, 0);
1001
1002         /*
1003          * the stripe_pages, bio_pages, etc arrays point to the extra
1004          * memory we allocated past the end of the rbio
1005          */
1006         p = rbio + 1;
1007 #define CONSUME_ALLOC(ptr, count)       do {                            \
1008                 ptr = p;                                                \
1009                 p = (unsigned char *)p + sizeof(*(ptr)) * (count);      \
1010         } while (0)
1011         CONSUME_ALLOC(rbio->stripe_pages, num_pages);
1012         CONSUME_ALLOC(rbio->bio_pages, num_pages);
1013         CONSUME_ALLOC(rbio->finish_pointers, real_stripes);
1014         CONSUME_ALLOC(rbio->dbitmap, BITS_TO_LONGS(stripe_npages));
1015         CONSUME_ALLOC(rbio->finish_pbitmap, BITS_TO_LONGS(stripe_npages));
1016 #undef  CONSUME_ALLOC
1017
1018         if (bbio->map_type & BTRFS_BLOCK_GROUP_RAID5)
1019                 nr_data = real_stripes - 1;
1020         else if (bbio->map_type & BTRFS_BLOCK_GROUP_RAID6)
1021                 nr_data = real_stripes - 2;
1022         else
1023                 BUG();
1024
1025         rbio->nr_data = nr_data;
1026         return rbio;
1027 }
1028
1029 /* allocate pages for all the stripes in the bio, including parity */
1030 static int alloc_rbio_pages(struct btrfs_raid_bio *rbio)
1031 {
1032         int i;
1033         struct page *page;
1034
1035         for (i = 0; i < rbio->nr_pages; i++) {
1036                 if (rbio->stripe_pages[i])
1037                         continue;
1038                 page = alloc_page(GFP_NOFS | __GFP_HIGHMEM);
1039                 if (!page)
1040                         return -ENOMEM;
1041                 rbio->stripe_pages[i] = page;
1042         }
1043         return 0;
1044 }
1045
1046 /* only allocate pages for p/q stripes */
1047 static int alloc_rbio_parity_pages(struct btrfs_raid_bio *rbio)
1048 {
1049         int i;
1050         struct page *page;
1051
1052         i = rbio_stripe_page_index(rbio, rbio->nr_data, 0);
1053
1054         for (; i < rbio->nr_pages; i++) {
1055                 if (rbio->stripe_pages[i])
1056                         continue;
1057                 page = alloc_page(GFP_NOFS | __GFP_HIGHMEM);
1058                 if (!page)
1059                         return -ENOMEM;
1060                 rbio->stripe_pages[i] = page;
1061         }
1062         return 0;
1063 }
1064
1065 /*
1066  * add a single page from a specific stripe into our list of bios for IO
1067  * this will try to merge into existing bios if possible, and returns
1068  * zero if all went well.
1069  */
1070 static int rbio_add_io_page(struct btrfs_raid_bio *rbio,
1071                             struct bio_list *bio_list,
1072                             struct page *page,
1073                             int stripe_nr,
1074                             unsigned long page_index,
1075                             unsigned long bio_max_len)
1076 {
1077         struct bio *last = bio_list->tail;
1078         int ret;
1079         struct bio *bio;
1080         struct btrfs_bio_stripe *stripe;
1081         u64 disk_start;
1082
1083         stripe = &rbio->bbio->stripes[stripe_nr];
1084         disk_start = stripe->physical + (page_index << PAGE_SHIFT);
1085
1086         /* if the device is missing, just fail this stripe */
1087         if (!stripe->dev->bdev)
1088                 return fail_rbio_index(rbio, stripe_nr);
1089
1090         /* see if we can add this page onto our existing bio */
1091         if (last) {
1092                 u64 last_end = last->bi_iter.bi_sector << 9;
1093                 last_end += last->bi_iter.bi_size;
1094
1095                 /*
1096                  * we can't merge these if they are from different
1097                  * devices or if they are not contiguous
1098                  */
1099                 if (last_end == disk_start && !last->bi_status &&
1100                     last->bi_disk == stripe->dev->bdev->bd_disk &&
1101                     last->bi_partno == stripe->dev->bdev->bd_partno) {
1102                         ret = bio_add_page(last, page, PAGE_SIZE, 0);
1103                         if (ret == PAGE_SIZE)
1104                                 return 0;
1105                 }
1106         }
1107
1108         /* put a new bio on the list */
1109         bio = btrfs_io_bio_alloc(bio_max_len >> PAGE_SHIFT ?: 1);
1110         btrfs_io_bio(bio)->device = stripe->dev;
1111         bio->bi_iter.bi_size = 0;
1112         bio_set_dev(bio, stripe->dev->bdev);
1113         bio->bi_iter.bi_sector = disk_start >> 9;
1114
1115         bio_add_page(bio, page, PAGE_SIZE, 0);
1116         bio_list_add(bio_list, bio);
1117         return 0;
1118 }
1119
1120 /*
1121  * while we're doing the read/modify/write cycle, we could
1122  * have errors in reading pages off the disk.  This checks
1123  * for errors and if we're not able to read the page it'll
1124  * trigger parity reconstruction.  The rmw will be finished
1125  * after we've reconstructed the failed stripes
1126  */
1127 static void validate_rbio_for_rmw(struct btrfs_raid_bio *rbio)
1128 {
1129         if (rbio->faila >= 0 || rbio->failb >= 0) {
1130                 BUG_ON(rbio->faila == rbio->real_stripes - 1);
1131                 __raid56_parity_recover(rbio);
1132         } else {
1133                 finish_rmw(rbio);
1134         }
1135 }
1136
1137 /*
1138  * helper function to walk our bio list and populate the bio_pages array with
1139  * the result.  This seems expensive, but it is faster than constantly
1140  * searching through the bio list as we setup the IO in finish_rmw or stripe
1141  * reconstruction.
1142  *
1143  * This must be called before you trust the answers from page_in_rbio
1144  */
1145 static void index_rbio_pages(struct btrfs_raid_bio *rbio)
1146 {
1147         struct bio *bio;
1148         u64 start;
1149         unsigned long stripe_offset;
1150         unsigned long page_index;
1151
1152         spin_lock_irq(&rbio->bio_list_lock);
1153         bio_list_for_each(bio, &rbio->bio_list) {
1154                 struct bio_vec bvec;
1155                 struct bvec_iter iter;
1156                 int i = 0;
1157
1158                 start = bio->bi_iter.bi_sector << 9;
1159                 stripe_offset = start - rbio->bbio->raid_map[0];
1160                 page_index = stripe_offset >> PAGE_SHIFT;
1161
1162                 if (bio_flagged(bio, BIO_CLONED))
1163                         bio->bi_iter = btrfs_io_bio(bio)->iter;
1164
1165                 bio_for_each_segment(bvec, bio, iter) {
1166                         rbio->bio_pages[page_index + i] = bvec.bv_page;
1167                         i++;
1168                 }
1169         }
1170         spin_unlock_irq(&rbio->bio_list_lock);
1171 }
1172
1173 /*
1174  * this is called from one of two situations.  We either
1175  * have a full stripe from the higher layers, or we've read all
1176  * the missing bits off disk.
1177  *
1178  * This will calculate the parity and then send down any
1179  * changed blocks.
1180  */
1181 static noinline void finish_rmw(struct btrfs_raid_bio *rbio)
1182 {
1183         struct btrfs_bio *bbio = rbio->bbio;
1184         void **pointers = rbio->finish_pointers;
1185         int nr_data = rbio->nr_data;
1186         int stripe;
1187         int pagenr;
1188         bool has_qstripe;
1189         struct bio_list bio_list;
1190         struct bio *bio;
1191         int ret;
1192
1193         bio_list_init(&bio_list);
1194
1195         if (rbio->real_stripes - rbio->nr_data == 1)
1196                 has_qstripe = false;
1197         else if (rbio->real_stripes - rbio->nr_data == 2)
1198                 has_qstripe = true;
1199         else
1200                 BUG();
1201
1202         /* at this point we either have a full stripe,
1203          * or we've read the full stripe from the drive.
1204          * recalculate the parity and write the new results.
1205          *
1206          * We're not allowed to add any new bios to the
1207          * bio list here, anyone else that wants to
1208          * change this stripe needs to do their own rmw.
1209          */
1210         spin_lock_irq(&rbio->bio_list_lock);
1211         set_bit(RBIO_RMW_LOCKED_BIT, &rbio->flags);
1212         spin_unlock_irq(&rbio->bio_list_lock);
1213
1214         atomic_set(&rbio->error, 0);
1215
1216         /*
1217          * now that we've set rmw_locked, run through the
1218          * bio list one last time and map the page pointers
1219          *
1220          * We don't cache full rbios because we're assuming
1221          * the higher layers are unlikely to use this area of
1222          * the disk again soon.  If they do use it again,
1223          * hopefully they will send another full bio.
1224          */
1225         index_rbio_pages(rbio);
1226         if (!rbio_is_full(rbio))
1227                 cache_rbio_pages(rbio);
1228         else
1229                 clear_bit(RBIO_CACHE_READY_BIT, &rbio->flags);
1230
1231         for (pagenr = 0; pagenr < rbio->stripe_npages; pagenr++) {
1232                 struct page *p;
1233                 /* first collect one page from each data stripe */
1234                 for (stripe = 0; stripe < nr_data; stripe++) {
1235                         p = page_in_rbio(rbio, stripe, pagenr, 0);
1236                         pointers[stripe] = kmap(p);
1237                 }
1238
1239                 /* then add the parity stripe */
1240                 p = rbio_pstripe_page(rbio, pagenr);
1241                 SetPageUptodate(p);
1242                 pointers[stripe++] = kmap(p);
1243
1244                 if (has_qstripe) {
1245
1246                         /*
1247                          * raid6, add the qstripe and call the
1248                          * library function to fill in our p/q
1249                          */
1250                         p = rbio_qstripe_page(rbio, pagenr);
1251                         SetPageUptodate(p);
1252                         pointers[stripe++] = kmap(p);
1253
1254                         raid6_call.gen_syndrome(rbio->real_stripes, PAGE_SIZE,
1255                                                 pointers);
1256                 } else {
1257                         /* raid5 */
1258                         copy_page(pointers[nr_data], pointers[0]);
1259                         run_xor(pointers + 1, nr_data - 1, PAGE_SIZE);
1260                 }
1261
1262
1263                 for (stripe = 0; stripe < rbio->real_stripes; stripe++)
1264                         kunmap(page_in_rbio(rbio, stripe, pagenr, 0));
1265         }
1266
1267         /*
1268          * time to start writing.  Make bios for everything from the
1269          * higher layers (the bio_list in our rbio) and our p/q.  Ignore
1270          * everything else.
1271          */
1272         for (stripe = 0; stripe < rbio->real_stripes; stripe++) {
1273                 for (pagenr = 0; pagenr < rbio->stripe_npages; pagenr++) {
1274                         struct page *page;
1275                         if (stripe < rbio->nr_data) {
1276                                 page = page_in_rbio(rbio, stripe, pagenr, 1);
1277                                 if (!page)
1278                                         continue;
1279                         } else {
1280                                page = rbio_stripe_page(rbio, stripe, pagenr);
1281                         }
1282
1283                         ret = rbio_add_io_page(rbio, &bio_list,
1284                                        page, stripe, pagenr, rbio->stripe_len);
1285                         if (ret)
1286                                 goto cleanup;
1287                 }
1288         }
1289
1290         if (likely(!bbio->num_tgtdevs))
1291                 goto write_data;
1292
1293         for (stripe = 0; stripe < rbio->real_stripes; stripe++) {
1294                 if (!bbio->tgtdev_map[stripe])
1295                         continue;
1296
1297                 for (pagenr = 0; pagenr < rbio->stripe_npages; pagenr++) {
1298                         struct page *page;
1299                         if (stripe < rbio->nr_data) {
1300                                 page = page_in_rbio(rbio, stripe, pagenr, 1);
1301                                 if (!page)
1302                                         continue;
1303                         } else {
1304                                page = rbio_stripe_page(rbio, stripe, pagenr);
1305                         }
1306
1307                         ret = rbio_add_io_page(rbio, &bio_list, page,
1308                                                rbio->bbio->tgtdev_map[stripe],
1309                                                pagenr, rbio->stripe_len);
1310                         if (ret)
1311                                 goto cleanup;
1312                 }
1313         }
1314
1315 write_data:
1316         atomic_set(&rbio->stripes_pending, bio_list_size(&bio_list));
1317         BUG_ON(atomic_read(&rbio->stripes_pending) == 0);
1318
1319         while ((bio = bio_list_pop(&bio_list))) {
1320                 bio->bi_private = rbio;
1321                 bio->bi_end_io = raid_write_end_io;
1322                 bio->bi_opf = REQ_OP_WRITE;
1323
1324                 submit_bio(bio);
1325         }
1326         return;
1327
1328 cleanup:
1329         rbio_orig_end_io(rbio, BLK_STS_IOERR);
1330
1331         while ((bio = bio_list_pop(&bio_list)))
1332                 bio_put(bio);
1333 }
1334
1335 /*
1336  * helper to find the stripe number for a given bio.  Used to figure out which
1337  * stripe has failed.  This expects the bio to correspond to a physical disk,
1338  * so it looks up based on physical sector numbers.
1339  */
1340 static int find_bio_stripe(struct btrfs_raid_bio *rbio,
1341                            struct bio *bio)
1342 {
1343         u64 physical = bio->bi_iter.bi_sector;
1344         int i;
1345         struct btrfs_bio_stripe *stripe;
1346
1347         physical <<= 9;
1348
1349         for (i = 0; i < rbio->bbio->num_stripes; i++) {
1350                 stripe = &rbio->bbio->stripes[i];
1351                 if (in_range(physical, stripe->physical, rbio->stripe_len) &&
1352                     stripe->dev->bdev &&
1353                     bio->bi_disk == stripe->dev->bdev->bd_disk &&
1354                     bio->bi_partno == stripe->dev->bdev->bd_partno) {
1355                         return i;
1356                 }
1357         }
1358         return -1;
1359 }
1360
1361 /*
1362  * helper to find the stripe number for a given
1363  * bio (before mapping).  Used to figure out which stripe has
1364  * failed.  This looks up based on logical block numbers.
1365  */
1366 static int find_logical_bio_stripe(struct btrfs_raid_bio *rbio,
1367                                    struct bio *bio)
1368 {
1369         u64 logical = bio->bi_iter.bi_sector << 9;
1370         int i;
1371
1372         for (i = 0; i < rbio->nr_data; i++) {
1373                 u64 stripe_start = rbio->bbio->raid_map[i];
1374
1375                 if (in_range(logical, stripe_start, rbio->stripe_len))
1376                         return i;
1377         }
1378         return -1;
1379 }
1380
1381 /*
1382  * returns -EIO if we had too many failures
1383  */
1384 static int fail_rbio_index(struct btrfs_raid_bio *rbio, int failed)
1385 {
1386         unsigned long flags;
1387         int ret = 0;
1388
1389         spin_lock_irqsave(&rbio->bio_list_lock, flags);
1390
1391         /* we already know this stripe is bad, move on */
1392         if (rbio->faila == failed || rbio->failb == failed)
1393                 goto out;
1394
1395         if (rbio->faila == -1) {
1396                 /* first failure on this rbio */
1397                 rbio->faila = failed;
1398                 atomic_inc(&rbio->error);
1399         } else if (rbio->failb == -1) {
1400                 /* second failure on this rbio */
1401                 rbio->failb = failed;
1402                 atomic_inc(&rbio->error);
1403         } else {
1404                 ret = -EIO;
1405         }
1406 out:
1407         spin_unlock_irqrestore(&rbio->bio_list_lock, flags);
1408
1409         return ret;
1410 }
1411
1412 /*
1413  * helper to fail a stripe based on a physical disk
1414  * bio.
1415  */
1416 static int fail_bio_stripe(struct btrfs_raid_bio *rbio,
1417                            struct bio *bio)
1418 {
1419         int failed = find_bio_stripe(rbio, bio);
1420
1421         if (failed < 0)
1422                 return -EIO;
1423
1424         return fail_rbio_index(rbio, failed);
1425 }
1426
1427 /*
1428  * this sets each page in the bio uptodate.  It should only be used on private
1429  * rbio pages, nothing that comes in from the higher layers
1430  */
1431 static void set_bio_pages_uptodate(struct bio *bio)
1432 {
1433         struct bio_vec *bvec;
1434         struct bvec_iter_all iter_all;
1435
1436         ASSERT(!bio_flagged(bio, BIO_CLONED));
1437
1438         bio_for_each_segment_all(bvec, bio, iter_all)
1439                 SetPageUptodate(bvec->bv_page);
1440 }
1441
1442 /*
1443  * end io for the read phase of the rmw cycle.  All the bios here are physical
1444  * stripe bios we've read from the disk so we can recalculate the parity of the
1445  * stripe.
1446  *
1447  * This will usually kick off finish_rmw once all the bios are read in, but it
1448  * may trigger parity reconstruction if we had any errors along the way
1449  */
1450 static void raid_rmw_end_io(struct bio *bio)
1451 {
1452         struct btrfs_raid_bio *rbio = bio->bi_private;
1453
1454         if (bio->bi_status)
1455                 fail_bio_stripe(rbio, bio);
1456         else
1457                 set_bio_pages_uptodate(bio);
1458
1459         bio_put(bio);
1460
1461         if (!atomic_dec_and_test(&rbio->stripes_pending))
1462                 return;
1463
1464         if (atomic_read(&rbio->error) > rbio->bbio->max_errors)
1465                 goto cleanup;
1466
1467         /*
1468          * this will normally call finish_rmw to start our write
1469          * but if there are any failed stripes we'll reconstruct
1470          * from parity first
1471          */
1472         validate_rbio_for_rmw(rbio);
1473         return;
1474
1475 cleanup:
1476
1477         rbio_orig_end_io(rbio, BLK_STS_IOERR);
1478 }
1479
1480 /*
1481  * the stripe must be locked by the caller.  It will
1482  * unlock after all the writes are done
1483  */
1484 static int raid56_rmw_stripe(struct btrfs_raid_bio *rbio)
1485 {
1486         int bios_to_read = 0;
1487         struct bio_list bio_list;
1488         int ret;
1489         int pagenr;
1490         int stripe;
1491         struct bio *bio;
1492
1493         bio_list_init(&bio_list);
1494
1495         ret = alloc_rbio_pages(rbio);
1496         if (ret)
1497                 goto cleanup;
1498
1499         index_rbio_pages(rbio);
1500
1501         atomic_set(&rbio->error, 0);
1502         /*
1503          * build a list of bios to read all the missing parts of this
1504          * stripe
1505          */
1506         for (stripe = 0; stripe < rbio->nr_data; stripe++) {
1507                 for (pagenr = 0; pagenr < rbio->stripe_npages; pagenr++) {
1508                         struct page *page;
1509                         /*
1510                          * we want to find all the pages missing from
1511                          * the rbio and read them from the disk.  If
1512                          * page_in_rbio finds a page in the bio list
1513                          * we don't need to read it off the stripe.
1514                          */
1515                         page = page_in_rbio(rbio, stripe, pagenr, 1);
1516                         if (page)
1517                                 continue;
1518
1519                         page = rbio_stripe_page(rbio, stripe, pagenr);
1520                         /*
1521                          * the bio cache may have handed us an uptodate
1522                          * page.  If so, be happy and use it
1523                          */
1524                         if (PageUptodate(page))
1525                                 continue;
1526
1527                         ret = rbio_add_io_page(rbio, &bio_list, page,
1528                                        stripe, pagenr, rbio->stripe_len);
1529                         if (ret)
1530                                 goto cleanup;
1531                 }
1532         }
1533
1534         bios_to_read = bio_list_size(&bio_list);
1535         if (!bios_to_read) {
1536                 /*
1537                  * this can happen if others have merged with
1538                  * us, it means there is nothing left to read.
1539                  * But if there are missing devices it may not be
1540                  * safe to do the full stripe write yet.
1541                  */
1542                 goto finish;
1543         }
1544
1545         /*
1546          * the bbio may be freed once we submit the last bio.  Make sure
1547          * not to touch it after that
1548          */
1549         atomic_set(&rbio->stripes_pending, bios_to_read);
1550         while ((bio = bio_list_pop(&bio_list))) {
1551                 bio->bi_private = rbio;
1552                 bio->bi_end_io = raid_rmw_end_io;
1553                 bio->bi_opf = REQ_OP_READ;
1554
1555                 btrfs_bio_wq_end_io(rbio->fs_info, bio, BTRFS_WQ_ENDIO_RAID56);
1556
1557                 submit_bio(bio);
1558         }
1559         /* the actual write will happen once the reads are done */
1560         return 0;
1561
1562 cleanup:
1563         rbio_orig_end_io(rbio, BLK_STS_IOERR);
1564
1565         while ((bio = bio_list_pop(&bio_list)))
1566                 bio_put(bio);
1567
1568         return -EIO;
1569
1570 finish:
1571         validate_rbio_for_rmw(rbio);
1572         return 0;
1573 }
1574
1575 /*
1576  * if the upper layers pass in a full stripe, we thank them by only allocating
1577  * enough pages to hold the parity, and sending it all down quickly.
1578  */
1579 static int full_stripe_write(struct btrfs_raid_bio *rbio)
1580 {
1581         int ret;
1582
1583         ret = alloc_rbio_parity_pages(rbio);
1584         if (ret) {
1585                 __free_raid_bio(rbio);
1586                 return ret;
1587         }
1588
1589         ret = lock_stripe_add(rbio);
1590         if (ret == 0)
1591                 finish_rmw(rbio);
1592         return 0;
1593 }
1594
1595 /*
1596  * partial stripe writes get handed over to async helpers.
1597  * We're really hoping to merge a few more writes into this
1598  * rbio before calculating new parity
1599  */
1600 static int partial_stripe_write(struct btrfs_raid_bio *rbio)
1601 {
1602         int ret;
1603
1604         ret = lock_stripe_add(rbio);
1605         if (ret == 0)
1606                 start_async_work(rbio, rmw_work);
1607         return 0;
1608 }
1609
1610 /*
1611  * sometimes while we were reading from the drive to
1612  * recalculate parity, enough new bios come into create
1613  * a full stripe.  So we do a check here to see if we can
1614  * go directly to finish_rmw
1615  */
1616 static int __raid56_parity_write(struct btrfs_raid_bio *rbio)
1617 {
1618         /* head off into rmw land if we don't have a full stripe */
1619         if (!rbio_is_full(rbio))
1620                 return partial_stripe_write(rbio);
1621         return full_stripe_write(rbio);
1622 }
1623
1624 /*
1625  * We use plugging call backs to collect full stripes.
1626  * Any time we get a partial stripe write while plugged
1627  * we collect it into a list.  When the unplug comes down,
1628  * we sort the list by logical block number and merge
1629  * everything we can into the same rbios
1630  */
1631 struct btrfs_plug_cb {
1632         struct blk_plug_cb cb;
1633         struct btrfs_fs_info *info;
1634         struct list_head rbio_list;
1635         struct btrfs_work work;
1636 };
1637
1638 /*
1639  * rbios on the plug list are sorted for easier merging.
1640  */
1641 static int plug_cmp(void *priv, struct list_head *a, struct list_head *b)
1642 {
1643         struct btrfs_raid_bio *ra = container_of(a, struct btrfs_raid_bio,
1644                                                  plug_list);
1645         struct btrfs_raid_bio *rb = container_of(b, struct btrfs_raid_bio,
1646                                                  plug_list);
1647         u64 a_sector = ra->bio_list.head->bi_iter.bi_sector;
1648         u64 b_sector = rb->bio_list.head->bi_iter.bi_sector;
1649
1650         if (a_sector < b_sector)
1651                 return -1;
1652         if (a_sector > b_sector)
1653                 return 1;
1654         return 0;
1655 }
1656
1657 static void run_plug(struct btrfs_plug_cb *plug)
1658 {
1659         struct btrfs_raid_bio *cur;
1660         struct btrfs_raid_bio *last = NULL;
1661
1662         /*
1663          * sort our plug list then try to merge
1664          * everything we can in hopes of creating full
1665          * stripes.
1666          */
1667         list_sort(NULL, &plug->rbio_list, plug_cmp);
1668         while (!list_empty(&plug->rbio_list)) {
1669                 cur = list_entry(plug->rbio_list.next,
1670                                  struct btrfs_raid_bio, plug_list);
1671                 list_del_init(&cur->plug_list);
1672
1673                 if (rbio_is_full(cur)) {
1674                         int ret;
1675
1676                         /* we have a full stripe, send it down */
1677                         ret = full_stripe_write(cur);
1678                         BUG_ON(ret);
1679                         continue;
1680                 }
1681                 if (last) {
1682                         if (rbio_can_merge(last, cur)) {
1683                                 merge_rbio(last, cur);
1684                                 __free_raid_bio(cur);
1685                                 continue;
1686
1687                         }
1688                         __raid56_parity_write(last);
1689                 }
1690                 last = cur;
1691         }
1692         if (last) {
1693                 __raid56_parity_write(last);
1694         }
1695         kfree(plug);
1696 }
1697
1698 /*
1699  * if the unplug comes from schedule, we have to push the
1700  * work off to a helper thread
1701  */
1702 static void unplug_work(struct btrfs_work *work)
1703 {
1704         struct btrfs_plug_cb *plug;
1705         plug = container_of(work, struct btrfs_plug_cb, work);
1706         run_plug(plug);
1707 }
1708
1709 static void btrfs_raid_unplug(struct blk_plug_cb *cb, bool from_schedule)
1710 {
1711         struct btrfs_plug_cb *plug;
1712         plug = container_of(cb, struct btrfs_plug_cb, cb);
1713
1714         if (from_schedule) {
1715                 btrfs_init_work(&plug->work, unplug_work, NULL, NULL);
1716                 btrfs_queue_work(plug->info->rmw_workers,
1717                                  &plug->work);
1718                 return;
1719         }
1720         run_plug(plug);
1721 }
1722
1723 /*
1724  * our main entry point for writes from the rest of the FS.
1725  */
1726 int raid56_parity_write(struct btrfs_fs_info *fs_info, struct bio *bio,
1727                         struct btrfs_bio *bbio, u64 stripe_len)
1728 {
1729         struct btrfs_raid_bio *rbio;
1730         struct btrfs_plug_cb *plug = NULL;
1731         struct blk_plug_cb *cb;
1732         int ret;
1733
1734         rbio = alloc_rbio(fs_info, bbio, stripe_len);
1735         if (IS_ERR(rbio)) {
1736                 btrfs_put_bbio(bbio);
1737                 return PTR_ERR(rbio);
1738         }
1739         bio_list_add(&rbio->bio_list, bio);
1740         rbio->bio_list_bytes = bio->bi_iter.bi_size;
1741         rbio->operation = BTRFS_RBIO_WRITE;
1742
1743         btrfs_bio_counter_inc_noblocked(fs_info);
1744         rbio->generic_bio_cnt = 1;
1745
1746         /*
1747          * don't plug on full rbios, just get them out the door
1748          * as quickly as we can
1749          */
1750         if (rbio_is_full(rbio)) {
1751                 ret = full_stripe_write(rbio);
1752                 if (ret)
1753                         btrfs_bio_counter_dec(fs_info);
1754                 return ret;
1755         }
1756
1757         cb = blk_check_plugged(btrfs_raid_unplug, fs_info, sizeof(*plug));
1758         if (cb) {
1759                 plug = container_of(cb, struct btrfs_plug_cb, cb);
1760                 if (!plug->info) {
1761                         plug->info = fs_info;
1762                         INIT_LIST_HEAD(&plug->rbio_list);
1763                 }
1764                 list_add_tail(&rbio->plug_list, &plug->rbio_list);
1765                 ret = 0;
1766         } else {
1767                 ret = __raid56_parity_write(rbio);
1768                 if (ret)
1769                         btrfs_bio_counter_dec(fs_info);
1770         }
1771         return ret;
1772 }
1773
1774 /*
1775  * all parity reconstruction happens here.  We've read in everything
1776  * we can find from the drives and this does the heavy lifting of
1777  * sorting the good from the bad.
1778  */
1779 static void __raid_recover_end_io(struct btrfs_raid_bio *rbio)
1780 {
1781         int pagenr, stripe;
1782         void **pointers;
1783         int faila = -1, failb = -1;
1784         struct page *page;
1785         blk_status_t err;
1786         int i;
1787
1788         pointers = kcalloc(rbio->real_stripes, sizeof(void *), GFP_NOFS);
1789         if (!pointers) {
1790                 err = BLK_STS_RESOURCE;
1791                 goto cleanup_io;
1792         }
1793
1794         faila = rbio->faila;
1795         failb = rbio->failb;
1796
1797         if (rbio->operation == BTRFS_RBIO_READ_REBUILD ||
1798             rbio->operation == BTRFS_RBIO_REBUILD_MISSING) {
1799                 spin_lock_irq(&rbio->bio_list_lock);
1800                 set_bit(RBIO_RMW_LOCKED_BIT, &rbio->flags);
1801                 spin_unlock_irq(&rbio->bio_list_lock);
1802         }
1803
1804         index_rbio_pages(rbio);
1805
1806         for (pagenr = 0; pagenr < rbio->stripe_npages; pagenr++) {
1807                 /*
1808                  * Now we just use bitmap to mark the horizontal stripes in
1809                  * which we have data when doing parity scrub.
1810                  */
1811                 if (rbio->operation == BTRFS_RBIO_PARITY_SCRUB &&
1812                     !test_bit(pagenr, rbio->dbitmap))
1813                         continue;
1814
1815                 /* setup our array of pointers with pages
1816                  * from each stripe
1817                  */
1818                 for (stripe = 0; stripe < rbio->real_stripes; stripe++) {
1819                         /*
1820                          * if we're rebuilding a read, we have to use
1821                          * pages from the bio list
1822                          */
1823                         if ((rbio->operation == BTRFS_RBIO_READ_REBUILD ||
1824                              rbio->operation == BTRFS_RBIO_REBUILD_MISSING) &&
1825                             (stripe == faila || stripe == failb)) {
1826                                 page = page_in_rbio(rbio, stripe, pagenr, 0);
1827                         } else {
1828                                 page = rbio_stripe_page(rbio, stripe, pagenr);
1829                         }
1830                         pointers[stripe] = kmap(page);
1831                 }
1832
1833                 /* all raid6 handling here */
1834                 if (rbio->bbio->map_type & BTRFS_BLOCK_GROUP_RAID6) {
1835                         /*
1836                          * single failure, rebuild from parity raid5
1837                          * style
1838                          */
1839                         if (failb < 0) {
1840                                 if (faila == rbio->nr_data) {
1841                                         /*
1842                                          * Just the P stripe has failed, without
1843                                          * a bad data or Q stripe.
1844                                          * TODO, we should redo the xor here.
1845                                          */
1846                                         err = BLK_STS_IOERR;
1847                                         goto cleanup;
1848                                 }
1849                                 /*
1850                                  * a single failure in raid6 is rebuilt
1851                                  * in the pstripe code below
1852                                  */
1853                                 goto pstripe;
1854                         }
1855
1856                         /* make sure our ps and qs are in order */
1857                         if (faila > failb)
1858                                 swap(faila, failb);
1859
1860                         /* if the q stripe is failed, do a pstripe reconstruction
1861                          * from the xors.
1862                          * If both the q stripe and the P stripe are failed, we're
1863                          * here due to a crc mismatch and we can't give them the
1864                          * data they want
1865                          */
1866                         if (rbio->bbio->raid_map[failb] == RAID6_Q_STRIPE) {
1867                                 if (rbio->bbio->raid_map[faila] ==
1868                                     RAID5_P_STRIPE) {
1869                                         err = BLK_STS_IOERR;
1870                                         goto cleanup;
1871                                 }
1872                                 /*
1873                                  * otherwise we have one bad data stripe and
1874                                  * a good P stripe.  raid5!
1875                                  */
1876                                 goto pstripe;
1877                         }
1878
1879                         if (rbio->bbio->raid_map[failb] == RAID5_P_STRIPE) {
1880                                 raid6_datap_recov(rbio->real_stripes,
1881                                                   PAGE_SIZE, faila, pointers);
1882                         } else {
1883                                 raid6_2data_recov(rbio->real_stripes,
1884                                                   PAGE_SIZE, faila, failb,
1885                                                   pointers);
1886                         }
1887                 } else {
1888                         void *p;
1889
1890                         /* rebuild from P stripe here (raid5 or raid6) */
1891                         BUG_ON(failb != -1);
1892 pstripe:
1893                         /* Copy parity block into failed block to start with */
1894                         copy_page(pointers[faila], pointers[rbio->nr_data]);
1895
1896                         /* rearrange the pointer array */
1897                         p = pointers[faila];
1898                         for (stripe = faila; stripe < rbio->nr_data - 1; stripe++)
1899                                 pointers[stripe] = pointers[stripe + 1];
1900                         pointers[rbio->nr_data - 1] = p;
1901
1902                         /* xor in the rest */
1903                         run_xor(pointers, rbio->nr_data - 1, PAGE_SIZE);
1904                 }
1905                 /* if we're doing this rebuild as part of an rmw, go through
1906                  * and set all of our private rbio pages in the
1907                  * failed stripes as uptodate.  This way finish_rmw will
1908                  * know they can be trusted.  If this was a read reconstruction,
1909                  * other endio functions will fiddle the uptodate bits
1910                  */
1911                 if (rbio->operation == BTRFS_RBIO_WRITE) {
1912                         for (i = 0;  i < rbio->stripe_npages; i++) {
1913                                 if (faila != -1) {
1914                                         page = rbio_stripe_page(rbio, faila, i);
1915                                         SetPageUptodate(page);
1916                                 }
1917                                 if (failb != -1) {
1918                                         page = rbio_stripe_page(rbio, failb, i);
1919                                         SetPageUptodate(page);
1920                                 }
1921                         }
1922                 }
1923                 for (stripe = 0; stripe < rbio->real_stripes; stripe++) {
1924                         /*
1925                          * if we're rebuilding a read, we have to use
1926                          * pages from the bio list
1927                          */
1928                         if ((rbio->operation == BTRFS_RBIO_READ_REBUILD ||
1929                              rbio->operation == BTRFS_RBIO_REBUILD_MISSING) &&
1930                             (stripe == faila || stripe == failb)) {
1931                                 page = page_in_rbio(rbio, stripe, pagenr, 0);
1932                         } else {
1933                                 page = rbio_stripe_page(rbio, stripe, pagenr);
1934                         }
1935                         kunmap(page);
1936                 }
1937         }
1938
1939         err = BLK_STS_OK;
1940 cleanup:
1941         kfree(pointers);
1942
1943 cleanup_io:
1944         /*
1945          * Similar to READ_REBUILD, REBUILD_MISSING at this point also has a
1946          * valid rbio which is consistent with ondisk content, thus such a
1947          * valid rbio can be cached to avoid further disk reads.
1948          */
1949         if (rbio->operation == BTRFS_RBIO_READ_REBUILD ||
1950             rbio->operation == BTRFS_RBIO_REBUILD_MISSING) {
1951                 /*
1952                  * - In case of two failures, where rbio->failb != -1:
1953                  *
1954                  *   Do not cache this rbio since the above read reconstruction
1955                  *   (raid6_datap_recov() or raid6_2data_recov()) may have
1956                  *   changed some content of stripes which are not identical to
1957                  *   on-disk content any more, otherwise, a later write/recover
1958                  *   may steal stripe_pages from this rbio and end up with
1959                  *   corruptions or rebuild failures.
1960                  *
1961                  * - In case of single failure, where rbio->failb == -1:
1962                  *
1963                  *   Cache this rbio iff the above read reconstruction is
1964                  *   executed without problems.
1965                  */
1966                 if (err == BLK_STS_OK && rbio->failb < 0)
1967                         cache_rbio_pages(rbio);
1968                 else
1969                         clear_bit(RBIO_CACHE_READY_BIT, &rbio->flags);
1970
1971                 rbio_orig_end_io(rbio, err);
1972         } else if (err == BLK_STS_OK) {
1973                 rbio->faila = -1;
1974                 rbio->failb = -1;
1975
1976                 if (rbio->operation == BTRFS_RBIO_WRITE)
1977                         finish_rmw(rbio);
1978                 else if (rbio->operation == BTRFS_RBIO_PARITY_SCRUB)
1979                         finish_parity_scrub(rbio, 0);
1980                 else
1981                         BUG();
1982         } else {
1983                 rbio_orig_end_io(rbio, err);
1984         }
1985 }
1986
1987 /*
1988  * This is called only for stripes we've read from disk to
1989  * reconstruct the parity.
1990  */
1991 static void raid_recover_end_io(struct bio *bio)
1992 {
1993         struct btrfs_raid_bio *rbio = bio->bi_private;
1994
1995         /*
1996          * we only read stripe pages off the disk, set them
1997          * up to date if there were no errors
1998          */
1999         if (bio->bi_status)
2000                 fail_bio_stripe(rbio, bio);
2001         else
2002                 set_bio_pages_uptodate(bio);
2003         bio_put(bio);
2004
2005         if (!atomic_dec_and_test(&rbio->stripes_pending))
2006                 return;
2007
2008         if (atomic_read(&rbio->error) > rbio->bbio->max_errors)
2009                 rbio_orig_end_io(rbio, BLK_STS_IOERR);
2010         else
2011                 __raid_recover_end_io(rbio);
2012 }
2013
2014 /*
2015  * reads everything we need off the disk to reconstruct
2016  * the parity. endio handlers trigger final reconstruction
2017  * when the IO is done.
2018  *
2019  * This is used both for reads from the higher layers and for
2020  * parity construction required to finish a rmw cycle.
2021  */
2022 static int __raid56_parity_recover(struct btrfs_raid_bio *rbio)
2023 {
2024         int bios_to_read = 0;
2025         struct bio_list bio_list;
2026         int ret;
2027         int pagenr;
2028         int stripe;
2029         struct bio *bio;
2030
2031         bio_list_init(&bio_list);
2032
2033         ret = alloc_rbio_pages(rbio);
2034         if (ret)
2035                 goto cleanup;
2036
2037         atomic_set(&rbio->error, 0);
2038
2039         /*
2040          * read everything that hasn't failed.  Thanks to the
2041          * stripe cache, it is possible that some or all of these
2042          * pages are going to be uptodate.
2043          */
2044         for (stripe = 0; stripe < rbio->real_stripes; stripe++) {
2045                 if (rbio->faila == stripe || rbio->failb == stripe) {
2046                         atomic_inc(&rbio->error);
2047                         continue;
2048                 }
2049
2050                 for (pagenr = 0; pagenr < rbio->stripe_npages; pagenr++) {
2051                         struct page *p;
2052
2053                         /*
2054                          * the rmw code may have already read this
2055                          * page in
2056                          */
2057                         p = rbio_stripe_page(rbio, stripe, pagenr);
2058                         if (PageUptodate(p))
2059                                 continue;
2060
2061                         ret = rbio_add_io_page(rbio, &bio_list,
2062                                        rbio_stripe_page(rbio, stripe, pagenr),
2063                                        stripe, pagenr, rbio->stripe_len);
2064                         if (ret < 0)
2065                                 goto cleanup;
2066                 }
2067         }
2068
2069         bios_to_read = bio_list_size(&bio_list);
2070         if (!bios_to_read) {
2071                 /*
2072                  * we might have no bios to read just because the pages
2073                  * were up to date, or we might have no bios to read because
2074                  * the devices were gone.
2075                  */
2076                 if (atomic_read(&rbio->error) <= rbio->bbio->max_errors) {
2077                         __raid_recover_end_io(rbio);
2078                         return 0;
2079                 } else {
2080                         goto cleanup;
2081                 }
2082         }
2083
2084         /*
2085          * the bbio may be freed once we submit the last bio.  Make sure
2086          * not to touch it after that
2087          */
2088         atomic_set(&rbio->stripes_pending, bios_to_read);
2089         while ((bio = bio_list_pop(&bio_list))) {
2090                 bio->bi_private = rbio;
2091                 bio->bi_end_io = raid_recover_end_io;
2092                 bio->bi_opf = REQ_OP_READ;
2093
2094                 btrfs_bio_wq_end_io(rbio->fs_info, bio, BTRFS_WQ_ENDIO_RAID56);
2095
2096                 submit_bio(bio);
2097         }
2098
2099         return 0;
2100
2101 cleanup:
2102         if (rbio->operation == BTRFS_RBIO_READ_REBUILD ||
2103             rbio->operation == BTRFS_RBIO_REBUILD_MISSING)
2104                 rbio_orig_end_io(rbio, BLK_STS_IOERR);
2105
2106         while ((bio = bio_list_pop(&bio_list)))
2107                 bio_put(bio);
2108
2109         return -EIO;
2110 }
2111
2112 /*
2113  * the main entry point for reads from the higher layers.  This
2114  * is really only called when the normal read path had a failure,
2115  * so we assume the bio they send down corresponds to a failed part
2116  * of the drive.
2117  */
2118 int raid56_parity_recover(struct btrfs_fs_info *fs_info, struct bio *bio,
2119                           struct btrfs_bio *bbio, u64 stripe_len,
2120                           int mirror_num, int generic_io)
2121 {
2122         struct btrfs_raid_bio *rbio;
2123         int ret;
2124
2125         if (generic_io) {
2126                 ASSERT(bbio->mirror_num == mirror_num);
2127                 btrfs_io_bio(bio)->mirror_num = mirror_num;
2128         }
2129
2130         rbio = alloc_rbio(fs_info, bbio, stripe_len);
2131         if (IS_ERR(rbio)) {
2132                 if (generic_io)
2133                         btrfs_put_bbio(bbio);
2134                 return PTR_ERR(rbio);
2135         }
2136
2137         rbio->operation = BTRFS_RBIO_READ_REBUILD;
2138         bio_list_add(&rbio->bio_list, bio);
2139         rbio->bio_list_bytes = bio->bi_iter.bi_size;
2140
2141         rbio->faila = find_logical_bio_stripe(rbio, bio);
2142         if (rbio->faila == -1) {
2143                 btrfs_warn(fs_info,
2144         "%s could not find the bad stripe in raid56 so that we cannot recover any more (bio has logical %llu len %llu, bbio has map_type %llu)",
2145                            __func__, bio->bi_iter.bi_sector << 9,
2146                            (u64)bio->bi_iter.bi_size, bbio->map_type);
2147                 if (generic_io)
2148                         btrfs_put_bbio(bbio);
2149                 kfree(rbio);
2150                 return -EIO;
2151         }
2152
2153         if (generic_io) {
2154                 btrfs_bio_counter_inc_noblocked(fs_info);
2155                 rbio->generic_bio_cnt = 1;
2156         } else {
2157                 btrfs_get_bbio(bbio);
2158         }
2159
2160         /*
2161          * Loop retry:
2162          * for 'mirror == 2', reconstruct from all other stripes.
2163          * for 'mirror_num > 2', select a stripe to fail on every retry.
2164          */
2165         if (mirror_num > 2) {
2166                 /*
2167                  * 'mirror == 3' is to fail the p stripe and
2168                  * reconstruct from the q stripe.  'mirror > 3' is to
2169                  * fail a data stripe and reconstruct from p+q stripe.
2170                  */
2171                 rbio->failb = rbio->real_stripes - (mirror_num - 1);
2172                 ASSERT(rbio->failb > 0);
2173                 if (rbio->failb <= rbio->faila)
2174                         rbio->failb--;
2175         }
2176
2177         ret = lock_stripe_add(rbio);
2178
2179         /*
2180          * __raid56_parity_recover will end the bio with
2181          * any errors it hits.  We don't want to return
2182          * its error value up the stack because our caller
2183          * will end up calling bio_endio with any nonzero
2184          * return
2185          */
2186         if (ret == 0)
2187                 __raid56_parity_recover(rbio);
2188         /*
2189          * our rbio has been added to the list of
2190          * rbios that will be handled after the
2191          * currently lock owner is done
2192          */
2193         return 0;
2194
2195 }
2196
2197 static void rmw_work(struct btrfs_work *work)
2198 {
2199         struct btrfs_raid_bio *rbio;
2200
2201         rbio = container_of(work, struct btrfs_raid_bio, work);
2202         raid56_rmw_stripe(rbio);
2203 }
2204
2205 static void read_rebuild_work(struct btrfs_work *work)
2206 {
2207         struct btrfs_raid_bio *rbio;
2208
2209         rbio = container_of(work, struct btrfs_raid_bio, work);
2210         __raid56_parity_recover(rbio);
2211 }
2212
2213 /*
2214  * The following code is used to scrub/replace the parity stripe
2215  *
2216  * Caller must have already increased bio_counter for getting @bbio.
2217  *
2218  * Note: We need make sure all the pages that add into the scrub/replace
2219  * raid bio are correct and not be changed during the scrub/replace. That
2220  * is those pages just hold metadata or file data with checksum.
2221  */
2222
2223 struct btrfs_raid_bio *
2224 raid56_parity_alloc_scrub_rbio(struct btrfs_fs_info *fs_info, struct bio *bio,
2225                                struct btrfs_bio *bbio, u64 stripe_len,
2226                                struct btrfs_device *scrub_dev,
2227                                unsigned long *dbitmap, int stripe_nsectors)
2228 {
2229         struct btrfs_raid_bio *rbio;
2230         int i;
2231
2232         rbio = alloc_rbio(fs_info, bbio, stripe_len);
2233         if (IS_ERR(rbio))
2234                 return NULL;
2235         bio_list_add(&rbio->bio_list, bio);
2236         /*
2237          * This is a special bio which is used to hold the completion handler
2238          * and make the scrub rbio is similar to the other types
2239          */
2240         ASSERT(!bio->bi_iter.bi_size);
2241         rbio->operation = BTRFS_RBIO_PARITY_SCRUB;
2242
2243         /*
2244          * After mapping bbio with BTRFS_MAP_WRITE, parities have been sorted
2245          * to the end position, so this search can start from the first parity
2246          * stripe.
2247          */
2248         for (i = rbio->nr_data; i < rbio->real_stripes; i++) {
2249                 if (bbio->stripes[i].dev == scrub_dev) {
2250                         rbio->scrubp = i;
2251                         break;
2252                 }
2253         }
2254         ASSERT(i < rbio->real_stripes);
2255
2256         /* Now we just support the sectorsize equals to page size */
2257         ASSERT(fs_info->sectorsize == PAGE_SIZE);
2258         ASSERT(rbio->stripe_npages == stripe_nsectors);
2259         bitmap_copy(rbio->dbitmap, dbitmap, stripe_nsectors);
2260
2261         /*
2262          * We have already increased bio_counter when getting bbio, record it
2263          * so we can free it at rbio_orig_end_io().
2264          */
2265         rbio->generic_bio_cnt = 1;
2266
2267         return rbio;
2268 }
2269
2270 /* Used for both parity scrub and missing. */
2271 void raid56_add_scrub_pages(struct btrfs_raid_bio *rbio, struct page *page,
2272                             u64 logical)
2273 {
2274         int stripe_offset;
2275         int index;
2276
2277         ASSERT(logical >= rbio->bbio->raid_map[0]);
2278         ASSERT(logical + PAGE_SIZE <= rbio->bbio->raid_map[0] +
2279                                 rbio->stripe_len * rbio->nr_data);
2280         stripe_offset = (int)(logical - rbio->bbio->raid_map[0]);
2281         index = stripe_offset >> PAGE_SHIFT;
2282         rbio->bio_pages[index] = page;
2283 }
2284
2285 /*
2286  * We just scrub the parity that we have correct data on the same horizontal,
2287  * so we needn't allocate all pages for all the stripes.
2288  */
2289 static int alloc_rbio_essential_pages(struct btrfs_raid_bio *rbio)
2290 {
2291         int i;
2292         int bit;
2293         int index;
2294         struct page *page;
2295
2296         for_each_set_bit(bit, rbio->dbitmap, rbio->stripe_npages) {
2297                 for (i = 0; i < rbio->real_stripes; i++) {
2298                         index = i * rbio->stripe_npages + bit;
2299                         if (rbio->stripe_pages[index])
2300                                 continue;
2301
2302                         page = alloc_page(GFP_NOFS | __GFP_HIGHMEM);
2303                         if (!page)
2304                                 return -ENOMEM;
2305                         rbio->stripe_pages[index] = page;
2306                 }
2307         }
2308         return 0;
2309 }
2310
2311 static noinline void finish_parity_scrub(struct btrfs_raid_bio *rbio,
2312                                          int need_check)
2313 {
2314         struct btrfs_bio *bbio = rbio->bbio;
2315         void **pointers = rbio->finish_pointers;
2316         unsigned long *pbitmap = rbio->finish_pbitmap;
2317         int nr_data = rbio->nr_data;
2318         int stripe;
2319         int pagenr;
2320         bool has_qstripe;
2321         struct page *p_page = NULL;
2322         struct page *q_page = NULL;
2323         struct bio_list bio_list;
2324         struct bio *bio;
2325         int is_replace = 0;
2326         int ret;
2327
2328         bio_list_init(&bio_list);
2329
2330         if (rbio->real_stripes - rbio->nr_data == 1)
2331                 has_qstripe = false;
2332         else if (rbio->real_stripes - rbio->nr_data == 2)
2333                 has_qstripe = true;
2334         else
2335                 BUG();
2336
2337         if (bbio->num_tgtdevs && bbio->tgtdev_map[rbio->scrubp]) {
2338                 is_replace = 1;
2339                 bitmap_copy(pbitmap, rbio->dbitmap, rbio->stripe_npages);
2340         }
2341
2342         /*
2343          * Because the higher layers(scrubber) are unlikely to
2344          * use this area of the disk again soon, so don't cache
2345          * it.
2346          */
2347         clear_bit(RBIO_CACHE_READY_BIT, &rbio->flags);
2348
2349         if (!need_check)
2350                 goto writeback;
2351
2352         p_page = alloc_page(GFP_NOFS | __GFP_HIGHMEM);
2353         if (!p_page)
2354                 goto cleanup;
2355         SetPageUptodate(p_page);
2356
2357         if (has_qstripe) {
2358                 q_page = alloc_page(GFP_NOFS | __GFP_HIGHMEM);
2359                 if (!q_page) {
2360                         __free_page(p_page);
2361                         goto cleanup;
2362                 }
2363                 SetPageUptodate(q_page);
2364         }
2365
2366         atomic_set(&rbio->error, 0);
2367
2368         for_each_set_bit(pagenr, rbio->dbitmap, rbio->stripe_npages) {
2369                 struct page *p;
2370                 void *parity;
2371                 /* first collect one page from each data stripe */
2372                 for (stripe = 0; stripe < nr_data; stripe++) {
2373                         p = page_in_rbio(rbio, stripe, pagenr, 0);
2374                         pointers[stripe] = kmap(p);
2375                 }
2376
2377                 /* then add the parity stripe */
2378                 pointers[stripe++] = kmap(p_page);
2379
2380                 if (has_qstripe) {
2381                         /*
2382                          * raid6, add the qstripe and call the
2383                          * library function to fill in our p/q
2384                          */
2385                         pointers[stripe++] = kmap(q_page);
2386
2387                         raid6_call.gen_syndrome(rbio->real_stripes, PAGE_SIZE,
2388                                                 pointers);
2389                 } else {
2390                         /* raid5 */
2391                         copy_page(pointers[nr_data], pointers[0]);
2392                         run_xor(pointers + 1, nr_data - 1, PAGE_SIZE);
2393                 }
2394
2395                 /* Check scrubbing parity and repair it */
2396                 p = rbio_stripe_page(rbio, rbio->scrubp, pagenr);
2397                 parity = kmap(p);
2398                 if (memcmp(parity, pointers[rbio->scrubp], PAGE_SIZE))
2399                         copy_page(parity, pointers[rbio->scrubp]);
2400                 else
2401                         /* Parity is right, needn't writeback */
2402                         bitmap_clear(rbio->dbitmap, pagenr, 1);
2403                 kunmap(p);
2404
2405                 for (stripe = 0; stripe < nr_data; stripe++)
2406                         kunmap(page_in_rbio(rbio, stripe, pagenr, 0));
2407                 kunmap(p_page);
2408         }
2409
2410         __free_page(p_page);
2411         if (q_page)
2412                 __free_page(q_page);
2413
2414 writeback:
2415         /*
2416          * time to start writing.  Make bios for everything from the
2417          * higher layers (the bio_list in our rbio) and our p/q.  Ignore
2418          * everything else.
2419          */
2420         for_each_set_bit(pagenr, rbio->dbitmap, rbio->stripe_npages) {
2421                 struct page *page;
2422
2423                 page = rbio_stripe_page(rbio, rbio->scrubp, pagenr);
2424                 ret = rbio_add_io_page(rbio, &bio_list,
2425                                page, rbio->scrubp, pagenr, rbio->stripe_len);
2426                 if (ret)
2427                         goto cleanup;
2428         }
2429
2430         if (!is_replace)
2431                 goto submit_write;
2432
2433         for_each_set_bit(pagenr, pbitmap, rbio->stripe_npages) {
2434                 struct page *page;
2435
2436                 page = rbio_stripe_page(rbio, rbio->scrubp, pagenr);
2437                 ret = rbio_add_io_page(rbio, &bio_list, page,
2438                                        bbio->tgtdev_map[rbio->scrubp],
2439                                        pagenr, rbio->stripe_len);
2440                 if (ret)
2441                         goto cleanup;
2442         }
2443
2444 submit_write:
2445         nr_data = bio_list_size(&bio_list);
2446         if (!nr_data) {
2447                 /* Every parity is right */
2448                 rbio_orig_end_io(rbio, BLK_STS_OK);
2449                 return;
2450         }
2451
2452         atomic_set(&rbio->stripes_pending, nr_data);
2453
2454         while ((bio = bio_list_pop(&bio_list))) {
2455                 bio->bi_private = rbio;
2456                 bio->bi_end_io = raid_write_end_io;
2457                 bio->bi_opf = REQ_OP_WRITE;
2458
2459                 submit_bio(bio);
2460         }
2461         return;
2462
2463 cleanup:
2464         rbio_orig_end_io(rbio, BLK_STS_IOERR);
2465
2466         while ((bio = bio_list_pop(&bio_list)))
2467                 bio_put(bio);
2468 }
2469
2470 static inline int is_data_stripe(struct btrfs_raid_bio *rbio, int stripe)
2471 {
2472         if (stripe >= 0 && stripe < rbio->nr_data)
2473                 return 1;
2474         return 0;
2475 }
2476
2477 /*
2478  * While we're doing the parity check and repair, we could have errors
2479  * in reading pages off the disk.  This checks for errors and if we're
2480  * not able to read the page it'll trigger parity reconstruction.  The
2481  * parity scrub will be finished after we've reconstructed the failed
2482  * stripes
2483  */
2484 static void validate_rbio_for_parity_scrub(struct btrfs_raid_bio *rbio)
2485 {
2486         if (atomic_read(&rbio->error) > rbio->bbio->max_errors)
2487                 goto cleanup;
2488
2489         if (rbio->faila >= 0 || rbio->failb >= 0) {
2490                 int dfail = 0, failp = -1;
2491
2492                 if (is_data_stripe(rbio, rbio->faila))
2493                         dfail++;
2494                 else if (is_parity_stripe(rbio->faila))
2495                         failp = rbio->faila;
2496
2497                 if (is_data_stripe(rbio, rbio->failb))
2498                         dfail++;
2499                 else if (is_parity_stripe(rbio->failb))
2500                         failp = rbio->failb;
2501
2502                 /*
2503                  * Because we can not use a scrubbing parity to repair
2504                  * the data, so the capability of the repair is declined.
2505                  * (In the case of RAID5, we can not repair anything)
2506                  */
2507                 if (dfail > rbio->bbio->max_errors - 1)
2508                         goto cleanup;
2509
2510                 /*
2511                  * If all data is good, only parity is correctly, just
2512                  * repair the parity.
2513                  */
2514                 if (dfail == 0) {
2515                         finish_parity_scrub(rbio, 0);
2516                         return;
2517                 }
2518
2519                 /*
2520                  * Here means we got one corrupted data stripe and one
2521                  * corrupted parity on RAID6, if the corrupted parity
2522                  * is scrubbing parity, luckily, use the other one to repair
2523                  * the data, or we can not repair the data stripe.
2524                  */
2525                 if (failp != rbio->scrubp)
2526                         goto cleanup;
2527
2528                 __raid_recover_end_io(rbio);
2529         } else {
2530                 finish_parity_scrub(rbio, 1);
2531         }
2532         return;
2533
2534 cleanup:
2535         rbio_orig_end_io(rbio, BLK_STS_IOERR);
2536 }
2537
2538 /*
2539  * end io for the read phase of the rmw cycle.  All the bios here are physical
2540  * stripe bios we've read from the disk so we can recalculate the parity of the
2541  * stripe.
2542  *
2543  * This will usually kick off finish_rmw once all the bios are read in, but it
2544  * may trigger parity reconstruction if we had any errors along the way
2545  */
2546 static void raid56_parity_scrub_end_io(struct bio *bio)
2547 {
2548         struct btrfs_raid_bio *rbio = bio->bi_private;
2549
2550         if (bio->bi_status)
2551                 fail_bio_stripe(rbio, bio);
2552         else
2553                 set_bio_pages_uptodate(bio);
2554
2555         bio_put(bio);
2556
2557         if (!atomic_dec_and_test(&rbio->stripes_pending))
2558                 return;
2559
2560         /*
2561          * this will normally call finish_rmw to start our write
2562          * but if there are any failed stripes we'll reconstruct
2563          * from parity first
2564          */
2565         validate_rbio_for_parity_scrub(rbio);
2566 }
2567
2568 static void raid56_parity_scrub_stripe(struct btrfs_raid_bio *rbio)
2569 {
2570         int bios_to_read = 0;
2571         struct bio_list bio_list;
2572         int ret;
2573         int pagenr;
2574         int stripe;
2575         struct bio *bio;
2576
2577         bio_list_init(&bio_list);
2578
2579         ret = alloc_rbio_essential_pages(rbio);
2580         if (ret)
2581                 goto cleanup;
2582
2583         atomic_set(&rbio->error, 0);
2584         /*
2585          * build a list of bios to read all the missing parts of this
2586          * stripe
2587          */
2588         for (stripe = 0; stripe < rbio->real_stripes; stripe++) {
2589                 for_each_set_bit(pagenr, rbio->dbitmap, rbio->stripe_npages) {
2590                         struct page *page;
2591                         /*
2592                          * we want to find all the pages missing from
2593                          * the rbio and read them from the disk.  If
2594                          * page_in_rbio finds a page in the bio list
2595                          * we don't need to read it off the stripe.
2596                          */
2597                         page = page_in_rbio(rbio, stripe, pagenr, 1);
2598                         if (page)
2599                                 continue;
2600
2601                         page = rbio_stripe_page(rbio, stripe, pagenr);
2602                         /*
2603                          * the bio cache may have handed us an uptodate
2604                          * page.  If so, be happy and use it
2605                          */
2606                         if (PageUptodate(page))
2607                                 continue;
2608
2609                         ret = rbio_add_io_page(rbio, &bio_list, page,
2610                                        stripe, pagenr, rbio->stripe_len);
2611                         if (ret)
2612                                 goto cleanup;
2613                 }
2614         }
2615
2616         bios_to_read = bio_list_size(&bio_list);
2617         if (!bios_to_read) {
2618                 /*
2619                  * this can happen if others have merged with
2620                  * us, it means there is nothing left to read.
2621                  * But if there are missing devices it may not be
2622                  * safe to do the full stripe write yet.
2623                  */
2624                 goto finish;
2625         }
2626
2627         /*
2628          * the bbio may be freed once we submit the last bio.  Make sure
2629          * not to touch it after that
2630          */
2631         atomic_set(&rbio->stripes_pending, bios_to_read);
2632         while ((bio = bio_list_pop(&bio_list))) {
2633                 bio->bi_private = rbio;
2634                 bio->bi_end_io = raid56_parity_scrub_end_io;
2635                 bio->bi_opf = REQ_OP_READ;
2636
2637                 btrfs_bio_wq_end_io(rbio->fs_info, bio, BTRFS_WQ_ENDIO_RAID56);
2638
2639                 submit_bio(bio);
2640         }
2641         /* the actual write will happen once the reads are done */
2642         return;
2643
2644 cleanup:
2645         rbio_orig_end_io(rbio, BLK_STS_IOERR);
2646
2647         while ((bio = bio_list_pop(&bio_list)))
2648                 bio_put(bio);
2649
2650         return;
2651
2652 finish:
2653         validate_rbio_for_parity_scrub(rbio);
2654 }
2655
2656 static void scrub_parity_work(struct btrfs_work *work)
2657 {
2658         struct btrfs_raid_bio *rbio;
2659
2660         rbio = container_of(work, struct btrfs_raid_bio, work);
2661         raid56_parity_scrub_stripe(rbio);
2662 }
2663
2664 void raid56_parity_submit_scrub_rbio(struct btrfs_raid_bio *rbio)
2665 {
2666         if (!lock_stripe_add(rbio))
2667                 start_async_work(rbio, scrub_parity_work);
2668 }
2669
2670 /* The following code is used for dev replace of a missing RAID 5/6 device. */
2671
2672 struct btrfs_raid_bio *
2673 raid56_alloc_missing_rbio(struct btrfs_fs_info *fs_info, struct bio *bio,
2674                           struct btrfs_bio *bbio, u64 length)
2675 {
2676         struct btrfs_raid_bio *rbio;
2677
2678         rbio = alloc_rbio(fs_info, bbio, length);
2679         if (IS_ERR(rbio))
2680                 return NULL;
2681
2682         rbio->operation = BTRFS_RBIO_REBUILD_MISSING;
2683         bio_list_add(&rbio->bio_list, bio);
2684         /*
2685          * This is a special bio which is used to hold the completion handler
2686          * and make the scrub rbio is similar to the other types
2687          */
2688         ASSERT(!bio->bi_iter.bi_size);
2689
2690         rbio->faila = find_logical_bio_stripe(rbio, bio);
2691         if (rbio->faila == -1) {
2692                 BUG();
2693                 kfree(rbio);
2694                 return NULL;
2695         }
2696
2697         /*
2698          * When we get bbio, we have already increased bio_counter, record it
2699          * so we can free it at rbio_orig_end_io()
2700          */
2701         rbio->generic_bio_cnt = 1;
2702
2703         return rbio;
2704 }
2705
2706 void raid56_submit_missing_rbio(struct btrfs_raid_bio *rbio)
2707 {
2708         if (!lock_stripe_add(rbio))
2709                 start_async_work(rbio, read_rebuild_work);
2710 }