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 "misc.h" 17 #include "ctree.h" 18 #include "disk-io.h" 19 #include "volumes.h" 20 #include "raid56.h" 21 #include "async-thread.h" 22 23 /* set when additional merges to this rbio are not allowed */ 24 #define RBIO_RMW_LOCKED_BIT 1 25 26 /* 27 * set when this rbio is sitting in the hash, but it is just a cache 28 * of past RMW 29 */ 30 #define RBIO_CACHE_BIT 2 31 32 /* 33 * set when it is safe to trust the stripe_pages for caching 34 */ 35 #define RBIO_CACHE_READY_BIT 3 36 37 #define RBIO_CACHE_SIZE 1024 38 39 #define BTRFS_STRIPE_HASH_TABLE_BITS 11 40 41 /* Used by the raid56 code to lock stripes for read/modify/write */ 42 struct btrfs_stripe_hash { 43 struct list_head hash_list; 44 spinlock_t lock; 45 }; 46 47 /* Used by the raid56 code to lock stripes for read/modify/write */ 48 struct btrfs_stripe_hash_table { 49 struct list_head stripe_cache; 50 spinlock_t cache_lock; 51 int cache_size; 52 struct btrfs_stripe_hash table[]; 53 }; 54 55 enum btrfs_rbio_ops { 56 BTRFS_RBIO_WRITE, 57 BTRFS_RBIO_READ_REBUILD, 58 BTRFS_RBIO_PARITY_SCRUB, 59 BTRFS_RBIO_REBUILD_MISSING, 60 }; 61 62 struct btrfs_raid_bio { 63 struct btrfs_fs_info *fs_info; 64 struct btrfs_bio *bbio; 65 66 /* while we're doing rmw on a stripe 67 * we put it into a hash table so we can 68 * lock the stripe and merge more rbios 69 * into it. 70 */ 71 struct list_head hash_list; 72 73 /* 74 * LRU list for the stripe cache 75 */ 76 struct list_head stripe_cache; 77 78 /* 79 * for scheduling work in the helper threads 80 */ 81 struct btrfs_work work; 82 83 /* 84 * bio list and bio_list_lock are used 85 * to add more bios into the stripe 86 * in hopes of avoiding the full rmw 87 */ 88 struct bio_list bio_list; 89 spinlock_t bio_list_lock; 90 91 /* also protected by the bio_list_lock, the 92 * plug list is used by the plugging code 93 * to collect partial bios while plugged. The 94 * stripe locking code also uses it to hand off 95 * the stripe lock to the next pending IO 96 */ 97 struct list_head plug_list; 98 99 /* 100 * flags that tell us if it is safe to 101 * merge with this bio 102 */ 103 unsigned long flags; 104 105 /* size of each individual stripe on disk */ 106 int stripe_len; 107 108 /* number of data stripes (no p/q) */ 109 int nr_data; 110 111 int real_stripes; 112 113 int stripe_npages; 114 /* 115 * set if we're doing a parity rebuild 116 * for a read from higher up, which is handled 117 * differently from a parity rebuild as part of 118 * rmw 119 */ 120 enum btrfs_rbio_ops operation; 121 122 /* first bad stripe */ 123 int faila; 124 125 /* second bad stripe (for raid6 use) */ 126 int failb; 127 128 int scrubp; 129 /* 130 * number of pages needed to represent the full 131 * stripe 132 */ 133 int nr_pages; 134 135 /* 136 * size of all the bios in the bio_list. This 137 * helps us decide if the rbio maps to a full 138 * stripe or not 139 */ 140 int bio_list_bytes; 141 142 int generic_bio_cnt; 143 144 refcount_t refs; 145 146 atomic_t stripes_pending; 147 148 atomic_t error; 149 /* 150 * these are two arrays of pointers. We allocate the 151 * rbio big enough to hold them both and setup their 152 * locations when the rbio is allocated 153 */ 154 155 /* pointers to pages that we allocated for 156 * reading/writing stripes directly from the disk (including P/Q) 157 */ 158 struct page **stripe_pages; 159 160 /* 161 * pointers to the pages in the bio_list. Stored 162 * here for faster lookup 163 */ 164 struct page **bio_pages; 165 166 /* 167 * bitmap to record which horizontal stripe has data 168 */ 169 unsigned long *dbitmap; 170 171 /* allocated with real_stripes-many pointers for finish_*() calls */ 172 void **finish_pointers; 173 174 /* allocated with stripe_npages-many bits for finish_*() calls */ 175 unsigned long *finish_pbitmap; 176 }; 177 178 static int __raid56_parity_recover(struct btrfs_raid_bio *rbio); 179 static noinline void finish_rmw(struct btrfs_raid_bio *rbio); 180 static void rmw_work(struct btrfs_work *work); 181 static void read_rebuild_work(struct btrfs_work *work); 182 static int fail_bio_stripe(struct btrfs_raid_bio *rbio, struct bio *bio); 183 static int fail_rbio_index(struct btrfs_raid_bio *rbio, int failed); 184 static void __free_raid_bio(struct btrfs_raid_bio *rbio); 185 static void index_rbio_pages(struct btrfs_raid_bio *rbio); 186 static int alloc_rbio_pages(struct btrfs_raid_bio *rbio); 187 188 static noinline void finish_parity_scrub(struct btrfs_raid_bio *rbio, 189 int need_check); 190 static void scrub_parity_work(struct btrfs_work *work); 191 192 static void start_async_work(struct btrfs_raid_bio *rbio, btrfs_func_t work_func) 193 { 194 btrfs_init_work(&rbio->work, work_func, NULL, NULL); 195 btrfs_queue_work(rbio->fs_info->rmw_workers, &rbio->work); 196 } 197 198 /* 199 * the stripe hash table is used for locking, and to collect 200 * bios in hopes of making a full stripe 201 */ 202 int btrfs_alloc_stripe_hash_table(struct btrfs_fs_info *info) 203 { 204 struct btrfs_stripe_hash_table *table; 205 struct btrfs_stripe_hash_table *x; 206 struct btrfs_stripe_hash *cur; 207 struct btrfs_stripe_hash *h; 208 int num_entries = 1 << BTRFS_STRIPE_HASH_TABLE_BITS; 209 int i; 210 211 if (info->stripe_hash_table) 212 return 0; 213 214 /* 215 * The table is large, starting with order 4 and can go as high as 216 * order 7 in case lock debugging is turned on. 217 * 218 * Try harder to allocate and fallback to vmalloc to lower the chance 219 * of a failing mount. 220 */ 221 table = kvzalloc(struct_size(table, table, num_entries), GFP_KERNEL); 222 if (!table) 223 return -ENOMEM; 224 225 spin_lock_init(&table->cache_lock); 226 INIT_LIST_HEAD(&table->stripe_cache); 227 228 h = table->table; 229 230 for (i = 0; i < num_entries; i++) { 231 cur = h + i; 232 INIT_LIST_HEAD(&cur->hash_list); 233 spin_lock_init(&cur->lock); 234 } 235 236 x = cmpxchg(&info->stripe_hash_table, NULL, table); 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_bdev == stripe->dev->bdev) { 1101 ret = bio_add_page(last, page, PAGE_SIZE, 0); 1102 if (ret == PAGE_SIZE) 1103 return 0; 1104 } 1105 } 1106 1107 /* put a new bio on the list */ 1108 bio = btrfs_io_bio_alloc(bio_max_len >> PAGE_SHIFT ?: 1); 1109 btrfs_io_bio(bio)->device = stripe->dev; 1110 bio->bi_iter.bi_size = 0; 1111 bio_set_dev(bio, stripe->dev->bdev); 1112 bio->bi_iter.bi_sector = disk_start >> 9; 1113 1114 bio_add_page(bio, page, PAGE_SIZE, 0); 1115 bio_list_add(bio_list, bio); 1116 return 0; 1117 } 1118 1119 /* 1120 * while we're doing the read/modify/write cycle, we could 1121 * have errors in reading pages off the disk. This checks 1122 * for errors and if we're not able to read the page it'll 1123 * trigger parity reconstruction. The rmw will be finished 1124 * after we've reconstructed the failed stripes 1125 */ 1126 static void validate_rbio_for_rmw(struct btrfs_raid_bio *rbio) 1127 { 1128 if (rbio->faila >= 0 || rbio->failb >= 0) { 1129 BUG_ON(rbio->faila == rbio->real_stripes - 1); 1130 __raid56_parity_recover(rbio); 1131 } else { 1132 finish_rmw(rbio); 1133 } 1134 } 1135 1136 /* 1137 * helper function to walk our bio list and populate the bio_pages array with 1138 * the result. This seems expensive, but it is faster than constantly 1139 * searching through the bio list as we setup the IO in finish_rmw or stripe 1140 * reconstruction. 1141 * 1142 * This must be called before you trust the answers from page_in_rbio 1143 */ 1144 static void index_rbio_pages(struct btrfs_raid_bio *rbio) 1145 { 1146 struct bio *bio; 1147 u64 start; 1148 unsigned long stripe_offset; 1149 unsigned long page_index; 1150 1151 spin_lock_irq(&rbio->bio_list_lock); 1152 bio_list_for_each(bio, &rbio->bio_list) { 1153 struct bio_vec bvec; 1154 struct bvec_iter iter; 1155 int i = 0; 1156 1157 start = bio->bi_iter.bi_sector << 9; 1158 stripe_offset = start - rbio->bbio->raid_map[0]; 1159 page_index = stripe_offset >> PAGE_SHIFT; 1160 1161 if (bio_flagged(bio, BIO_CLONED)) 1162 bio->bi_iter = btrfs_io_bio(bio)->iter; 1163 1164 bio_for_each_segment(bvec, bio, iter) { 1165 rbio->bio_pages[page_index + i] = bvec.bv_page; 1166 i++; 1167 } 1168 } 1169 spin_unlock_irq(&rbio->bio_list_lock); 1170 } 1171 1172 /* 1173 * this is called from one of two situations. We either 1174 * have a full stripe from the higher layers, or we've read all 1175 * the missing bits off disk. 1176 * 1177 * This will calculate the parity and then send down any 1178 * changed blocks. 1179 */ 1180 static noinline void finish_rmw(struct btrfs_raid_bio *rbio) 1181 { 1182 struct btrfs_bio *bbio = rbio->bbio; 1183 void **pointers = rbio->finish_pointers; 1184 int nr_data = rbio->nr_data; 1185 int stripe; 1186 int pagenr; 1187 bool has_qstripe; 1188 struct bio_list bio_list; 1189 struct bio *bio; 1190 int ret; 1191 1192 bio_list_init(&bio_list); 1193 1194 if (rbio->real_stripes - rbio->nr_data == 1) 1195 has_qstripe = false; 1196 else if (rbio->real_stripes - rbio->nr_data == 2) 1197 has_qstripe = true; 1198 else 1199 BUG(); 1200 1201 /* at this point we either have a full stripe, 1202 * or we've read the full stripe from the drive. 1203 * recalculate the parity and write the new results. 1204 * 1205 * We're not allowed to add any new bios to the 1206 * bio list here, anyone else that wants to 1207 * change this stripe needs to do their own rmw. 1208 */ 1209 spin_lock_irq(&rbio->bio_list_lock); 1210 set_bit(RBIO_RMW_LOCKED_BIT, &rbio->flags); 1211 spin_unlock_irq(&rbio->bio_list_lock); 1212 1213 atomic_set(&rbio->error, 0); 1214 1215 /* 1216 * now that we've set rmw_locked, run through the 1217 * bio list one last time and map the page pointers 1218 * 1219 * We don't cache full rbios because we're assuming 1220 * the higher layers are unlikely to use this area of 1221 * the disk again soon. If they do use it again, 1222 * hopefully they will send another full bio. 1223 */ 1224 index_rbio_pages(rbio); 1225 if (!rbio_is_full(rbio)) 1226 cache_rbio_pages(rbio); 1227 else 1228 clear_bit(RBIO_CACHE_READY_BIT, &rbio->flags); 1229 1230 for (pagenr = 0; pagenr < rbio->stripe_npages; pagenr++) { 1231 struct page *p; 1232 /* first collect one page from each data stripe */ 1233 for (stripe = 0; stripe < nr_data; stripe++) { 1234 p = page_in_rbio(rbio, stripe, pagenr, 0); 1235 pointers[stripe] = kmap_local_page(p); 1236 } 1237 1238 /* then add the parity stripe */ 1239 p = rbio_pstripe_page(rbio, pagenr); 1240 SetPageUptodate(p); 1241 pointers[stripe++] = kmap_local_page(p); 1242 1243 if (has_qstripe) { 1244 1245 /* 1246 * raid6, add the qstripe and call the 1247 * library function to fill in our p/q 1248 */ 1249 p = rbio_qstripe_page(rbio, pagenr); 1250 SetPageUptodate(p); 1251 pointers[stripe++] = kmap_local_page(p); 1252 1253 raid6_call.gen_syndrome(rbio->real_stripes, PAGE_SIZE, 1254 pointers); 1255 } else { 1256 /* raid5 */ 1257 copy_page(pointers[nr_data], pointers[0]); 1258 run_xor(pointers + 1, nr_data - 1, PAGE_SIZE); 1259 } 1260 for (stripe = stripe - 1; stripe >= 0; stripe--) 1261 kunmap_local(pointers[stripe]); 1262 } 1263 1264 /* 1265 * time to start writing. Make bios for everything from the 1266 * higher layers (the bio_list in our rbio) and our p/q. Ignore 1267 * everything else. 1268 */ 1269 for (stripe = 0; stripe < rbio->real_stripes; stripe++) { 1270 for (pagenr = 0; pagenr < rbio->stripe_npages; pagenr++) { 1271 struct page *page; 1272 if (stripe < rbio->nr_data) { 1273 page = page_in_rbio(rbio, stripe, pagenr, 1); 1274 if (!page) 1275 continue; 1276 } else { 1277 page = rbio_stripe_page(rbio, stripe, pagenr); 1278 } 1279 1280 ret = rbio_add_io_page(rbio, &bio_list, 1281 page, stripe, pagenr, rbio->stripe_len); 1282 if (ret) 1283 goto cleanup; 1284 } 1285 } 1286 1287 if (likely(!bbio->num_tgtdevs)) 1288 goto write_data; 1289 1290 for (stripe = 0; stripe < rbio->real_stripes; stripe++) { 1291 if (!bbio->tgtdev_map[stripe]) 1292 continue; 1293 1294 for (pagenr = 0; pagenr < rbio->stripe_npages; pagenr++) { 1295 struct page *page; 1296 if (stripe < rbio->nr_data) { 1297 page = page_in_rbio(rbio, stripe, pagenr, 1); 1298 if (!page) 1299 continue; 1300 } else { 1301 page = rbio_stripe_page(rbio, stripe, pagenr); 1302 } 1303 1304 ret = rbio_add_io_page(rbio, &bio_list, page, 1305 rbio->bbio->tgtdev_map[stripe], 1306 pagenr, rbio->stripe_len); 1307 if (ret) 1308 goto cleanup; 1309 } 1310 } 1311 1312 write_data: 1313 atomic_set(&rbio->stripes_pending, bio_list_size(&bio_list)); 1314 BUG_ON(atomic_read(&rbio->stripes_pending) == 0); 1315 1316 while ((bio = bio_list_pop(&bio_list))) { 1317 bio->bi_private = rbio; 1318 bio->bi_end_io = raid_write_end_io; 1319 bio->bi_opf = REQ_OP_WRITE; 1320 1321 submit_bio(bio); 1322 } 1323 return; 1324 1325 cleanup: 1326 rbio_orig_end_io(rbio, BLK_STS_IOERR); 1327 1328 while ((bio = bio_list_pop(&bio_list))) 1329 bio_put(bio); 1330 } 1331 1332 /* 1333 * helper to find the stripe number for a given bio. Used to figure out which 1334 * stripe has failed. This expects the bio to correspond to a physical disk, 1335 * so it looks up based on physical sector numbers. 1336 */ 1337 static int find_bio_stripe(struct btrfs_raid_bio *rbio, 1338 struct bio *bio) 1339 { 1340 u64 physical = bio->bi_iter.bi_sector; 1341 int i; 1342 struct btrfs_bio_stripe *stripe; 1343 1344 physical <<= 9; 1345 1346 for (i = 0; i < rbio->bbio->num_stripes; i++) { 1347 stripe = &rbio->bbio->stripes[i]; 1348 if (in_range(physical, stripe->physical, rbio->stripe_len) && 1349 stripe->dev->bdev && bio->bi_bdev == stripe->dev->bdev) { 1350 return i; 1351 } 1352 } 1353 return -1; 1354 } 1355 1356 /* 1357 * helper to find the stripe number for a given 1358 * bio (before mapping). Used to figure out which stripe has 1359 * failed. This looks up based on logical block numbers. 1360 */ 1361 static int find_logical_bio_stripe(struct btrfs_raid_bio *rbio, 1362 struct bio *bio) 1363 { 1364 u64 logical = bio->bi_iter.bi_sector << 9; 1365 int i; 1366 1367 for (i = 0; i < rbio->nr_data; i++) { 1368 u64 stripe_start = rbio->bbio->raid_map[i]; 1369 1370 if (in_range(logical, stripe_start, rbio->stripe_len)) 1371 return i; 1372 } 1373 return -1; 1374 } 1375 1376 /* 1377 * returns -EIO if we had too many failures 1378 */ 1379 static int fail_rbio_index(struct btrfs_raid_bio *rbio, int failed) 1380 { 1381 unsigned long flags; 1382 int ret = 0; 1383 1384 spin_lock_irqsave(&rbio->bio_list_lock, flags); 1385 1386 /* we already know this stripe is bad, move on */ 1387 if (rbio->faila == failed || rbio->failb == failed) 1388 goto out; 1389 1390 if (rbio->faila == -1) { 1391 /* first failure on this rbio */ 1392 rbio->faila = failed; 1393 atomic_inc(&rbio->error); 1394 } else if (rbio->failb == -1) { 1395 /* second failure on this rbio */ 1396 rbio->failb = failed; 1397 atomic_inc(&rbio->error); 1398 } else { 1399 ret = -EIO; 1400 } 1401 out: 1402 spin_unlock_irqrestore(&rbio->bio_list_lock, flags); 1403 1404 return ret; 1405 } 1406 1407 /* 1408 * helper to fail a stripe based on a physical disk 1409 * bio. 1410 */ 1411 static int fail_bio_stripe(struct btrfs_raid_bio *rbio, 1412 struct bio *bio) 1413 { 1414 int failed = find_bio_stripe(rbio, bio); 1415 1416 if (failed < 0) 1417 return -EIO; 1418 1419 return fail_rbio_index(rbio, failed); 1420 } 1421 1422 /* 1423 * this sets each page in the bio uptodate. It should only be used on private 1424 * rbio pages, nothing that comes in from the higher layers 1425 */ 1426 static void set_bio_pages_uptodate(struct bio *bio) 1427 { 1428 struct bio_vec *bvec; 1429 struct bvec_iter_all iter_all; 1430 1431 ASSERT(!bio_flagged(bio, BIO_CLONED)); 1432 1433 bio_for_each_segment_all(bvec, bio, iter_all) 1434 SetPageUptodate(bvec->bv_page); 1435 } 1436 1437 /* 1438 * end io for the read phase of the rmw cycle. All the bios here are physical 1439 * stripe bios we've read from the disk so we can recalculate the parity of the 1440 * stripe. 1441 * 1442 * This will usually kick off finish_rmw once all the bios are read in, but it 1443 * may trigger parity reconstruction if we had any errors along the way 1444 */ 1445 static void raid_rmw_end_io(struct bio *bio) 1446 { 1447 struct btrfs_raid_bio *rbio = bio->bi_private; 1448 1449 if (bio->bi_status) 1450 fail_bio_stripe(rbio, bio); 1451 else 1452 set_bio_pages_uptodate(bio); 1453 1454 bio_put(bio); 1455 1456 if (!atomic_dec_and_test(&rbio->stripes_pending)) 1457 return; 1458 1459 if (atomic_read(&rbio->error) > rbio->bbio->max_errors) 1460 goto cleanup; 1461 1462 /* 1463 * this will normally call finish_rmw to start our write 1464 * but if there are any failed stripes we'll reconstruct 1465 * from parity first 1466 */ 1467 validate_rbio_for_rmw(rbio); 1468 return; 1469 1470 cleanup: 1471 1472 rbio_orig_end_io(rbio, BLK_STS_IOERR); 1473 } 1474 1475 /* 1476 * the stripe must be locked by the caller. It will 1477 * unlock after all the writes are done 1478 */ 1479 static int raid56_rmw_stripe(struct btrfs_raid_bio *rbio) 1480 { 1481 int bios_to_read = 0; 1482 struct bio_list bio_list; 1483 int ret; 1484 int pagenr; 1485 int stripe; 1486 struct bio *bio; 1487 1488 bio_list_init(&bio_list); 1489 1490 ret = alloc_rbio_pages(rbio); 1491 if (ret) 1492 goto cleanup; 1493 1494 index_rbio_pages(rbio); 1495 1496 atomic_set(&rbio->error, 0); 1497 /* 1498 * build a list of bios to read all the missing parts of this 1499 * stripe 1500 */ 1501 for (stripe = 0; stripe < rbio->nr_data; stripe++) { 1502 for (pagenr = 0; pagenr < rbio->stripe_npages; pagenr++) { 1503 struct page *page; 1504 /* 1505 * we want to find all the pages missing from 1506 * the rbio and read them from the disk. If 1507 * page_in_rbio finds a page in the bio list 1508 * we don't need to read it off the stripe. 1509 */ 1510 page = page_in_rbio(rbio, stripe, pagenr, 1); 1511 if (page) 1512 continue; 1513 1514 page = rbio_stripe_page(rbio, stripe, pagenr); 1515 /* 1516 * the bio cache may have handed us an uptodate 1517 * page. If so, be happy and use it 1518 */ 1519 if (PageUptodate(page)) 1520 continue; 1521 1522 ret = rbio_add_io_page(rbio, &bio_list, page, 1523 stripe, pagenr, rbio->stripe_len); 1524 if (ret) 1525 goto cleanup; 1526 } 1527 } 1528 1529 bios_to_read = bio_list_size(&bio_list); 1530 if (!bios_to_read) { 1531 /* 1532 * this can happen if others have merged with 1533 * us, it means there is nothing left to read. 1534 * But if there are missing devices it may not be 1535 * safe to do the full stripe write yet. 1536 */ 1537 goto finish; 1538 } 1539 1540 /* 1541 * the bbio may be freed once we submit the last bio. Make sure 1542 * not to touch it after that 1543 */ 1544 atomic_set(&rbio->stripes_pending, bios_to_read); 1545 while ((bio = bio_list_pop(&bio_list))) { 1546 bio->bi_private = rbio; 1547 bio->bi_end_io = raid_rmw_end_io; 1548 bio->bi_opf = REQ_OP_READ; 1549 1550 btrfs_bio_wq_end_io(rbio->fs_info, bio, BTRFS_WQ_ENDIO_RAID56); 1551 1552 submit_bio(bio); 1553 } 1554 /* the actual write will happen once the reads are done */ 1555 return 0; 1556 1557 cleanup: 1558 rbio_orig_end_io(rbio, BLK_STS_IOERR); 1559 1560 while ((bio = bio_list_pop(&bio_list))) 1561 bio_put(bio); 1562 1563 return -EIO; 1564 1565 finish: 1566 validate_rbio_for_rmw(rbio); 1567 return 0; 1568 } 1569 1570 /* 1571 * if the upper layers pass in a full stripe, we thank them by only allocating 1572 * enough pages to hold the parity, and sending it all down quickly. 1573 */ 1574 static int full_stripe_write(struct btrfs_raid_bio *rbio) 1575 { 1576 int ret; 1577 1578 ret = alloc_rbio_parity_pages(rbio); 1579 if (ret) { 1580 __free_raid_bio(rbio); 1581 return ret; 1582 } 1583 1584 ret = lock_stripe_add(rbio); 1585 if (ret == 0) 1586 finish_rmw(rbio); 1587 return 0; 1588 } 1589 1590 /* 1591 * partial stripe writes get handed over to async helpers. 1592 * We're really hoping to merge a few more writes into this 1593 * rbio before calculating new parity 1594 */ 1595 static int partial_stripe_write(struct btrfs_raid_bio *rbio) 1596 { 1597 int ret; 1598 1599 ret = lock_stripe_add(rbio); 1600 if (ret == 0) 1601 start_async_work(rbio, rmw_work); 1602 return 0; 1603 } 1604 1605 /* 1606 * sometimes while we were reading from the drive to 1607 * recalculate parity, enough new bios come into create 1608 * a full stripe. So we do a check here to see if we can 1609 * go directly to finish_rmw 1610 */ 1611 static int __raid56_parity_write(struct btrfs_raid_bio *rbio) 1612 { 1613 /* head off into rmw land if we don't have a full stripe */ 1614 if (!rbio_is_full(rbio)) 1615 return partial_stripe_write(rbio); 1616 return full_stripe_write(rbio); 1617 } 1618 1619 /* 1620 * We use plugging call backs to collect full stripes. 1621 * Any time we get a partial stripe write while plugged 1622 * we collect it into a list. When the unplug comes down, 1623 * we sort the list by logical block number and merge 1624 * everything we can into the same rbios 1625 */ 1626 struct btrfs_plug_cb { 1627 struct blk_plug_cb cb; 1628 struct btrfs_fs_info *info; 1629 struct list_head rbio_list; 1630 struct btrfs_work work; 1631 }; 1632 1633 /* 1634 * rbios on the plug list are sorted for easier merging. 1635 */ 1636 static int plug_cmp(void *priv, const struct list_head *a, 1637 const struct list_head *b) 1638 { 1639 struct btrfs_raid_bio *ra = container_of(a, struct btrfs_raid_bio, 1640 plug_list); 1641 struct btrfs_raid_bio *rb = container_of(b, struct btrfs_raid_bio, 1642 plug_list); 1643 u64 a_sector = ra->bio_list.head->bi_iter.bi_sector; 1644 u64 b_sector = rb->bio_list.head->bi_iter.bi_sector; 1645 1646 if (a_sector < b_sector) 1647 return -1; 1648 if (a_sector > b_sector) 1649 return 1; 1650 return 0; 1651 } 1652 1653 static void run_plug(struct btrfs_plug_cb *plug) 1654 { 1655 struct btrfs_raid_bio *cur; 1656 struct btrfs_raid_bio *last = NULL; 1657 1658 /* 1659 * sort our plug list then try to merge 1660 * everything we can in hopes of creating full 1661 * stripes. 1662 */ 1663 list_sort(NULL, &plug->rbio_list, plug_cmp); 1664 while (!list_empty(&plug->rbio_list)) { 1665 cur = list_entry(plug->rbio_list.next, 1666 struct btrfs_raid_bio, plug_list); 1667 list_del_init(&cur->plug_list); 1668 1669 if (rbio_is_full(cur)) { 1670 int ret; 1671 1672 /* we have a full stripe, send it down */ 1673 ret = full_stripe_write(cur); 1674 BUG_ON(ret); 1675 continue; 1676 } 1677 if (last) { 1678 if (rbio_can_merge(last, cur)) { 1679 merge_rbio(last, cur); 1680 __free_raid_bio(cur); 1681 continue; 1682 1683 } 1684 __raid56_parity_write(last); 1685 } 1686 last = cur; 1687 } 1688 if (last) { 1689 __raid56_parity_write(last); 1690 } 1691 kfree(plug); 1692 } 1693 1694 /* 1695 * if the unplug comes from schedule, we have to push the 1696 * work off to a helper thread 1697 */ 1698 static void unplug_work(struct btrfs_work *work) 1699 { 1700 struct btrfs_plug_cb *plug; 1701 plug = container_of(work, struct btrfs_plug_cb, work); 1702 run_plug(plug); 1703 } 1704 1705 static void btrfs_raid_unplug(struct blk_plug_cb *cb, bool from_schedule) 1706 { 1707 struct btrfs_plug_cb *plug; 1708 plug = container_of(cb, struct btrfs_plug_cb, cb); 1709 1710 if (from_schedule) { 1711 btrfs_init_work(&plug->work, unplug_work, NULL, NULL); 1712 btrfs_queue_work(plug->info->rmw_workers, 1713 &plug->work); 1714 return; 1715 } 1716 run_plug(plug); 1717 } 1718 1719 /* 1720 * our main entry point for writes from the rest of the FS. 1721 */ 1722 int raid56_parity_write(struct btrfs_fs_info *fs_info, struct bio *bio, 1723 struct btrfs_bio *bbio, u64 stripe_len) 1724 { 1725 struct btrfs_raid_bio *rbio; 1726 struct btrfs_plug_cb *plug = NULL; 1727 struct blk_plug_cb *cb; 1728 int ret; 1729 1730 rbio = alloc_rbio(fs_info, bbio, stripe_len); 1731 if (IS_ERR(rbio)) { 1732 btrfs_put_bbio(bbio); 1733 return PTR_ERR(rbio); 1734 } 1735 bio_list_add(&rbio->bio_list, bio); 1736 rbio->bio_list_bytes = bio->bi_iter.bi_size; 1737 rbio->operation = BTRFS_RBIO_WRITE; 1738 1739 btrfs_bio_counter_inc_noblocked(fs_info); 1740 rbio->generic_bio_cnt = 1; 1741 1742 /* 1743 * don't plug on full rbios, just get them out the door 1744 * as quickly as we can 1745 */ 1746 if (rbio_is_full(rbio)) { 1747 ret = full_stripe_write(rbio); 1748 if (ret) 1749 btrfs_bio_counter_dec(fs_info); 1750 return ret; 1751 } 1752 1753 cb = blk_check_plugged(btrfs_raid_unplug, fs_info, sizeof(*plug)); 1754 if (cb) { 1755 plug = container_of(cb, struct btrfs_plug_cb, cb); 1756 if (!plug->info) { 1757 plug->info = fs_info; 1758 INIT_LIST_HEAD(&plug->rbio_list); 1759 } 1760 list_add_tail(&rbio->plug_list, &plug->rbio_list); 1761 ret = 0; 1762 } else { 1763 ret = __raid56_parity_write(rbio); 1764 if (ret) 1765 btrfs_bio_counter_dec(fs_info); 1766 } 1767 return ret; 1768 } 1769 1770 /* 1771 * all parity reconstruction happens here. We've read in everything 1772 * we can find from the drives and this does the heavy lifting of 1773 * sorting the good from the bad. 1774 */ 1775 static void __raid_recover_end_io(struct btrfs_raid_bio *rbio) 1776 { 1777 int pagenr, stripe; 1778 void **pointers; 1779 void **unmap_array; 1780 int faila = -1, failb = -1; 1781 struct page *page; 1782 blk_status_t err; 1783 int i; 1784 1785 pointers = kcalloc(rbio->real_stripes, sizeof(void *), GFP_NOFS); 1786 if (!pointers) { 1787 err = BLK_STS_RESOURCE; 1788 goto cleanup_io; 1789 } 1790 1791 /* 1792 * Store copy of pointers that does not get reordered during 1793 * reconstruction so that kunmap_local works. 1794 */ 1795 unmap_array = kcalloc(rbio->real_stripes, sizeof(void *), GFP_NOFS); 1796 if (!unmap_array) { 1797 err = BLK_STS_RESOURCE; 1798 goto cleanup_pointers; 1799 } 1800 1801 faila = rbio->faila; 1802 failb = rbio->failb; 1803 1804 if (rbio->operation == BTRFS_RBIO_READ_REBUILD || 1805 rbio->operation == BTRFS_RBIO_REBUILD_MISSING) { 1806 spin_lock_irq(&rbio->bio_list_lock); 1807 set_bit(RBIO_RMW_LOCKED_BIT, &rbio->flags); 1808 spin_unlock_irq(&rbio->bio_list_lock); 1809 } 1810 1811 index_rbio_pages(rbio); 1812 1813 for (pagenr = 0; pagenr < rbio->stripe_npages; pagenr++) { 1814 /* 1815 * Now we just use bitmap to mark the horizontal stripes in 1816 * which we have data when doing parity scrub. 1817 */ 1818 if (rbio->operation == BTRFS_RBIO_PARITY_SCRUB && 1819 !test_bit(pagenr, rbio->dbitmap)) 1820 continue; 1821 1822 /* 1823 * Setup our array of pointers with pages from each stripe 1824 * 1825 * NOTE: store a duplicate array of pointers to preserve the 1826 * pointer order 1827 */ 1828 for (stripe = 0; stripe < rbio->real_stripes; stripe++) { 1829 /* 1830 * if we're rebuilding a read, we have to use 1831 * pages from the bio list 1832 */ 1833 if ((rbio->operation == BTRFS_RBIO_READ_REBUILD || 1834 rbio->operation == BTRFS_RBIO_REBUILD_MISSING) && 1835 (stripe == faila || stripe == failb)) { 1836 page = page_in_rbio(rbio, stripe, pagenr, 0); 1837 } else { 1838 page = rbio_stripe_page(rbio, stripe, pagenr); 1839 } 1840 pointers[stripe] = kmap_local_page(page); 1841 unmap_array[stripe] = pointers[stripe]; 1842 } 1843 1844 /* all raid6 handling here */ 1845 if (rbio->bbio->map_type & BTRFS_BLOCK_GROUP_RAID6) { 1846 /* 1847 * single failure, rebuild from parity raid5 1848 * style 1849 */ 1850 if (failb < 0) { 1851 if (faila == rbio->nr_data) { 1852 /* 1853 * Just the P stripe has failed, without 1854 * a bad data or Q stripe. 1855 * TODO, we should redo the xor here. 1856 */ 1857 err = BLK_STS_IOERR; 1858 goto cleanup; 1859 } 1860 /* 1861 * a single failure in raid6 is rebuilt 1862 * in the pstripe code below 1863 */ 1864 goto pstripe; 1865 } 1866 1867 /* make sure our ps and qs are in order */ 1868 if (faila > failb) 1869 swap(faila, failb); 1870 1871 /* if the q stripe is failed, do a pstripe reconstruction 1872 * from the xors. 1873 * If both the q stripe and the P stripe are failed, we're 1874 * here due to a crc mismatch and we can't give them the 1875 * data they want 1876 */ 1877 if (rbio->bbio->raid_map[failb] == RAID6_Q_STRIPE) { 1878 if (rbio->bbio->raid_map[faila] == 1879 RAID5_P_STRIPE) { 1880 err = BLK_STS_IOERR; 1881 goto cleanup; 1882 } 1883 /* 1884 * otherwise we have one bad data stripe and 1885 * a good P stripe. raid5! 1886 */ 1887 goto pstripe; 1888 } 1889 1890 if (rbio->bbio->raid_map[failb] == RAID5_P_STRIPE) { 1891 raid6_datap_recov(rbio->real_stripes, 1892 PAGE_SIZE, faila, pointers); 1893 } else { 1894 raid6_2data_recov(rbio->real_stripes, 1895 PAGE_SIZE, faila, failb, 1896 pointers); 1897 } 1898 } else { 1899 void *p; 1900 1901 /* rebuild from P stripe here (raid5 or raid6) */ 1902 BUG_ON(failb != -1); 1903 pstripe: 1904 /* Copy parity block into failed block to start with */ 1905 copy_page(pointers[faila], pointers[rbio->nr_data]); 1906 1907 /* rearrange the pointer array */ 1908 p = pointers[faila]; 1909 for (stripe = faila; stripe < rbio->nr_data - 1; stripe++) 1910 pointers[stripe] = pointers[stripe + 1]; 1911 pointers[rbio->nr_data - 1] = p; 1912 1913 /* xor in the rest */ 1914 run_xor(pointers, rbio->nr_data - 1, PAGE_SIZE); 1915 } 1916 /* if we're doing this rebuild as part of an rmw, go through 1917 * and set all of our private rbio pages in the 1918 * failed stripes as uptodate. This way finish_rmw will 1919 * know they can be trusted. If this was a read reconstruction, 1920 * other endio functions will fiddle the uptodate bits 1921 */ 1922 if (rbio->operation == BTRFS_RBIO_WRITE) { 1923 for (i = 0; i < rbio->stripe_npages; i++) { 1924 if (faila != -1) { 1925 page = rbio_stripe_page(rbio, faila, i); 1926 SetPageUptodate(page); 1927 } 1928 if (failb != -1) { 1929 page = rbio_stripe_page(rbio, failb, i); 1930 SetPageUptodate(page); 1931 } 1932 } 1933 } 1934 for (stripe = rbio->real_stripes - 1; stripe >= 0; stripe--) 1935 kunmap_local(unmap_array[stripe]); 1936 } 1937 1938 err = BLK_STS_OK; 1939 cleanup: 1940 kfree(unmap_array); 1941 cleanup_pointers: 1942 kfree(pointers); 1943 1944 cleanup_io: 1945 /* 1946 * Similar to READ_REBUILD, REBUILD_MISSING at this point also has a 1947 * valid rbio which is consistent with ondisk content, thus such a 1948 * valid rbio can be cached to avoid further disk reads. 1949 */ 1950 if (rbio->operation == BTRFS_RBIO_READ_REBUILD || 1951 rbio->operation == BTRFS_RBIO_REBUILD_MISSING) { 1952 /* 1953 * - In case of two failures, where rbio->failb != -1: 1954 * 1955 * Do not cache this rbio since the above read reconstruction 1956 * (raid6_datap_recov() or raid6_2data_recov()) may have 1957 * changed some content of stripes which are not identical to 1958 * on-disk content any more, otherwise, a later write/recover 1959 * may steal stripe_pages from this rbio and end up with 1960 * corruptions or rebuild failures. 1961 * 1962 * - In case of single failure, where rbio->failb == -1: 1963 * 1964 * Cache this rbio iff the above read reconstruction is 1965 * executed without problems. 1966 */ 1967 if (err == BLK_STS_OK && rbio->failb < 0) 1968 cache_rbio_pages(rbio); 1969 else 1970 clear_bit(RBIO_CACHE_READY_BIT, &rbio->flags); 1971 1972 rbio_orig_end_io(rbio, err); 1973 } else if (err == BLK_STS_OK) { 1974 rbio->faila = -1; 1975 rbio->failb = -1; 1976 1977 if (rbio->operation == BTRFS_RBIO_WRITE) 1978 finish_rmw(rbio); 1979 else if (rbio->operation == BTRFS_RBIO_PARITY_SCRUB) 1980 finish_parity_scrub(rbio, 0); 1981 else 1982 BUG(); 1983 } else { 1984 rbio_orig_end_io(rbio, err); 1985 } 1986 } 1987 1988 /* 1989 * This is called only for stripes we've read from disk to 1990 * reconstruct the parity. 1991 */ 1992 static void raid_recover_end_io(struct bio *bio) 1993 { 1994 struct btrfs_raid_bio *rbio = bio->bi_private; 1995 1996 /* 1997 * we only read stripe pages off the disk, set them 1998 * up to date if there were no errors 1999 */ 2000 if (bio->bi_status) 2001 fail_bio_stripe(rbio, bio); 2002 else 2003 set_bio_pages_uptodate(bio); 2004 bio_put(bio); 2005 2006 if (!atomic_dec_and_test(&rbio->stripes_pending)) 2007 return; 2008 2009 if (atomic_read(&rbio->error) > rbio->bbio->max_errors) 2010 rbio_orig_end_io(rbio, BLK_STS_IOERR); 2011 else 2012 __raid_recover_end_io(rbio); 2013 } 2014 2015 /* 2016 * reads everything we need off the disk to reconstruct 2017 * the parity. endio handlers trigger final reconstruction 2018 * when the IO is done. 2019 * 2020 * This is used both for reads from the higher layers and for 2021 * parity construction required to finish a rmw cycle. 2022 */ 2023 static int __raid56_parity_recover(struct btrfs_raid_bio *rbio) 2024 { 2025 int bios_to_read = 0; 2026 struct bio_list bio_list; 2027 int ret; 2028 int pagenr; 2029 int stripe; 2030 struct bio *bio; 2031 2032 bio_list_init(&bio_list); 2033 2034 ret = alloc_rbio_pages(rbio); 2035 if (ret) 2036 goto cleanup; 2037 2038 atomic_set(&rbio->error, 0); 2039 2040 /* 2041 * read everything that hasn't failed. Thanks to the 2042 * stripe cache, it is possible that some or all of these 2043 * pages are going to be uptodate. 2044 */ 2045 for (stripe = 0; stripe < rbio->real_stripes; stripe++) { 2046 if (rbio->faila == stripe || rbio->failb == stripe) { 2047 atomic_inc(&rbio->error); 2048 continue; 2049 } 2050 2051 for (pagenr = 0; pagenr < rbio->stripe_npages; pagenr++) { 2052 struct page *p; 2053 2054 /* 2055 * the rmw code may have already read this 2056 * page in 2057 */ 2058 p = rbio_stripe_page(rbio, stripe, pagenr); 2059 if (PageUptodate(p)) 2060 continue; 2061 2062 ret = rbio_add_io_page(rbio, &bio_list, 2063 rbio_stripe_page(rbio, stripe, pagenr), 2064 stripe, pagenr, rbio->stripe_len); 2065 if (ret < 0) 2066 goto cleanup; 2067 } 2068 } 2069 2070 bios_to_read = bio_list_size(&bio_list); 2071 if (!bios_to_read) { 2072 /* 2073 * we might have no bios to read just because the pages 2074 * were up to date, or we might have no bios to read because 2075 * the devices were gone. 2076 */ 2077 if (atomic_read(&rbio->error) <= rbio->bbio->max_errors) { 2078 __raid_recover_end_io(rbio); 2079 return 0; 2080 } else { 2081 goto cleanup; 2082 } 2083 } 2084 2085 /* 2086 * the bbio may be freed once we submit the last bio. Make sure 2087 * not to touch it after that 2088 */ 2089 atomic_set(&rbio->stripes_pending, bios_to_read); 2090 while ((bio = bio_list_pop(&bio_list))) { 2091 bio->bi_private = rbio; 2092 bio->bi_end_io = raid_recover_end_io; 2093 bio->bi_opf = REQ_OP_READ; 2094 2095 btrfs_bio_wq_end_io(rbio->fs_info, bio, BTRFS_WQ_ENDIO_RAID56); 2096 2097 submit_bio(bio); 2098 } 2099 2100 return 0; 2101 2102 cleanup: 2103 if (rbio->operation == BTRFS_RBIO_READ_REBUILD || 2104 rbio->operation == BTRFS_RBIO_REBUILD_MISSING) 2105 rbio_orig_end_io(rbio, BLK_STS_IOERR); 2106 2107 while ((bio = bio_list_pop(&bio_list))) 2108 bio_put(bio); 2109 2110 return -EIO; 2111 } 2112 2113 /* 2114 * the main entry point for reads from the higher layers. This 2115 * is really only called when the normal read path had a failure, 2116 * so we assume the bio they send down corresponds to a failed part 2117 * of the drive. 2118 */ 2119 int raid56_parity_recover(struct btrfs_fs_info *fs_info, struct bio *bio, 2120 struct btrfs_bio *bbio, u64 stripe_len, 2121 int mirror_num, int generic_io) 2122 { 2123 struct btrfs_raid_bio *rbio; 2124 int ret; 2125 2126 if (generic_io) { 2127 ASSERT(bbio->mirror_num == mirror_num); 2128 btrfs_io_bio(bio)->mirror_num = mirror_num; 2129 } 2130 2131 rbio = alloc_rbio(fs_info, bbio, stripe_len); 2132 if (IS_ERR(rbio)) { 2133 if (generic_io) 2134 btrfs_put_bbio(bbio); 2135 return PTR_ERR(rbio); 2136 } 2137 2138 rbio->operation = BTRFS_RBIO_READ_REBUILD; 2139 bio_list_add(&rbio->bio_list, bio); 2140 rbio->bio_list_bytes = bio->bi_iter.bi_size; 2141 2142 rbio->faila = find_logical_bio_stripe(rbio, bio); 2143 if (rbio->faila == -1) { 2144 btrfs_warn(fs_info, 2145 "%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)", 2146 __func__, bio->bi_iter.bi_sector << 9, 2147 (u64)bio->bi_iter.bi_size, bbio->map_type); 2148 if (generic_io) 2149 btrfs_put_bbio(bbio); 2150 kfree(rbio); 2151 return -EIO; 2152 } 2153 2154 if (generic_io) { 2155 btrfs_bio_counter_inc_noblocked(fs_info); 2156 rbio->generic_bio_cnt = 1; 2157 } else { 2158 btrfs_get_bbio(bbio); 2159 } 2160 2161 /* 2162 * Loop retry: 2163 * for 'mirror == 2', reconstruct from all other stripes. 2164 * for 'mirror_num > 2', select a stripe to fail on every retry. 2165 */ 2166 if (mirror_num > 2) { 2167 /* 2168 * 'mirror == 3' is to fail the p stripe and 2169 * reconstruct from the q stripe. 'mirror > 3' is to 2170 * fail a data stripe and reconstruct from p+q stripe. 2171 */ 2172 rbio->failb = rbio->real_stripes - (mirror_num - 1); 2173 ASSERT(rbio->failb > 0); 2174 if (rbio->failb <= rbio->faila) 2175 rbio->failb--; 2176 } 2177 2178 ret = lock_stripe_add(rbio); 2179 2180 /* 2181 * __raid56_parity_recover will end the bio with 2182 * any errors it hits. We don't want to return 2183 * its error value up the stack because our caller 2184 * will end up calling bio_endio with any nonzero 2185 * return 2186 */ 2187 if (ret == 0) 2188 __raid56_parity_recover(rbio); 2189 /* 2190 * our rbio has been added to the list of 2191 * rbios that will be handled after the 2192 * currently lock owner is done 2193 */ 2194 return 0; 2195 2196 } 2197 2198 static void rmw_work(struct btrfs_work *work) 2199 { 2200 struct btrfs_raid_bio *rbio; 2201 2202 rbio = container_of(work, struct btrfs_raid_bio, work); 2203 raid56_rmw_stripe(rbio); 2204 } 2205 2206 static void read_rebuild_work(struct btrfs_work *work) 2207 { 2208 struct btrfs_raid_bio *rbio; 2209 2210 rbio = container_of(work, struct btrfs_raid_bio, work); 2211 __raid56_parity_recover(rbio); 2212 } 2213 2214 /* 2215 * The following code is used to scrub/replace the parity stripe 2216 * 2217 * Caller must have already increased bio_counter for getting @bbio. 2218 * 2219 * Note: We need make sure all the pages that add into the scrub/replace 2220 * raid bio are correct and not be changed during the scrub/replace. That 2221 * is those pages just hold metadata or file data with checksum. 2222 */ 2223 2224 struct btrfs_raid_bio * 2225 raid56_parity_alloc_scrub_rbio(struct btrfs_fs_info *fs_info, struct bio *bio, 2226 struct btrfs_bio *bbio, u64 stripe_len, 2227 struct btrfs_device *scrub_dev, 2228 unsigned long *dbitmap, int stripe_nsectors) 2229 { 2230 struct btrfs_raid_bio *rbio; 2231 int i; 2232 2233 rbio = alloc_rbio(fs_info, bbio, stripe_len); 2234 if (IS_ERR(rbio)) 2235 return NULL; 2236 bio_list_add(&rbio->bio_list, bio); 2237 /* 2238 * This is a special bio which is used to hold the completion handler 2239 * and make the scrub rbio is similar to the other types 2240 */ 2241 ASSERT(!bio->bi_iter.bi_size); 2242 rbio->operation = BTRFS_RBIO_PARITY_SCRUB; 2243 2244 /* 2245 * After mapping bbio with BTRFS_MAP_WRITE, parities have been sorted 2246 * to the end position, so this search can start from the first parity 2247 * stripe. 2248 */ 2249 for (i = rbio->nr_data; i < rbio->real_stripes; i++) { 2250 if (bbio->stripes[i].dev == scrub_dev) { 2251 rbio->scrubp = i; 2252 break; 2253 } 2254 } 2255 ASSERT(i < rbio->real_stripes); 2256 2257 /* Now we just support the sectorsize equals to page size */ 2258 ASSERT(fs_info->sectorsize == PAGE_SIZE); 2259 ASSERT(rbio->stripe_npages == stripe_nsectors); 2260 bitmap_copy(rbio->dbitmap, dbitmap, stripe_nsectors); 2261 2262 /* 2263 * We have already increased bio_counter when getting bbio, record it 2264 * so we can free it at rbio_orig_end_io(). 2265 */ 2266 rbio->generic_bio_cnt = 1; 2267 2268 return rbio; 2269 } 2270 2271 /* Used for both parity scrub and missing. */ 2272 void raid56_add_scrub_pages(struct btrfs_raid_bio *rbio, struct page *page, 2273 u64 logical) 2274 { 2275 int stripe_offset; 2276 int index; 2277 2278 ASSERT(logical >= rbio->bbio->raid_map[0]); 2279 ASSERT(logical + PAGE_SIZE <= rbio->bbio->raid_map[0] + 2280 rbio->stripe_len * rbio->nr_data); 2281 stripe_offset = (int)(logical - rbio->bbio->raid_map[0]); 2282 index = stripe_offset >> PAGE_SHIFT; 2283 rbio->bio_pages[index] = page; 2284 } 2285 2286 /* 2287 * We just scrub the parity that we have correct data on the same horizontal, 2288 * so we needn't allocate all pages for all the stripes. 2289 */ 2290 static int alloc_rbio_essential_pages(struct btrfs_raid_bio *rbio) 2291 { 2292 int i; 2293 int bit; 2294 int index; 2295 struct page *page; 2296 2297 for_each_set_bit(bit, rbio->dbitmap, rbio->stripe_npages) { 2298 for (i = 0; i < rbio->real_stripes; i++) { 2299 index = i * rbio->stripe_npages + bit; 2300 if (rbio->stripe_pages[index]) 2301 continue; 2302 2303 page = alloc_page(GFP_NOFS | __GFP_HIGHMEM); 2304 if (!page) 2305 return -ENOMEM; 2306 rbio->stripe_pages[index] = page; 2307 } 2308 } 2309 return 0; 2310 } 2311 2312 static noinline void finish_parity_scrub(struct btrfs_raid_bio *rbio, 2313 int need_check) 2314 { 2315 struct btrfs_bio *bbio = rbio->bbio; 2316 void **pointers = rbio->finish_pointers; 2317 unsigned long *pbitmap = rbio->finish_pbitmap; 2318 int nr_data = rbio->nr_data; 2319 int stripe; 2320 int pagenr; 2321 bool has_qstripe; 2322 struct page *p_page = NULL; 2323 struct page *q_page = NULL; 2324 struct bio_list bio_list; 2325 struct bio *bio; 2326 int is_replace = 0; 2327 int ret; 2328 2329 bio_list_init(&bio_list); 2330 2331 if (rbio->real_stripes - rbio->nr_data == 1) 2332 has_qstripe = false; 2333 else if (rbio->real_stripes - rbio->nr_data == 2) 2334 has_qstripe = true; 2335 else 2336 BUG(); 2337 2338 if (bbio->num_tgtdevs && bbio->tgtdev_map[rbio->scrubp]) { 2339 is_replace = 1; 2340 bitmap_copy(pbitmap, rbio->dbitmap, rbio->stripe_npages); 2341 } 2342 2343 /* 2344 * Because the higher layers(scrubber) are unlikely to 2345 * use this area of the disk again soon, so don't cache 2346 * it. 2347 */ 2348 clear_bit(RBIO_CACHE_READY_BIT, &rbio->flags); 2349 2350 if (!need_check) 2351 goto writeback; 2352 2353 p_page = alloc_page(GFP_NOFS | __GFP_HIGHMEM); 2354 if (!p_page) 2355 goto cleanup; 2356 SetPageUptodate(p_page); 2357 2358 if (has_qstripe) { 2359 /* RAID6, allocate and map temp space for the Q stripe */ 2360 q_page = alloc_page(GFP_NOFS | __GFP_HIGHMEM); 2361 if (!q_page) { 2362 __free_page(p_page); 2363 goto cleanup; 2364 } 2365 SetPageUptodate(q_page); 2366 pointers[rbio->real_stripes - 1] = kmap_local_page(q_page); 2367 } 2368 2369 atomic_set(&rbio->error, 0); 2370 2371 /* Map the parity stripe just once */ 2372 pointers[nr_data] = kmap_local_page(p_page); 2373 2374 for_each_set_bit(pagenr, rbio->dbitmap, rbio->stripe_npages) { 2375 struct page *p; 2376 void *parity; 2377 /* first collect one page from each data stripe */ 2378 for (stripe = 0; stripe < nr_data; stripe++) { 2379 p = page_in_rbio(rbio, stripe, pagenr, 0); 2380 pointers[stripe] = kmap_local_page(p); 2381 } 2382 2383 if (has_qstripe) { 2384 /* RAID6, call the library function to fill in our P/Q */ 2385 raid6_call.gen_syndrome(rbio->real_stripes, PAGE_SIZE, 2386 pointers); 2387 } else { 2388 /* raid5 */ 2389 copy_page(pointers[nr_data], pointers[0]); 2390 run_xor(pointers + 1, nr_data - 1, PAGE_SIZE); 2391 } 2392 2393 /* Check scrubbing parity and repair it */ 2394 p = rbio_stripe_page(rbio, rbio->scrubp, pagenr); 2395 parity = kmap_local_page(p); 2396 if (memcmp(parity, pointers[rbio->scrubp], PAGE_SIZE)) 2397 copy_page(parity, pointers[rbio->scrubp]); 2398 else 2399 /* Parity is right, needn't writeback */ 2400 bitmap_clear(rbio->dbitmap, pagenr, 1); 2401 kunmap_local(parity); 2402 2403 for (stripe = nr_data - 1; stripe >= 0; stripe--) 2404 kunmap_local(pointers[stripe]); 2405 } 2406 2407 kunmap_local(pointers[nr_data]); 2408 __free_page(p_page); 2409 if (q_page) { 2410 kunmap_local(pointers[rbio->real_stripes - 1]); 2411 __free_page(q_page); 2412 } 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 } 2711