1 /* 2 * Copyright (c) International Business Machines Corp., 2006 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation; either version 2 of the License, or 7 * (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 12 * the GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program; if not, write to the Free Software 16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 * 18 * Author: Artem Bityutskiy (Битюцкий Артём) 19 */ 20 21 /* 22 * The UBI Eraseblock Association (EBA) sub-system. 23 * 24 * This sub-system is responsible for I/O to/from logical eraseblock. 25 * 26 * Although in this implementation the EBA table is fully kept and managed in 27 * RAM, which assumes poor scalability, it might be (partially) maintained on 28 * flash in future implementations. 29 * 30 * The EBA sub-system implements per-logical eraseblock locking. Before 31 * accessing a logical eraseblock it is locked for reading or writing. The 32 * per-logical eraseblock locking is implemented by means of the lock tree. The 33 * lock tree is an RB-tree which refers all the currently locked logical 34 * eraseblocks. The lock tree elements are &struct ubi_ltree_entry objects. 35 * They are indexed by (@vol_id, @lnum) pairs. 36 * 37 * EBA also maintains the global sequence counter which is incremented each 38 * time a logical eraseblock is mapped to a physical eraseblock and it is 39 * stored in the volume identifier header. This means that each VID header has 40 * a unique sequence number. The sequence number is only increased an we assume 41 * 64 bits is enough to never overflow. 42 */ 43 44 #include <linux/slab.h> 45 #include <linux/crc32.h> 46 #include <linux/err.h> 47 #include "ubi.h" 48 49 /* Number of physical eraseblocks reserved for atomic LEB change operation */ 50 #define EBA_RESERVED_PEBS 1 51 52 /** 53 * struct ubi_eba_entry - structure encoding a single LEB -> PEB association 54 * @pnum: the physical eraseblock number attached to the LEB 55 * 56 * This structure is encoding a LEB -> PEB association. Note that the LEB 57 * number is not stored here, because it is the index used to access the 58 * entries table. 59 */ 60 struct ubi_eba_entry { 61 int pnum; 62 }; 63 64 /** 65 * struct ubi_eba_table - LEB -> PEB association information 66 * @entries: the LEB to PEB mapping (one entry per LEB). 67 * 68 * This structure is private to the EBA logic and should be kept here. 69 * It is encoding the LEB to PEB association table, and is subject to 70 * changes. 71 */ 72 struct ubi_eba_table { 73 struct ubi_eba_entry *entries; 74 }; 75 76 /** 77 * next_sqnum - get next sequence number. 78 * @ubi: UBI device description object 79 * 80 * This function returns next sequence number to use, which is just the current 81 * global sequence counter value. It also increases the global sequence 82 * counter. 83 */ 84 unsigned long long ubi_next_sqnum(struct ubi_device *ubi) 85 { 86 unsigned long long sqnum; 87 88 spin_lock(&ubi->ltree_lock); 89 sqnum = ubi->global_sqnum++; 90 spin_unlock(&ubi->ltree_lock); 91 92 return sqnum; 93 } 94 95 /** 96 * ubi_get_compat - get compatibility flags of a volume. 97 * @ubi: UBI device description object 98 * @vol_id: volume ID 99 * 100 * This function returns compatibility flags for an internal volume. User 101 * volumes have no compatibility flags, so %0 is returned. 102 */ 103 static int ubi_get_compat(const struct ubi_device *ubi, int vol_id) 104 { 105 if (vol_id == UBI_LAYOUT_VOLUME_ID) 106 return UBI_LAYOUT_VOLUME_COMPAT; 107 return 0; 108 } 109 110 /** 111 * ubi_eba_get_ldesc - get information about a LEB 112 * @vol: volume description object 113 * @lnum: logical eraseblock number 114 * @ldesc: the LEB descriptor to fill 115 * 116 * Used to query information about a specific LEB. 117 * It is currently only returning the physical position of the LEB, but will be 118 * extended to provide more information. 119 */ 120 void ubi_eba_get_ldesc(struct ubi_volume *vol, int lnum, 121 struct ubi_eba_leb_desc *ldesc) 122 { 123 ldesc->lnum = lnum; 124 ldesc->pnum = vol->eba_tbl->entries[lnum].pnum; 125 } 126 127 /** 128 * ubi_eba_create_table - allocate a new EBA table and initialize it with all 129 * LEBs unmapped 130 * @vol: volume containing the EBA table to copy 131 * @nentries: number of entries in the table 132 * 133 * Allocate a new EBA table and initialize it with all LEBs unmapped. 134 * Returns a valid pointer if it succeed, an ERR_PTR() otherwise. 135 */ 136 struct ubi_eba_table *ubi_eba_create_table(struct ubi_volume *vol, 137 int nentries) 138 { 139 struct ubi_eba_table *tbl; 140 int err = -ENOMEM; 141 int i; 142 143 tbl = kzalloc(sizeof(*tbl), GFP_KERNEL); 144 if (!tbl) 145 return ERR_PTR(-ENOMEM); 146 147 tbl->entries = kmalloc_array(nentries, sizeof(*tbl->entries), 148 GFP_KERNEL); 149 if (!tbl->entries) 150 goto err; 151 152 for (i = 0; i < nentries; i++) 153 tbl->entries[i].pnum = UBI_LEB_UNMAPPED; 154 155 return tbl; 156 157 err: 158 kfree(tbl->entries); 159 kfree(tbl); 160 161 return ERR_PTR(err); 162 } 163 164 /** 165 * ubi_eba_destroy_table - destroy an EBA table 166 * @tbl: the table to destroy 167 * 168 * Destroy an EBA table. 169 */ 170 void ubi_eba_destroy_table(struct ubi_eba_table *tbl) 171 { 172 if (!tbl) 173 return; 174 175 kfree(tbl->entries); 176 kfree(tbl); 177 } 178 179 /** 180 * ubi_eba_copy_table - copy the EBA table attached to vol into another table 181 * @vol: volume containing the EBA table to copy 182 * @dst: destination 183 * @nentries: number of entries to copy 184 * 185 * Copy the EBA table stored in vol into the one pointed by dst. 186 */ 187 void ubi_eba_copy_table(struct ubi_volume *vol, struct ubi_eba_table *dst, 188 int nentries) 189 { 190 struct ubi_eba_table *src; 191 int i; 192 193 ubi_assert(dst && vol && vol->eba_tbl); 194 195 src = vol->eba_tbl; 196 197 for (i = 0; i < nentries; i++) 198 dst->entries[i].pnum = src->entries[i].pnum; 199 } 200 201 /** 202 * ubi_eba_replace_table - assign a new EBA table to a volume 203 * @vol: volume containing the EBA table to copy 204 * @tbl: new EBA table 205 * 206 * Assign a new EBA table to the volume and release the old one. 207 */ 208 void ubi_eba_replace_table(struct ubi_volume *vol, struct ubi_eba_table *tbl) 209 { 210 ubi_eba_destroy_table(vol->eba_tbl); 211 vol->eba_tbl = tbl; 212 } 213 214 /** 215 * ltree_lookup - look up the lock tree. 216 * @ubi: UBI device description object 217 * @vol_id: volume ID 218 * @lnum: logical eraseblock number 219 * 220 * This function returns a pointer to the corresponding &struct ubi_ltree_entry 221 * object if the logical eraseblock is locked and %NULL if it is not. 222 * @ubi->ltree_lock has to be locked. 223 */ 224 static struct ubi_ltree_entry *ltree_lookup(struct ubi_device *ubi, int vol_id, 225 int lnum) 226 { 227 struct rb_node *p; 228 229 p = ubi->ltree.rb_node; 230 while (p) { 231 struct ubi_ltree_entry *le; 232 233 le = rb_entry(p, struct ubi_ltree_entry, rb); 234 235 if (vol_id < le->vol_id) 236 p = p->rb_left; 237 else if (vol_id > le->vol_id) 238 p = p->rb_right; 239 else { 240 if (lnum < le->lnum) 241 p = p->rb_left; 242 else if (lnum > le->lnum) 243 p = p->rb_right; 244 else 245 return le; 246 } 247 } 248 249 return NULL; 250 } 251 252 /** 253 * ltree_add_entry - add new entry to the lock tree. 254 * @ubi: UBI device description object 255 * @vol_id: volume ID 256 * @lnum: logical eraseblock number 257 * 258 * This function adds new entry for logical eraseblock (@vol_id, @lnum) to the 259 * lock tree. If such entry is already there, its usage counter is increased. 260 * Returns pointer to the lock tree entry or %-ENOMEM if memory allocation 261 * failed. 262 */ 263 static struct ubi_ltree_entry *ltree_add_entry(struct ubi_device *ubi, 264 int vol_id, int lnum) 265 { 266 struct ubi_ltree_entry *le, *le1, *le_free; 267 268 le = kmalloc(sizeof(struct ubi_ltree_entry), GFP_NOFS); 269 if (!le) 270 return ERR_PTR(-ENOMEM); 271 272 le->users = 0; 273 init_rwsem(&le->mutex); 274 le->vol_id = vol_id; 275 le->lnum = lnum; 276 277 spin_lock(&ubi->ltree_lock); 278 le1 = ltree_lookup(ubi, vol_id, lnum); 279 280 if (le1) { 281 /* 282 * This logical eraseblock is already locked. The newly 283 * allocated lock entry is not needed. 284 */ 285 le_free = le; 286 le = le1; 287 } else { 288 struct rb_node **p, *parent = NULL; 289 290 /* 291 * No lock entry, add the newly allocated one to the 292 * @ubi->ltree RB-tree. 293 */ 294 le_free = NULL; 295 296 p = &ubi->ltree.rb_node; 297 while (*p) { 298 parent = *p; 299 le1 = rb_entry(parent, struct ubi_ltree_entry, rb); 300 301 if (vol_id < le1->vol_id) 302 p = &(*p)->rb_left; 303 else if (vol_id > le1->vol_id) 304 p = &(*p)->rb_right; 305 else { 306 ubi_assert(lnum != le1->lnum); 307 if (lnum < le1->lnum) 308 p = &(*p)->rb_left; 309 else 310 p = &(*p)->rb_right; 311 } 312 } 313 314 rb_link_node(&le->rb, parent, p); 315 rb_insert_color(&le->rb, &ubi->ltree); 316 } 317 le->users += 1; 318 spin_unlock(&ubi->ltree_lock); 319 320 kfree(le_free); 321 return le; 322 } 323 324 /** 325 * leb_read_lock - lock logical eraseblock for reading. 326 * @ubi: UBI device description object 327 * @vol_id: volume ID 328 * @lnum: logical eraseblock number 329 * 330 * This function locks a logical eraseblock for reading. Returns zero in case 331 * of success and a negative error code in case of failure. 332 */ 333 static int leb_read_lock(struct ubi_device *ubi, int vol_id, int lnum) 334 { 335 struct ubi_ltree_entry *le; 336 337 le = ltree_add_entry(ubi, vol_id, lnum); 338 if (IS_ERR(le)) 339 return PTR_ERR(le); 340 down_read(&le->mutex); 341 return 0; 342 } 343 344 /** 345 * leb_read_unlock - unlock logical eraseblock. 346 * @ubi: UBI device description object 347 * @vol_id: volume ID 348 * @lnum: logical eraseblock number 349 */ 350 static void leb_read_unlock(struct ubi_device *ubi, int vol_id, int lnum) 351 { 352 struct ubi_ltree_entry *le; 353 354 spin_lock(&ubi->ltree_lock); 355 le = ltree_lookup(ubi, vol_id, lnum); 356 le->users -= 1; 357 ubi_assert(le->users >= 0); 358 up_read(&le->mutex); 359 if (le->users == 0) { 360 rb_erase(&le->rb, &ubi->ltree); 361 kfree(le); 362 } 363 spin_unlock(&ubi->ltree_lock); 364 } 365 366 /** 367 * leb_write_lock - lock logical eraseblock for writing. 368 * @ubi: UBI device description object 369 * @vol_id: volume ID 370 * @lnum: logical eraseblock number 371 * 372 * This function locks a logical eraseblock for writing. Returns zero in case 373 * of success and a negative error code in case of failure. 374 */ 375 static int leb_write_lock(struct ubi_device *ubi, int vol_id, int lnum) 376 { 377 struct ubi_ltree_entry *le; 378 379 le = ltree_add_entry(ubi, vol_id, lnum); 380 if (IS_ERR(le)) 381 return PTR_ERR(le); 382 down_write(&le->mutex); 383 return 0; 384 } 385 386 /** 387 * leb_write_trylock - try to lock logical eraseblock for writing. 388 * @ubi: UBI device description object 389 * @vol_id: volume ID 390 * @lnum: logical eraseblock number 391 * 392 * This function locks a logical eraseblock for writing if there is no 393 * contention and does nothing if there is contention. Returns %0 in case of 394 * success, %1 in case of contention, and and a negative error code in case of 395 * failure. 396 */ 397 static int leb_write_trylock(struct ubi_device *ubi, int vol_id, int lnum) 398 { 399 struct ubi_ltree_entry *le; 400 401 le = ltree_add_entry(ubi, vol_id, lnum); 402 if (IS_ERR(le)) 403 return PTR_ERR(le); 404 if (down_write_trylock(&le->mutex)) 405 return 0; 406 407 /* Contention, cancel */ 408 spin_lock(&ubi->ltree_lock); 409 le->users -= 1; 410 ubi_assert(le->users >= 0); 411 if (le->users == 0) { 412 rb_erase(&le->rb, &ubi->ltree); 413 kfree(le); 414 } 415 spin_unlock(&ubi->ltree_lock); 416 417 return 1; 418 } 419 420 /** 421 * leb_write_unlock - unlock logical eraseblock. 422 * @ubi: UBI device description object 423 * @vol_id: volume ID 424 * @lnum: logical eraseblock number 425 */ 426 static void leb_write_unlock(struct ubi_device *ubi, int vol_id, int lnum) 427 { 428 struct ubi_ltree_entry *le; 429 430 spin_lock(&ubi->ltree_lock); 431 le = ltree_lookup(ubi, vol_id, lnum); 432 le->users -= 1; 433 ubi_assert(le->users >= 0); 434 up_write(&le->mutex); 435 if (le->users == 0) { 436 rb_erase(&le->rb, &ubi->ltree); 437 kfree(le); 438 } 439 spin_unlock(&ubi->ltree_lock); 440 } 441 442 /** 443 * ubi_eba_is_mapped - check if a LEB is mapped. 444 * @vol: volume description object 445 * @lnum: logical eraseblock number 446 * 447 * This function returns true if the LEB is mapped, false otherwise. 448 */ 449 bool ubi_eba_is_mapped(struct ubi_volume *vol, int lnum) 450 { 451 return vol->eba_tbl->entries[lnum].pnum >= 0; 452 } 453 454 /** 455 * ubi_eba_unmap_leb - un-map logical eraseblock. 456 * @ubi: UBI device description object 457 * @vol: volume description object 458 * @lnum: logical eraseblock number 459 * 460 * This function un-maps logical eraseblock @lnum and schedules corresponding 461 * physical eraseblock for erasure. Returns zero in case of success and a 462 * negative error code in case of failure. 463 */ 464 int ubi_eba_unmap_leb(struct ubi_device *ubi, struct ubi_volume *vol, 465 int lnum) 466 { 467 int err, pnum, vol_id = vol->vol_id; 468 469 if (ubi->ro_mode) 470 return -EROFS; 471 472 err = leb_write_lock(ubi, vol_id, lnum); 473 if (err) 474 return err; 475 476 pnum = vol->eba_tbl->entries[lnum].pnum; 477 if (pnum < 0) 478 /* This logical eraseblock is already unmapped */ 479 goto out_unlock; 480 481 dbg_eba("erase LEB %d:%d, PEB %d", vol_id, lnum, pnum); 482 483 down_read(&ubi->fm_eba_sem); 484 vol->eba_tbl->entries[lnum].pnum = UBI_LEB_UNMAPPED; 485 up_read(&ubi->fm_eba_sem); 486 err = ubi_wl_put_peb(ubi, vol_id, lnum, pnum, 0); 487 488 out_unlock: 489 leb_write_unlock(ubi, vol_id, lnum); 490 return err; 491 } 492 493 /** 494 * ubi_eba_read_leb - read data. 495 * @ubi: UBI device description object 496 * @vol: volume description object 497 * @lnum: logical eraseblock number 498 * @buf: buffer to store the read data 499 * @offset: offset from where to read 500 * @len: how many bytes to read 501 * @check: data CRC check flag 502 * 503 * If the logical eraseblock @lnum is unmapped, @buf is filled with 0xFF 504 * bytes. The @check flag only makes sense for static volumes and forces 505 * eraseblock data CRC checking. 506 * 507 * In case of success this function returns zero. In case of a static volume, 508 * if data CRC mismatches - %-EBADMSG is returned. %-EBADMSG may also be 509 * returned for any volume type if an ECC error was detected by the MTD device 510 * driver. Other negative error cored may be returned in case of other errors. 511 */ 512 int ubi_eba_read_leb(struct ubi_device *ubi, struct ubi_volume *vol, int lnum, 513 void *buf, int offset, int len, int check) 514 { 515 int err, pnum, scrub = 0, vol_id = vol->vol_id; 516 struct ubi_vid_io_buf *vidb; 517 struct ubi_vid_hdr *vid_hdr; 518 uint32_t uninitialized_var(crc); 519 520 err = leb_read_lock(ubi, vol_id, lnum); 521 if (err) 522 return err; 523 524 pnum = vol->eba_tbl->entries[lnum].pnum; 525 if (pnum < 0) { 526 /* 527 * The logical eraseblock is not mapped, fill the whole buffer 528 * with 0xFF bytes. The exception is static volumes for which 529 * it is an error to read unmapped logical eraseblocks. 530 */ 531 dbg_eba("read %d bytes from offset %d of LEB %d:%d (unmapped)", 532 len, offset, vol_id, lnum); 533 leb_read_unlock(ubi, vol_id, lnum); 534 ubi_assert(vol->vol_type != UBI_STATIC_VOLUME); 535 memset(buf, 0xFF, len); 536 return 0; 537 } 538 539 dbg_eba("read %d bytes from offset %d of LEB %d:%d, PEB %d", 540 len, offset, vol_id, lnum, pnum); 541 542 if (vol->vol_type == UBI_DYNAMIC_VOLUME) 543 check = 0; 544 545 retry: 546 if (check) { 547 vidb = ubi_alloc_vid_buf(ubi, GFP_NOFS); 548 if (!vidb) { 549 err = -ENOMEM; 550 goto out_unlock; 551 } 552 553 vid_hdr = ubi_get_vid_hdr(vidb); 554 555 err = ubi_io_read_vid_hdr(ubi, pnum, vidb, 1); 556 if (err && err != UBI_IO_BITFLIPS) { 557 if (err > 0) { 558 /* 559 * The header is either absent or corrupted. 560 * The former case means there is a bug - 561 * switch to read-only mode just in case. 562 * The latter case means a real corruption - we 563 * may try to recover data. FIXME: but this is 564 * not implemented. 565 */ 566 if (err == UBI_IO_BAD_HDR_EBADMSG || 567 err == UBI_IO_BAD_HDR) { 568 ubi_warn(ubi, "corrupted VID header at PEB %d, LEB %d:%d", 569 pnum, vol_id, lnum); 570 err = -EBADMSG; 571 } else { 572 /* 573 * Ending up here in the non-Fastmap case 574 * is a clear bug as the VID header had to 575 * be present at scan time to have it referenced. 576 * With fastmap the story is more complicated. 577 * Fastmap has the mapping info without the need 578 * of a full scan. So the LEB could have been 579 * unmapped, Fastmap cannot know this and keeps 580 * the LEB referenced. 581 * This is valid and works as the layer above UBI 582 * has to do bookkeeping about used/referenced 583 * LEBs in any case. 584 */ 585 if (ubi->fast_attach) { 586 err = -EBADMSG; 587 } else { 588 err = -EINVAL; 589 ubi_ro_mode(ubi); 590 } 591 } 592 } 593 goto out_free; 594 } else if (err == UBI_IO_BITFLIPS) 595 scrub = 1; 596 597 ubi_assert(lnum < be32_to_cpu(vid_hdr->used_ebs)); 598 ubi_assert(len == be32_to_cpu(vid_hdr->data_size)); 599 600 crc = be32_to_cpu(vid_hdr->data_crc); 601 ubi_free_vid_buf(vidb); 602 } 603 604 err = ubi_io_read_data(ubi, buf, pnum, offset, len); 605 if (err) { 606 if (err == UBI_IO_BITFLIPS) 607 scrub = 1; 608 else if (mtd_is_eccerr(err)) { 609 if (vol->vol_type == UBI_DYNAMIC_VOLUME) 610 goto out_unlock; 611 scrub = 1; 612 if (!check) { 613 ubi_msg(ubi, "force data checking"); 614 check = 1; 615 goto retry; 616 } 617 } else 618 goto out_unlock; 619 } 620 621 if (check) { 622 uint32_t crc1 = crc32(UBI_CRC32_INIT, buf, len); 623 if (crc1 != crc) { 624 ubi_warn(ubi, "CRC error: calculated %#08x, must be %#08x", 625 crc1, crc); 626 err = -EBADMSG; 627 goto out_unlock; 628 } 629 } 630 631 if (scrub) 632 err = ubi_wl_scrub_peb(ubi, pnum); 633 634 leb_read_unlock(ubi, vol_id, lnum); 635 return err; 636 637 out_free: 638 ubi_free_vid_buf(vidb); 639 out_unlock: 640 leb_read_unlock(ubi, vol_id, lnum); 641 return err; 642 } 643 644 /** 645 * ubi_eba_read_leb_sg - read data into a scatter gather list. 646 * @ubi: UBI device description object 647 * @vol: volume description object 648 * @lnum: logical eraseblock number 649 * @sgl: UBI scatter gather list to store the read data 650 * @offset: offset from where to read 651 * @len: how many bytes to read 652 * @check: data CRC check flag 653 * 654 * This function works exactly like ubi_eba_read_leb(). But instead of 655 * storing the read data into a buffer it writes to an UBI scatter gather 656 * list. 657 */ 658 int ubi_eba_read_leb_sg(struct ubi_device *ubi, struct ubi_volume *vol, 659 struct ubi_sgl *sgl, int lnum, int offset, int len, 660 int check) 661 { 662 int to_read; 663 int ret; 664 struct scatterlist *sg; 665 666 for (;;) { 667 ubi_assert(sgl->list_pos < UBI_MAX_SG_COUNT); 668 sg = &sgl->sg[sgl->list_pos]; 669 if (len < sg->length - sgl->page_pos) 670 to_read = len; 671 else 672 to_read = sg->length - sgl->page_pos; 673 674 ret = ubi_eba_read_leb(ubi, vol, lnum, 675 sg_virt(sg) + sgl->page_pos, offset, 676 to_read, check); 677 if (ret < 0) 678 return ret; 679 680 offset += to_read; 681 len -= to_read; 682 if (!len) { 683 sgl->page_pos += to_read; 684 if (sgl->page_pos == sg->length) { 685 sgl->list_pos++; 686 sgl->page_pos = 0; 687 } 688 689 break; 690 } 691 692 sgl->list_pos++; 693 sgl->page_pos = 0; 694 } 695 696 return ret; 697 } 698 699 /** 700 * try_recover_peb - try to recover from write failure. 701 * @vol: volume description object 702 * @pnum: the physical eraseblock to recover 703 * @lnum: logical eraseblock number 704 * @buf: data which was not written because of the write failure 705 * @offset: offset of the failed write 706 * @len: how many bytes should have been written 707 * @vidb: VID buffer 708 * @retry: whether the caller should retry in case of failure 709 * 710 * This function is called in case of a write failure and moves all good data 711 * from the potentially bad physical eraseblock to a good physical eraseblock. 712 * This function also writes the data which was not written due to the failure. 713 * Returns 0 in case of success, and a negative error code in case of failure. 714 * In case of failure, the %retry parameter is set to false if this is a fatal 715 * error (retrying won't help), and true otherwise. 716 */ 717 static int try_recover_peb(struct ubi_volume *vol, int pnum, int lnum, 718 const void *buf, int offset, int len, 719 struct ubi_vid_io_buf *vidb, bool *retry) 720 { 721 struct ubi_device *ubi = vol->ubi; 722 struct ubi_vid_hdr *vid_hdr; 723 int new_pnum, err, vol_id = vol->vol_id, data_size; 724 uint32_t crc; 725 726 *retry = false; 727 728 new_pnum = ubi_wl_get_peb(ubi); 729 if (new_pnum < 0) { 730 err = new_pnum; 731 goto out_put; 732 } 733 734 ubi_msg(ubi, "recover PEB %d, move data to PEB %d", 735 pnum, new_pnum); 736 737 err = ubi_io_read_vid_hdr(ubi, pnum, vidb, 1); 738 if (err && err != UBI_IO_BITFLIPS) { 739 if (err > 0) 740 err = -EIO; 741 goto out_put; 742 } 743 744 vid_hdr = ubi_get_vid_hdr(vidb); 745 ubi_assert(vid_hdr->vol_type == UBI_VID_DYNAMIC); 746 747 mutex_lock(&ubi->buf_mutex); 748 memset(ubi->peb_buf + offset, 0xFF, len); 749 750 /* Read everything before the area where the write failure happened */ 751 if (offset > 0) { 752 err = ubi_io_read_data(ubi, ubi->peb_buf, pnum, 0, offset); 753 if (err && err != UBI_IO_BITFLIPS) 754 goto out_unlock; 755 } 756 757 *retry = true; 758 759 memcpy(ubi->peb_buf + offset, buf, len); 760 761 data_size = offset + len; 762 crc = crc32(UBI_CRC32_INIT, ubi->peb_buf, data_size); 763 vid_hdr->sqnum = cpu_to_be64(ubi_next_sqnum(ubi)); 764 vid_hdr->copy_flag = 1; 765 vid_hdr->data_size = cpu_to_be32(data_size); 766 vid_hdr->data_crc = cpu_to_be32(crc); 767 err = ubi_io_write_vid_hdr(ubi, new_pnum, vidb); 768 if (err) 769 goto out_unlock; 770 771 err = ubi_io_write_data(ubi, ubi->peb_buf, new_pnum, 0, data_size); 772 773 out_unlock: 774 mutex_unlock(&ubi->buf_mutex); 775 776 if (!err) 777 vol->eba_tbl->entries[lnum].pnum = new_pnum; 778 779 out_put: 780 up_read(&ubi->fm_eba_sem); 781 782 if (!err) { 783 ubi_wl_put_peb(ubi, vol_id, lnum, pnum, 1); 784 ubi_msg(ubi, "data was successfully recovered"); 785 } else if (new_pnum >= 0) { 786 /* 787 * Bad luck? This physical eraseblock is bad too? Crud. Let's 788 * try to get another one. 789 */ 790 ubi_wl_put_peb(ubi, vol_id, lnum, new_pnum, 1); 791 ubi_warn(ubi, "failed to write to PEB %d", new_pnum); 792 } 793 794 return err; 795 } 796 797 /** 798 * recover_peb - recover from write failure. 799 * @ubi: UBI device description object 800 * @pnum: the physical eraseblock to recover 801 * @vol_id: volume ID 802 * @lnum: logical eraseblock number 803 * @buf: data which was not written because of the write failure 804 * @offset: offset of the failed write 805 * @len: how many bytes should have been written 806 * 807 * This function is called in case of a write failure and moves all good data 808 * from the potentially bad physical eraseblock to a good physical eraseblock. 809 * This function also writes the data which was not written due to the failure. 810 * Returns 0 in case of success, and a negative error code in case of failure. 811 * This function tries %UBI_IO_RETRIES before giving up. 812 */ 813 static int recover_peb(struct ubi_device *ubi, int pnum, int vol_id, int lnum, 814 const void *buf, int offset, int len) 815 { 816 int err, idx = vol_id2idx(ubi, vol_id), tries; 817 struct ubi_volume *vol = ubi->volumes[idx]; 818 struct ubi_vid_io_buf *vidb; 819 820 vidb = ubi_alloc_vid_buf(ubi, GFP_NOFS); 821 if (!vidb) 822 return -ENOMEM; 823 824 for (tries = 0; tries <= UBI_IO_RETRIES; tries++) { 825 bool retry; 826 827 err = try_recover_peb(vol, pnum, lnum, buf, offset, len, vidb, 828 &retry); 829 if (!err || !retry) 830 break; 831 832 ubi_msg(ubi, "try again"); 833 } 834 835 ubi_free_vid_buf(vidb); 836 837 return err; 838 } 839 840 /** 841 * try_write_vid_and_data - try to write VID header and data to a new PEB. 842 * @vol: volume description object 843 * @lnum: logical eraseblock number 844 * @vidb: the VID buffer to write 845 * @buf: buffer containing the data 846 * @offset: where to start writing data 847 * @len: how many bytes should be written 848 * 849 * This function tries to write VID header and data belonging to logical 850 * eraseblock @lnum of volume @vol to a new physical eraseblock. Returns zero 851 * in case of success and a negative error code in case of failure. 852 * In case of error, it is possible that something was still written to the 853 * flash media, but may be some garbage. 854 */ 855 static int try_write_vid_and_data(struct ubi_volume *vol, int lnum, 856 struct ubi_vid_io_buf *vidb, const void *buf, 857 int offset, int len) 858 { 859 struct ubi_device *ubi = vol->ubi; 860 int pnum, opnum, err, vol_id = vol->vol_id; 861 862 pnum = ubi_wl_get_peb(ubi); 863 if (pnum < 0) { 864 err = pnum; 865 goto out_put; 866 } 867 868 opnum = vol->eba_tbl->entries[lnum].pnum; 869 870 dbg_eba("write VID hdr and %d bytes at offset %d of LEB %d:%d, PEB %d", 871 len, offset, vol_id, lnum, pnum); 872 873 err = ubi_io_write_vid_hdr(ubi, pnum, vidb); 874 if (err) { 875 ubi_warn(ubi, "failed to write VID header to LEB %d:%d, PEB %d", 876 vol_id, lnum, pnum); 877 goto out_put; 878 } 879 880 if (len) { 881 err = ubi_io_write_data(ubi, buf, pnum, offset, len); 882 if (err) { 883 ubi_warn(ubi, 884 "failed to write %d bytes at offset %d of LEB %d:%d, PEB %d", 885 len, offset, vol_id, lnum, pnum); 886 goto out_put; 887 } 888 } 889 890 vol->eba_tbl->entries[lnum].pnum = pnum; 891 892 out_put: 893 up_read(&ubi->fm_eba_sem); 894 895 if (err && pnum >= 0) 896 err = ubi_wl_put_peb(ubi, vol_id, lnum, pnum, 1); 897 else if (!err && opnum >= 0) 898 err = ubi_wl_put_peb(ubi, vol_id, lnum, opnum, 0); 899 900 return err; 901 } 902 903 /** 904 * ubi_eba_write_leb - write data to dynamic volume. 905 * @ubi: UBI device description object 906 * @vol: volume description object 907 * @lnum: logical eraseblock number 908 * @buf: the data to write 909 * @offset: offset within the logical eraseblock where to write 910 * @len: how many bytes to write 911 * 912 * This function writes data to logical eraseblock @lnum of a dynamic volume 913 * @vol. Returns zero in case of success and a negative error code in case 914 * of failure. In case of error, it is possible that something was still 915 * written to the flash media, but may be some garbage. 916 * This function retries %UBI_IO_RETRIES times before giving up. 917 */ 918 int ubi_eba_write_leb(struct ubi_device *ubi, struct ubi_volume *vol, int lnum, 919 const void *buf, int offset, int len) 920 { 921 int err, pnum, tries, vol_id = vol->vol_id; 922 struct ubi_vid_io_buf *vidb; 923 struct ubi_vid_hdr *vid_hdr; 924 925 if (ubi->ro_mode) 926 return -EROFS; 927 928 err = leb_write_lock(ubi, vol_id, lnum); 929 if (err) 930 return err; 931 932 pnum = vol->eba_tbl->entries[lnum].pnum; 933 if (pnum >= 0) { 934 dbg_eba("write %d bytes at offset %d of LEB %d:%d, PEB %d", 935 len, offset, vol_id, lnum, pnum); 936 937 err = ubi_io_write_data(ubi, buf, pnum, offset, len); 938 if (err) { 939 ubi_warn(ubi, "failed to write data to PEB %d", pnum); 940 if (err == -EIO && ubi->bad_allowed) 941 err = recover_peb(ubi, pnum, vol_id, lnum, buf, 942 offset, len); 943 } 944 945 goto out; 946 } 947 948 /* 949 * The logical eraseblock is not mapped. We have to get a free physical 950 * eraseblock and write the volume identifier header there first. 951 */ 952 vidb = ubi_alloc_vid_buf(ubi, GFP_NOFS); 953 if (!vidb) { 954 leb_write_unlock(ubi, vol_id, lnum); 955 return -ENOMEM; 956 } 957 958 vid_hdr = ubi_get_vid_hdr(vidb); 959 960 vid_hdr->vol_type = UBI_VID_DYNAMIC; 961 vid_hdr->sqnum = cpu_to_be64(ubi_next_sqnum(ubi)); 962 vid_hdr->vol_id = cpu_to_be32(vol_id); 963 vid_hdr->lnum = cpu_to_be32(lnum); 964 vid_hdr->compat = ubi_get_compat(ubi, vol_id); 965 vid_hdr->data_pad = cpu_to_be32(vol->data_pad); 966 967 for (tries = 0; tries <= UBI_IO_RETRIES; tries++) { 968 err = try_write_vid_and_data(vol, lnum, vidb, buf, offset, len); 969 if (err != -EIO || !ubi->bad_allowed) 970 break; 971 972 /* 973 * Fortunately, this is the first write operation to this 974 * physical eraseblock, so just put it and request a new one. 975 * We assume that if this physical eraseblock went bad, the 976 * erase code will handle that. 977 */ 978 vid_hdr->sqnum = cpu_to_be64(ubi_next_sqnum(ubi)); 979 ubi_msg(ubi, "try another PEB"); 980 } 981 982 ubi_free_vid_buf(vidb); 983 984 out: 985 if (err) 986 ubi_ro_mode(ubi); 987 988 leb_write_unlock(ubi, vol_id, lnum); 989 990 return err; 991 } 992 993 /** 994 * ubi_eba_write_leb_st - write data to static volume. 995 * @ubi: UBI device description object 996 * @vol: volume description object 997 * @lnum: logical eraseblock number 998 * @buf: data to write 999 * @len: how many bytes to write 1000 * @used_ebs: how many logical eraseblocks will this volume contain 1001 * 1002 * This function writes data to logical eraseblock @lnum of static volume 1003 * @vol. The @used_ebs argument should contain total number of logical 1004 * eraseblock in this static volume. 1005 * 1006 * When writing to the last logical eraseblock, the @len argument doesn't have 1007 * to be aligned to the minimal I/O unit size. Instead, it has to be equivalent 1008 * to the real data size, although the @buf buffer has to contain the 1009 * alignment. In all other cases, @len has to be aligned. 1010 * 1011 * It is prohibited to write more than once to logical eraseblocks of static 1012 * volumes. This function returns zero in case of success and a negative error 1013 * code in case of failure. 1014 */ 1015 int ubi_eba_write_leb_st(struct ubi_device *ubi, struct ubi_volume *vol, 1016 int lnum, const void *buf, int len, int used_ebs) 1017 { 1018 int err, tries, data_size = len, vol_id = vol->vol_id; 1019 struct ubi_vid_io_buf *vidb; 1020 struct ubi_vid_hdr *vid_hdr; 1021 uint32_t crc; 1022 1023 if (ubi->ro_mode) 1024 return -EROFS; 1025 1026 if (lnum == used_ebs - 1) 1027 /* If this is the last LEB @len may be unaligned */ 1028 len = ALIGN(data_size, ubi->min_io_size); 1029 else 1030 ubi_assert(!(len & (ubi->min_io_size - 1))); 1031 1032 vidb = ubi_alloc_vid_buf(ubi, GFP_NOFS); 1033 if (!vidb) 1034 return -ENOMEM; 1035 1036 vid_hdr = ubi_get_vid_hdr(vidb); 1037 1038 err = leb_write_lock(ubi, vol_id, lnum); 1039 if (err) 1040 goto out; 1041 1042 vid_hdr->sqnum = cpu_to_be64(ubi_next_sqnum(ubi)); 1043 vid_hdr->vol_id = cpu_to_be32(vol_id); 1044 vid_hdr->lnum = cpu_to_be32(lnum); 1045 vid_hdr->compat = ubi_get_compat(ubi, vol_id); 1046 vid_hdr->data_pad = cpu_to_be32(vol->data_pad); 1047 1048 crc = crc32(UBI_CRC32_INIT, buf, data_size); 1049 vid_hdr->vol_type = UBI_VID_STATIC; 1050 vid_hdr->data_size = cpu_to_be32(data_size); 1051 vid_hdr->used_ebs = cpu_to_be32(used_ebs); 1052 vid_hdr->data_crc = cpu_to_be32(crc); 1053 1054 ubi_assert(vol->eba_tbl->entries[lnum].pnum < 0); 1055 1056 for (tries = 0; tries <= UBI_IO_RETRIES; tries++) { 1057 err = try_write_vid_and_data(vol, lnum, vidb, buf, 0, len); 1058 if (err != -EIO || !ubi->bad_allowed) 1059 break; 1060 1061 vid_hdr->sqnum = cpu_to_be64(ubi_next_sqnum(ubi)); 1062 ubi_msg(ubi, "try another PEB"); 1063 } 1064 1065 if (err) 1066 ubi_ro_mode(ubi); 1067 1068 leb_write_unlock(ubi, vol_id, lnum); 1069 1070 out: 1071 ubi_free_vid_buf(vidb); 1072 1073 return err; 1074 } 1075 1076 /* 1077 * ubi_eba_atomic_leb_change - change logical eraseblock atomically. 1078 * @ubi: UBI device description object 1079 * @vol: volume description object 1080 * @lnum: logical eraseblock number 1081 * @buf: data to write 1082 * @len: how many bytes to write 1083 * 1084 * This function changes the contents of a logical eraseblock atomically. @buf 1085 * has to contain new logical eraseblock data, and @len - the length of the 1086 * data, which has to be aligned. This function guarantees that in case of an 1087 * unclean reboot the old contents is preserved. Returns zero in case of 1088 * success and a negative error code in case of failure. 1089 * 1090 * UBI reserves one LEB for the "atomic LEB change" operation, so only one 1091 * LEB change may be done at a time. This is ensured by @ubi->alc_mutex. 1092 */ 1093 int ubi_eba_atomic_leb_change(struct ubi_device *ubi, struct ubi_volume *vol, 1094 int lnum, const void *buf, int len) 1095 { 1096 int err, tries, vol_id = vol->vol_id; 1097 struct ubi_vid_io_buf *vidb; 1098 struct ubi_vid_hdr *vid_hdr; 1099 uint32_t crc; 1100 1101 if (ubi->ro_mode) 1102 return -EROFS; 1103 1104 if (len == 0) { 1105 /* 1106 * Special case when data length is zero. In this case the LEB 1107 * has to be unmapped and mapped somewhere else. 1108 */ 1109 err = ubi_eba_unmap_leb(ubi, vol, lnum); 1110 if (err) 1111 return err; 1112 return ubi_eba_write_leb(ubi, vol, lnum, NULL, 0, 0); 1113 } 1114 1115 vidb = ubi_alloc_vid_buf(ubi, GFP_NOFS); 1116 if (!vidb) 1117 return -ENOMEM; 1118 1119 vid_hdr = ubi_get_vid_hdr(vidb); 1120 1121 mutex_lock(&ubi->alc_mutex); 1122 err = leb_write_lock(ubi, vol_id, lnum); 1123 if (err) 1124 goto out_mutex; 1125 1126 vid_hdr->sqnum = cpu_to_be64(ubi_next_sqnum(ubi)); 1127 vid_hdr->vol_id = cpu_to_be32(vol_id); 1128 vid_hdr->lnum = cpu_to_be32(lnum); 1129 vid_hdr->compat = ubi_get_compat(ubi, vol_id); 1130 vid_hdr->data_pad = cpu_to_be32(vol->data_pad); 1131 1132 crc = crc32(UBI_CRC32_INIT, buf, len); 1133 vid_hdr->vol_type = UBI_VID_DYNAMIC; 1134 vid_hdr->data_size = cpu_to_be32(len); 1135 vid_hdr->copy_flag = 1; 1136 vid_hdr->data_crc = cpu_to_be32(crc); 1137 1138 dbg_eba("change LEB %d:%d", vol_id, lnum); 1139 1140 for (tries = 0; tries <= UBI_IO_RETRIES; tries++) { 1141 err = try_write_vid_and_data(vol, lnum, vidb, buf, 0, len); 1142 if (err != -EIO || !ubi->bad_allowed) 1143 break; 1144 1145 vid_hdr->sqnum = cpu_to_be64(ubi_next_sqnum(ubi)); 1146 ubi_msg(ubi, "try another PEB"); 1147 } 1148 1149 /* 1150 * This flash device does not admit of bad eraseblocks or 1151 * something nasty and unexpected happened. Switch to read-only 1152 * mode just in case. 1153 */ 1154 if (err) 1155 ubi_ro_mode(ubi); 1156 1157 leb_write_unlock(ubi, vol_id, lnum); 1158 1159 out_mutex: 1160 mutex_unlock(&ubi->alc_mutex); 1161 ubi_free_vid_buf(vidb); 1162 return err; 1163 } 1164 1165 /** 1166 * is_error_sane - check whether a read error is sane. 1167 * @err: code of the error happened during reading 1168 * 1169 * This is a helper function for 'ubi_eba_copy_leb()' which is called when we 1170 * cannot read data from the target PEB (an error @err happened). If the error 1171 * code is sane, then we treat this error as non-fatal. Otherwise the error is 1172 * fatal and UBI will be switched to R/O mode later. 1173 * 1174 * The idea is that we try not to switch to R/O mode if the read error is 1175 * something which suggests there was a real read problem. E.g., %-EIO. Or a 1176 * memory allocation failed (-%ENOMEM). Otherwise, it is safer to switch to R/O 1177 * mode, simply because we do not know what happened at the MTD level, and we 1178 * cannot handle this. E.g., the underlying driver may have become crazy, and 1179 * it is safer to switch to R/O mode to preserve the data. 1180 * 1181 * And bear in mind, this is about reading from the target PEB, i.e. the PEB 1182 * which we have just written. 1183 */ 1184 static int is_error_sane(int err) 1185 { 1186 if (err == -EIO || err == -ENOMEM || err == UBI_IO_BAD_HDR || 1187 err == UBI_IO_BAD_HDR_EBADMSG || err == -ETIMEDOUT) 1188 return 0; 1189 return 1; 1190 } 1191 1192 /** 1193 * ubi_eba_copy_leb - copy logical eraseblock. 1194 * @ubi: UBI device description object 1195 * @from: physical eraseblock number from where to copy 1196 * @to: physical eraseblock number where to copy 1197 * @vid_hdr: VID header of the @from physical eraseblock 1198 * 1199 * This function copies logical eraseblock from physical eraseblock @from to 1200 * physical eraseblock @to. The @vid_hdr buffer may be changed by this 1201 * function. Returns: 1202 * o %0 in case of success; 1203 * o %MOVE_CANCEL_RACE, %MOVE_TARGET_WR_ERR, %MOVE_TARGET_BITFLIPS, etc; 1204 * o a negative error code in case of failure. 1205 */ 1206 int ubi_eba_copy_leb(struct ubi_device *ubi, int from, int to, 1207 struct ubi_vid_io_buf *vidb) 1208 { 1209 int err, vol_id, lnum, data_size, aldata_size, idx; 1210 struct ubi_vid_hdr *vid_hdr = ubi_get_vid_hdr(vidb); 1211 struct ubi_volume *vol; 1212 uint32_t crc; 1213 1214 ubi_assert(rwsem_is_locked(&ubi->fm_eba_sem)); 1215 1216 vol_id = be32_to_cpu(vid_hdr->vol_id); 1217 lnum = be32_to_cpu(vid_hdr->lnum); 1218 1219 dbg_wl("copy LEB %d:%d, PEB %d to PEB %d", vol_id, lnum, from, to); 1220 1221 if (vid_hdr->vol_type == UBI_VID_STATIC) { 1222 data_size = be32_to_cpu(vid_hdr->data_size); 1223 aldata_size = ALIGN(data_size, ubi->min_io_size); 1224 } else 1225 data_size = aldata_size = 1226 ubi->leb_size - be32_to_cpu(vid_hdr->data_pad); 1227 1228 idx = vol_id2idx(ubi, vol_id); 1229 spin_lock(&ubi->volumes_lock); 1230 /* 1231 * Note, we may race with volume deletion, which means that the volume 1232 * this logical eraseblock belongs to might be being deleted. Since the 1233 * volume deletion un-maps all the volume's logical eraseblocks, it will 1234 * be locked in 'ubi_wl_put_peb()' and wait for the WL worker to finish. 1235 */ 1236 vol = ubi->volumes[idx]; 1237 spin_unlock(&ubi->volumes_lock); 1238 if (!vol) { 1239 /* No need to do further work, cancel */ 1240 dbg_wl("volume %d is being removed, cancel", vol_id); 1241 return MOVE_CANCEL_RACE; 1242 } 1243 1244 /* 1245 * We do not want anybody to write to this logical eraseblock while we 1246 * are moving it, so lock it. 1247 * 1248 * Note, we are using non-waiting locking here, because we cannot sleep 1249 * on the LEB, since it may cause deadlocks. Indeed, imagine a task is 1250 * unmapping the LEB which is mapped to the PEB we are going to move 1251 * (@from). This task locks the LEB and goes sleep in the 1252 * 'ubi_wl_put_peb()' function on the @ubi->move_mutex. In turn, we are 1253 * holding @ubi->move_mutex and go sleep on the LEB lock. So, if the 1254 * LEB is already locked, we just do not move it and return 1255 * %MOVE_RETRY. Note, we do not return %MOVE_CANCEL_RACE here because 1256 * we do not know the reasons of the contention - it may be just a 1257 * normal I/O on this LEB, so we want to re-try. 1258 */ 1259 err = leb_write_trylock(ubi, vol_id, lnum); 1260 if (err) { 1261 dbg_wl("contention on LEB %d:%d, cancel", vol_id, lnum); 1262 return MOVE_RETRY; 1263 } 1264 1265 /* 1266 * The LEB might have been put meanwhile, and the task which put it is 1267 * probably waiting on @ubi->move_mutex. No need to continue the work, 1268 * cancel it. 1269 */ 1270 if (vol->eba_tbl->entries[lnum].pnum != from) { 1271 dbg_wl("LEB %d:%d is no longer mapped to PEB %d, mapped to PEB %d, cancel", 1272 vol_id, lnum, from, vol->eba_tbl->entries[lnum].pnum); 1273 err = MOVE_CANCEL_RACE; 1274 goto out_unlock_leb; 1275 } 1276 1277 /* 1278 * OK, now the LEB is locked and we can safely start moving it. Since 1279 * this function utilizes the @ubi->peb_buf buffer which is shared 1280 * with some other functions - we lock the buffer by taking the 1281 * @ubi->buf_mutex. 1282 */ 1283 mutex_lock(&ubi->buf_mutex); 1284 dbg_wl("read %d bytes of data", aldata_size); 1285 err = ubi_io_read_data(ubi, ubi->peb_buf, from, 0, aldata_size); 1286 if (err && err != UBI_IO_BITFLIPS) { 1287 ubi_warn(ubi, "error %d while reading data from PEB %d", 1288 err, from); 1289 err = MOVE_SOURCE_RD_ERR; 1290 goto out_unlock_buf; 1291 } 1292 1293 /* 1294 * Now we have got to calculate how much data we have to copy. In 1295 * case of a static volume it is fairly easy - the VID header contains 1296 * the data size. In case of a dynamic volume it is more difficult - we 1297 * have to read the contents, cut 0xFF bytes from the end and copy only 1298 * the first part. We must do this to avoid writing 0xFF bytes as it 1299 * may have some side-effects. And not only this. It is important not 1300 * to include those 0xFFs to CRC because later the they may be filled 1301 * by data. 1302 */ 1303 if (vid_hdr->vol_type == UBI_VID_DYNAMIC) 1304 aldata_size = data_size = 1305 ubi_calc_data_len(ubi, ubi->peb_buf, data_size); 1306 1307 cond_resched(); 1308 crc = crc32(UBI_CRC32_INIT, ubi->peb_buf, data_size); 1309 cond_resched(); 1310 1311 /* 1312 * It may turn out to be that the whole @from physical eraseblock 1313 * contains only 0xFF bytes. Then we have to only write the VID header 1314 * and do not write any data. This also means we should not set 1315 * @vid_hdr->copy_flag, @vid_hdr->data_size, and @vid_hdr->data_crc. 1316 */ 1317 if (data_size > 0) { 1318 vid_hdr->copy_flag = 1; 1319 vid_hdr->data_size = cpu_to_be32(data_size); 1320 vid_hdr->data_crc = cpu_to_be32(crc); 1321 } 1322 vid_hdr->sqnum = cpu_to_be64(ubi_next_sqnum(ubi)); 1323 1324 err = ubi_io_write_vid_hdr(ubi, to, vidb); 1325 if (err) { 1326 if (err == -EIO) 1327 err = MOVE_TARGET_WR_ERR; 1328 goto out_unlock_buf; 1329 } 1330 1331 cond_resched(); 1332 1333 /* Read the VID header back and check if it was written correctly */ 1334 err = ubi_io_read_vid_hdr(ubi, to, vidb, 1); 1335 if (err) { 1336 if (err != UBI_IO_BITFLIPS) { 1337 ubi_warn(ubi, "error %d while reading VID header back from PEB %d", 1338 err, to); 1339 if (is_error_sane(err)) 1340 err = MOVE_TARGET_RD_ERR; 1341 } else 1342 err = MOVE_TARGET_BITFLIPS; 1343 goto out_unlock_buf; 1344 } 1345 1346 if (data_size > 0) { 1347 err = ubi_io_write_data(ubi, ubi->peb_buf, to, 0, aldata_size); 1348 if (err) { 1349 if (err == -EIO) 1350 err = MOVE_TARGET_WR_ERR; 1351 goto out_unlock_buf; 1352 } 1353 1354 cond_resched(); 1355 } 1356 1357 ubi_assert(vol->eba_tbl->entries[lnum].pnum == from); 1358 vol->eba_tbl->entries[lnum].pnum = to; 1359 1360 out_unlock_buf: 1361 mutex_unlock(&ubi->buf_mutex); 1362 out_unlock_leb: 1363 leb_write_unlock(ubi, vol_id, lnum); 1364 return err; 1365 } 1366 1367 /** 1368 * print_rsvd_warning - warn about not having enough reserved PEBs. 1369 * @ubi: UBI device description object 1370 * 1371 * This is a helper function for 'ubi_eba_init()' which is called when UBI 1372 * cannot reserve enough PEBs for bad block handling. This function makes a 1373 * decision whether we have to print a warning or not. The algorithm is as 1374 * follows: 1375 * o if this is a new UBI image, then just print the warning 1376 * o if this is an UBI image which has already been used for some time, print 1377 * a warning only if we can reserve less than 10% of the expected amount of 1378 * the reserved PEB. 1379 * 1380 * The idea is that when UBI is used, PEBs become bad, and the reserved pool 1381 * of PEBs becomes smaller, which is normal and we do not want to scare users 1382 * with a warning every time they attach the MTD device. This was an issue 1383 * reported by real users. 1384 */ 1385 static void print_rsvd_warning(struct ubi_device *ubi, 1386 struct ubi_attach_info *ai) 1387 { 1388 /* 1389 * The 1 << 18 (256KiB) number is picked randomly, just a reasonably 1390 * large number to distinguish between newly flashed and used images. 1391 */ 1392 if (ai->max_sqnum > (1 << 18)) { 1393 int min = ubi->beb_rsvd_level / 10; 1394 1395 if (!min) 1396 min = 1; 1397 if (ubi->beb_rsvd_pebs > min) 1398 return; 1399 } 1400 1401 ubi_warn(ubi, "cannot reserve enough PEBs for bad PEB handling, reserved %d, need %d", 1402 ubi->beb_rsvd_pebs, ubi->beb_rsvd_level); 1403 if (ubi->corr_peb_count) 1404 ubi_warn(ubi, "%d PEBs are corrupted and not used", 1405 ubi->corr_peb_count); 1406 } 1407 1408 /** 1409 * self_check_eba - run a self check on the EBA table constructed by fastmap. 1410 * @ubi: UBI device description object 1411 * @ai_fastmap: UBI attach info object created by fastmap 1412 * @ai_scan: UBI attach info object created by scanning 1413 * 1414 * Returns < 0 in case of an internal error, 0 otherwise. 1415 * If a bad EBA table entry was found it will be printed out and 1416 * ubi_assert() triggers. 1417 */ 1418 int self_check_eba(struct ubi_device *ubi, struct ubi_attach_info *ai_fastmap, 1419 struct ubi_attach_info *ai_scan) 1420 { 1421 int i, j, num_volumes, ret = 0; 1422 int **scan_eba, **fm_eba; 1423 struct ubi_ainf_volume *av; 1424 struct ubi_volume *vol; 1425 struct ubi_ainf_peb *aeb; 1426 struct rb_node *rb; 1427 1428 num_volumes = ubi->vtbl_slots + UBI_INT_VOL_COUNT; 1429 1430 scan_eba = kmalloc(sizeof(*scan_eba) * num_volumes, GFP_KERNEL); 1431 if (!scan_eba) 1432 return -ENOMEM; 1433 1434 fm_eba = kmalloc(sizeof(*fm_eba) * num_volumes, GFP_KERNEL); 1435 if (!fm_eba) { 1436 kfree(scan_eba); 1437 return -ENOMEM; 1438 } 1439 1440 for (i = 0; i < num_volumes; i++) { 1441 vol = ubi->volumes[i]; 1442 if (!vol) 1443 continue; 1444 1445 scan_eba[i] = kmalloc(vol->reserved_pebs * sizeof(**scan_eba), 1446 GFP_KERNEL); 1447 if (!scan_eba[i]) { 1448 ret = -ENOMEM; 1449 goto out_free; 1450 } 1451 1452 fm_eba[i] = kmalloc(vol->reserved_pebs * sizeof(**fm_eba), 1453 GFP_KERNEL); 1454 if (!fm_eba[i]) { 1455 ret = -ENOMEM; 1456 goto out_free; 1457 } 1458 1459 for (j = 0; j < vol->reserved_pebs; j++) 1460 scan_eba[i][j] = fm_eba[i][j] = UBI_LEB_UNMAPPED; 1461 1462 av = ubi_find_av(ai_scan, idx2vol_id(ubi, i)); 1463 if (!av) 1464 continue; 1465 1466 ubi_rb_for_each_entry(rb, aeb, &av->root, u.rb) 1467 scan_eba[i][aeb->lnum] = aeb->pnum; 1468 1469 av = ubi_find_av(ai_fastmap, idx2vol_id(ubi, i)); 1470 if (!av) 1471 continue; 1472 1473 ubi_rb_for_each_entry(rb, aeb, &av->root, u.rb) 1474 fm_eba[i][aeb->lnum] = aeb->pnum; 1475 1476 for (j = 0; j < vol->reserved_pebs; j++) { 1477 if (scan_eba[i][j] != fm_eba[i][j]) { 1478 if (scan_eba[i][j] == UBI_LEB_UNMAPPED || 1479 fm_eba[i][j] == UBI_LEB_UNMAPPED) 1480 continue; 1481 1482 ubi_err(ubi, "LEB:%i:%i is PEB:%i instead of %i!", 1483 vol->vol_id, j, fm_eba[i][j], 1484 scan_eba[i][j]); 1485 ubi_assert(0); 1486 } 1487 } 1488 } 1489 1490 out_free: 1491 for (i = 0; i < num_volumes; i++) { 1492 if (!ubi->volumes[i]) 1493 continue; 1494 1495 kfree(scan_eba[i]); 1496 kfree(fm_eba[i]); 1497 } 1498 1499 kfree(scan_eba); 1500 kfree(fm_eba); 1501 return ret; 1502 } 1503 1504 /** 1505 * ubi_eba_init - initialize the EBA sub-system using attaching information. 1506 * @ubi: UBI device description object 1507 * @ai: attaching information 1508 * 1509 * This function returns zero in case of success and a negative error code in 1510 * case of failure. 1511 */ 1512 int ubi_eba_init(struct ubi_device *ubi, struct ubi_attach_info *ai) 1513 { 1514 int i, err, num_volumes; 1515 struct ubi_ainf_volume *av; 1516 struct ubi_volume *vol; 1517 struct ubi_ainf_peb *aeb; 1518 struct rb_node *rb; 1519 1520 dbg_eba("initialize EBA sub-system"); 1521 1522 spin_lock_init(&ubi->ltree_lock); 1523 mutex_init(&ubi->alc_mutex); 1524 ubi->ltree = RB_ROOT; 1525 1526 ubi->global_sqnum = ai->max_sqnum + 1; 1527 num_volumes = ubi->vtbl_slots + UBI_INT_VOL_COUNT; 1528 1529 for (i = 0; i < num_volumes; i++) { 1530 struct ubi_eba_table *tbl; 1531 1532 vol = ubi->volumes[i]; 1533 if (!vol) 1534 continue; 1535 1536 cond_resched(); 1537 1538 tbl = ubi_eba_create_table(vol, vol->reserved_pebs); 1539 if (IS_ERR(tbl)) { 1540 err = PTR_ERR(tbl); 1541 goto out_free; 1542 } 1543 1544 ubi_eba_replace_table(vol, tbl); 1545 1546 av = ubi_find_av(ai, idx2vol_id(ubi, i)); 1547 if (!av) 1548 continue; 1549 1550 ubi_rb_for_each_entry(rb, aeb, &av->root, u.rb) { 1551 if (aeb->lnum >= vol->reserved_pebs) { 1552 /* 1553 * This may happen in case of an unclean reboot 1554 * during re-size. 1555 */ 1556 ubi_move_aeb_to_list(av, aeb, &ai->erase); 1557 } else { 1558 struct ubi_eba_entry *entry; 1559 1560 entry = &vol->eba_tbl->entries[aeb->lnum]; 1561 entry->pnum = aeb->pnum; 1562 } 1563 } 1564 } 1565 1566 if (ubi->avail_pebs < EBA_RESERVED_PEBS) { 1567 ubi_err(ubi, "no enough physical eraseblocks (%d, need %d)", 1568 ubi->avail_pebs, EBA_RESERVED_PEBS); 1569 if (ubi->corr_peb_count) 1570 ubi_err(ubi, "%d PEBs are corrupted and not used", 1571 ubi->corr_peb_count); 1572 err = -ENOSPC; 1573 goto out_free; 1574 } 1575 ubi->avail_pebs -= EBA_RESERVED_PEBS; 1576 ubi->rsvd_pebs += EBA_RESERVED_PEBS; 1577 1578 if (ubi->bad_allowed) { 1579 ubi_calculate_reserved(ubi); 1580 1581 if (ubi->avail_pebs < ubi->beb_rsvd_level) { 1582 /* No enough free physical eraseblocks */ 1583 ubi->beb_rsvd_pebs = ubi->avail_pebs; 1584 print_rsvd_warning(ubi, ai); 1585 } else 1586 ubi->beb_rsvd_pebs = ubi->beb_rsvd_level; 1587 1588 ubi->avail_pebs -= ubi->beb_rsvd_pebs; 1589 ubi->rsvd_pebs += ubi->beb_rsvd_pebs; 1590 } 1591 1592 dbg_eba("EBA sub-system is initialized"); 1593 return 0; 1594 1595 out_free: 1596 for (i = 0; i < num_volumes; i++) { 1597 if (!ubi->volumes[i]) 1598 continue; 1599 ubi_eba_replace_table(ubi->volumes[i], NULL); 1600 } 1601 return err; 1602 } 1603