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_lock - 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_hdr *vid_hdr; 517 uint32_t uninitialized_var(crc); 518 519 err = leb_read_lock(ubi, vol_id, lnum); 520 if (err) 521 return err; 522 523 pnum = vol->eba_tbl->entries[lnum].pnum; 524 if (pnum < 0) { 525 /* 526 * The logical eraseblock is not mapped, fill the whole buffer 527 * with 0xFF bytes. The exception is static volumes for which 528 * it is an error to read unmapped logical eraseblocks. 529 */ 530 dbg_eba("read %d bytes from offset %d of LEB %d:%d (unmapped)", 531 len, offset, vol_id, lnum); 532 leb_read_unlock(ubi, vol_id, lnum); 533 ubi_assert(vol->vol_type != UBI_STATIC_VOLUME); 534 memset(buf, 0xFF, len); 535 return 0; 536 } 537 538 dbg_eba("read %d bytes from offset %d of LEB %d:%d, PEB %d", 539 len, offset, vol_id, lnum, pnum); 540 541 if (vol->vol_type == UBI_DYNAMIC_VOLUME) 542 check = 0; 543 544 retry: 545 if (check) { 546 vid_hdr = ubi_zalloc_vid_hdr(ubi, GFP_NOFS); 547 if (!vid_hdr) { 548 err = -ENOMEM; 549 goto out_unlock; 550 } 551 552 err = ubi_io_read_vid_hdr(ubi, pnum, vid_hdr, 1); 553 if (err && err != UBI_IO_BITFLIPS) { 554 if (err > 0) { 555 /* 556 * The header is either absent or corrupted. 557 * The former case means there is a bug - 558 * switch to read-only mode just in case. 559 * The latter case means a real corruption - we 560 * may try to recover data. FIXME: but this is 561 * not implemented. 562 */ 563 if (err == UBI_IO_BAD_HDR_EBADMSG || 564 err == UBI_IO_BAD_HDR) { 565 ubi_warn(ubi, "corrupted VID header at PEB %d, LEB %d:%d", 566 pnum, vol_id, lnum); 567 err = -EBADMSG; 568 } else { 569 /* 570 * Ending up here in the non-Fastmap case 571 * is a clear bug as the VID header had to 572 * be present at scan time to have it referenced. 573 * With fastmap the story is more complicated. 574 * Fastmap has the mapping info without the need 575 * of a full scan. So the LEB could have been 576 * unmapped, Fastmap cannot know this and keeps 577 * the LEB referenced. 578 * This is valid and works as the layer above UBI 579 * has to do bookkeeping about used/referenced 580 * LEBs in any case. 581 */ 582 if (ubi->fast_attach) { 583 err = -EBADMSG; 584 } else { 585 err = -EINVAL; 586 ubi_ro_mode(ubi); 587 } 588 } 589 } 590 goto out_free; 591 } else if (err == UBI_IO_BITFLIPS) 592 scrub = 1; 593 594 ubi_assert(lnum < be32_to_cpu(vid_hdr->used_ebs)); 595 ubi_assert(len == be32_to_cpu(vid_hdr->data_size)); 596 597 crc = be32_to_cpu(vid_hdr->data_crc); 598 ubi_free_vid_hdr(ubi, vid_hdr); 599 } 600 601 err = ubi_io_read_data(ubi, buf, pnum, offset, len); 602 if (err) { 603 if (err == UBI_IO_BITFLIPS) 604 scrub = 1; 605 else if (mtd_is_eccerr(err)) { 606 if (vol->vol_type == UBI_DYNAMIC_VOLUME) 607 goto out_unlock; 608 scrub = 1; 609 if (!check) { 610 ubi_msg(ubi, "force data checking"); 611 check = 1; 612 goto retry; 613 } 614 } else 615 goto out_unlock; 616 } 617 618 if (check) { 619 uint32_t crc1 = crc32(UBI_CRC32_INIT, buf, len); 620 if (crc1 != crc) { 621 ubi_warn(ubi, "CRC error: calculated %#08x, must be %#08x", 622 crc1, crc); 623 err = -EBADMSG; 624 goto out_unlock; 625 } 626 } 627 628 if (scrub) 629 err = ubi_wl_scrub_peb(ubi, pnum); 630 631 leb_read_unlock(ubi, vol_id, lnum); 632 return err; 633 634 out_free: 635 ubi_free_vid_hdr(ubi, vid_hdr); 636 out_unlock: 637 leb_read_unlock(ubi, vol_id, lnum); 638 return err; 639 } 640 641 /** 642 * ubi_eba_read_leb_sg - read data into a scatter gather list. 643 * @ubi: UBI device description object 644 * @vol: volume description object 645 * @lnum: logical eraseblock number 646 * @sgl: UBI scatter gather list to store the read data 647 * @offset: offset from where to read 648 * @len: how many bytes to read 649 * @check: data CRC check flag 650 * 651 * This function works exactly like ubi_eba_read_leb(). But instead of 652 * storing the read data into a buffer it writes to an UBI scatter gather 653 * list. 654 */ 655 int ubi_eba_read_leb_sg(struct ubi_device *ubi, struct ubi_volume *vol, 656 struct ubi_sgl *sgl, int lnum, int offset, int len, 657 int check) 658 { 659 int to_read; 660 int ret; 661 struct scatterlist *sg; 662 663 for (;;) { 664 ubi_assert(sgl->list_pos < UBI_MAX_SG_COUNT); 665 sg = &sgl->sg[sgl->list_pos]; 666 if (len < sg->length - sgl->page_pos) 667 to_read = len; 668 else 669 to_read = sg->length - sgl->page_pos; 670 671 ret = ubi_eba_read_leb(ubi, vol, lnum, 672 sg_virt(sg) + sgl->page_pos, offset, 673 to_read, check); 674 if (ret < 0) 675 return ret; 676 677 offset += to_read; 678 len -= to_read; 679 if (!len) { 680 sgl->page_pos += to_read; 681 if (sgl->page_pos == sg->length) { 682 sgl->list_pos++; 683 sgl->page_pos = 0; 684 } 685 686 break; 687 } 688 689 sgl->list_pos++; 690 sgl->page_pos = 0; 691 } 692 693 return ret; 694 } 695 696 /** 697 * try_recover_peb - try to recover from write failure. 698 * @vol: volume description object 699 * @pnum: the physical eraseblock to recover 700 * @lnum: logical eraseblock number 701 * @buf: data which was not written because of the write failure 702 * @offset: offset of the failed write 703 * @len: how many bytes should have been written 704 * @vid: VID header 705 * @retry: whether the caller should retry in case of failure 706 * 707 * This function is called in case of a write failure and moves all good data 708 * from the potentially bad physical eraseblock to a good physical eraseblock. 709 * This function also writes the data which was not written due to the failure. 710 * Returns 0 in case of success, and a negative error code in case of failure. 711 * In case of failure, the %retry parameter is set to false if this is a fatal 712 * error (retrying won't help), and true otherwise. 713 */ 714 static int try_recover_peb(struct ubi_volume *vol, int pnum, int lnum, 715 const void *buf, int offset, int len, 716 struct ubi_vid_hdr *vid_hdr, bool *retry) 717 { 718 struct ubi_device *ubi = vol->ubi; 719 int new_pnum, err, vol_id = vol->vol_id, data_size; 720 uint32_t crc; 721 722 *retry = false; 723 724 new_pnum = ubi_wl_get_peb(ubi); 725 if (new_pnum < 0) { 726 err = new_pnum; 727 goto out_put; 728 } 729 730 ubi_msg(ubi, "recover PEB %d, move data to PEB %d", 731 pnum, new_pnum); 732 733 err = ubi_io_read_vid_hdr(ubi, pnum, vid_hdr, 1); 734 if (err && err != UBI_IO_BITFLIPS) { 735 if (err > 0) 736 err = -EIO; 737 goto out_put; 738 } 739 740 ubi_assert(vid_hdr->vol_type == UBI_VID_DYNAMIC); 741 742 mutex_lock(&ubi->buf_mutex); 743 memset(ubi->peb_buf + offset, 0xFF, len); 744 745 /* Read everything before the area where the write failure happened */ 746 if (offset > 0) { 747 err = ubi_io_read_data(ubi, ubi->peb_buf, pnum, 0, offset); 748 if (err && err != UBI_IO_BITFLIPS) 749 goto out_unlock; 750 } 751 752 *retry = true; 753 754 memcpy(ubi->peb_buf + offset, buf, len); 755 756 data_size = offset + len; 757 crc = crc32(UBI_CRC32_INIT, ubi->peb_buf, data_size); 758 vid_hdr->sqnum = cpu_to_be64(ubi_next_sqnum(ubi)); 759 vid_hdr->copy_flag = 1; 760 vid_hdr->data_size = cpu_to_be32(data_size); 761 vid_hdr->data_crc = cpu_to_be32(crc); 762 err = ubi_io_write_vid_hdr(ubi, new_pnum, vid_hdr); 763 if (err) 764 goto out_unlock; 765 766 err = ubi_io_write_data(ubi, ubi->peb_buf, new_pnum, 0, data_size); 767 768 out_unlock: 769 mutex_unlock(&ubi->buf_mutex); 770 771 if (!err) 772 vol->eba_tbl->entries[lnum].pnum = new_pnum; 773 774 out_put: 775 up_read(&ubi->fm_eba_sem); 776 777 if (!err) { 778 ubi_wl_put_peb(ubi, vol_id, lnum, pnum, 1); 779 ubi_msg(ubi, "data was successfully recovered"); 780 } else if (new_pnum >= 0) { 781 /* 782 * Bad luck? This physical eraseblock is bad too? Crud. Let's 783 * try to get another one. 784 */ 785 ubi_wl_put_peb(ubi, vol_id, lnum, new_pnum, 1); 786 ubi_warn(ubi, "failed to write to PEB %d", new_pnum); 787 } 788 789 return err; 790 } 791 792 /** 793 * recover_peb - recover from write failure. 794 * @ubi: UBI device description object 795 * @pnum: the physical eraseblock to recover 796 * @vol_id: volume ID 797 * @lnum: logical eraseblock number 798 * @buf: data which was not written because of the write failure 799 * @offset: offset of the failed write 800 * @len: how many bytes should have been written 801 * 802 * This function is called in case of a write failure and moves all good data 803 * from the potentially bad physical eraseblock to a good physical eraseblock. 804 * This function also writes the data which was not written due to the failure. 805 * Returns 0 in case of success, and a negative error code in case of failure. 806 * This function tries %UBI_IO_RETRIES before giving up. 807 */ 808 static int recover_peb(struct ubi_device *ubi, int pnum, int vol_id, int lnum, 809 const void *buf, int offset, int len) 810 { 811 int err, idx = vol_id2idx(ubi, vol_id), tries; 812 struct ubi_volume *vol = ubi->volumes[idx]; 813 struct ubi_vid_hdr *vid_hdr; 814 815 vid_hdr = ubi_zalloc_vid_hdr(ubi, GFP_NOFS); 816 if (!vid_hdr) 817 return -ENOMEM; 818 819 for (tries = 0; tries <= UBI_IO_RETRIES; tries++) { 820 bool retry; 821 822 err = try_recover_peb(vol, pnum, lnum, buf, offset, len, 823 vid_hdr, &retry); 824 if (!err || !retry) 825 break; 826 827 ubi_msg(ubi, "try again"); 828 } 829 830 ubi_free_vid_hdr(ubi, vid_hdr); 831 832 return err; 833 } 834 835 /** 836 * try_write_vid_and_data - try to write VID header and data to a new PEB. 837 * @vol: volume description object 838 * @lnum: logical eraseblock number 839 * @vid_hdr: VID header to write 840 * @buf: buffer containing the data 841 * @offset: where to start writing data 842 * @len: how many bytes should be written 843 * 844 * This function tries to write VID header and data belonging to logical 845 * eraseblock @lnum of volume @vol to a new physical eraseblock. Returns zero 846 * in case of success and a negative error code in case of failure. 847 * In case of error, it is possible that something was still written to the 848 * flash media, but may be some garbage. 849 */ 850 static int try_write_vid_and_data(struct ubi_volume *vol, int lnum, 851 struct ubi_vid_hdr *vid_hdr, const void *buf, 852 int offset, int len) 853 { 854 struct ubi_device *ubi = vol->ubi; 855 int pnum, opnum, err, vol_id = vol->vol_id; 856 857 pnum = ubi_wl_get_peb(ubi); 858 if (pnum < 0) { 859 err = pnum; 860 goto out_put; 861 } 862 863 opnum = vol->eba_tbl->entries[lnum].pnum; 864 865 dbg_eba("write VID hdr and %d bytes at offset %d of LEB %d:%d, PEB %d", 866 len, offset, vol_id, lnum, pnum); 867 868 err = ubi_io_write_vid_hdr(ubi, pnum, vid_hdr); 869 if (err) { 870 ubi_warn(ubi, "failed to write VID header to LEB %d:%d, PEB %d", 871 vol_id, lnum, pnum); 872 goto out_put; 873 } 874 875 if (len) { 876 err = ubi_io_write_data(ubi, buf, pnum, offset, len); 877 if (err) { 878 ubi_warn(ubi, 879 "failed to write %d bytes at offset %d of LEB %d:%d, PEB %d", 880 len, offset, vol_id, lnum, pnum); 881 goto out_put; 882 } 883 } 884 885 vol->eba_tbl->entries[lnum].pnum = pnum; 886 887 out_put: 888 up_read(&ubi->fm_eba_sem); 889 890 if (err && pnum >= 0) 891 err = ubi_wl_put_peb(ubi, vol_id, lnum, pnum, 1); 892 else if (!err && opnum >= 0) 893 err = ubi_wl_put_peb(ubi, vol_id, lnum, opnum, 0); 894 895 return err; 896 } 897 898 /** 899 * ubi_eba_write_leb - write data to dynamic volume. 900 * @ubi: UBI device description object 901 * @vol: volume description object 902 * @lnum: logical eraseblock number 903 * @buf: the data to write 904 * @offset: offset within the logical eraseblock where to write 905 * @len: how many bytes to write 906 * 907 * This function writes data to logical eraseblock @lnum of a dynamic volume 908 * @vol. Returns zero in case of success and a negative error code in case 909 * of failure. In case of error, it is possible that something was still 910 * written to the flash media, but may be some garbage. 911 * This function retries %UBI_IO_RETRIES times before giving up. 912 */ 913 int ubi_eba_write_leb(struct ubi_device *ubi, struct ubi_volume *vol, int lnum, 914 const void *buf, int offset, int len) 915 { 916 int err, pnum, tries, vol_id = vol->vol_id; 917 struct ubi_vid_hdr *vid_hdr; 918 919 if (ubi->ro_mode) 920 return -EROFS; 921 922 err = leb_write_lock(ubi, vol_id, lnum); 923 if (err) 924 return err; 925 926 pnum = vol->eba_tbl->entries[lnum].pnum; 927 if (pnum >= 0) { 928 dbg_eba("write %d bytes at offset %d of LEB %d:%d, PEB %d", 929 len, offset, vol_id, lnum, pnum); 930 931 err = ubi_io_write_data(ubi, buf, pnum, offset, len); 932 if (err) { 933 ubi_warn(ubi, "failed to write data to PEB %d", pnum); 934 if (err == -EIO && ubi->bad_allowed) 935 err = recover_peb(ubi, pnum, vol_id, lnum, buf, 936 offset, len); 937 } 938 939 goto out; 940 } 941 942 /* 943 * The logical eraseblock is not mapped. We have to get a free physical 944 * eraseblock and write the volume identifier header there first. 945 */ 946 vid_hdr = ubi_zalloc_vid_hdr(ubi, GFP_NOFS); 947 if (!vid_hdr) { 948 leb_write_unlock(ubi, vol_id, lnum); 949 return -ENOMEM; 950 } 951 952 vid_hdr->vol_type = UBI_VID_DYNAMIC; 953 vid_hdr->sqnum = cpu_to_be64(ubi_next_sqnum(ubi)); 954 vid_hdr->vol_id = cpu_to_be32(vol_id); 955 vid_hdr->lnum = cpu_to_be32(lnum); 956 vid_hdr->compat = ubi_get_compat(ubi, vol_id); 957 vid_hdr->data_pad = cpu_to_be32(vol->data_pad); 958 959 for (tries = 0; tries <= UBI_IO_RETRIES; tries++) { 960 err = try_write_vid_and_data(vol, lnum, vid_hdr, buf, offset, 961 len); 962 if (err != -EIO || !ubi->bad_allowed) 963 break; 964 965 /* 966 * Fortunately, this is the first write operation to this 967 * physical eraseblock, so just put it and request a new one. 968 * We assume that if this physical eraseblock went bad, the 969 * erase code will handle that. 970 */ 971 vid_hdr->sqnum = cpu_to_be64(ubi_next_sqnum(ubi)); 972 ubi_msg(ubi, "try another PEB"); 973 } 974 975 ubi_free_vid_hdr(ubi, vid_hdr); 976 977 out: 978 if (err) 979 ubi_ro_mode(ubi); 980 981 leb_write_unlock(ubi, vol_id, lnum); 982 983 return err; 984 } 985 986 /** 987 * ubi_eba_write_leb_st - write data to static volume. 988 * @ubi: UBI device description object 989 * @vol: volume description object 990 * @lnum: logical eraseblock number 991 * @buf: data to write 992 * @len: how many bytes to write 993 * @used_ebs: how many logical eraseblocks will this volume contain 994 * 995 * This function writes data to logical eraseblock @lnum of static volume 996 * @vol. The @used_ebs argument should contain total number of logical 997 * eraseblock in this static volume. 998 * 999 * When writing to the last logical eraseblock, the @len argument doesn't have 1000 * to be aligned to the minimal I/O unit size. Instead, it has to be equivalent 1001 * to the real data size, although the @buf buffer has to contain the 1002 * alignment. In all other cases, @len has to be aligned. 1003 * 1004 * It is prohibited to write more than once to logical eraseblocks of static 1005 * volumes. This function returns zero in case of success and a negative error 1006 * code in case of failure. 1007 */ 1008 int ubi_eba_write_leb_st(struct ubi_device *ubi, struct ubi_volume *vol, 1009 int lnum, const void *buf, int len, int used_ebs) 1010 { 1011 int err, tries, data_size = len, vol_id = vol->vol_id; 1012 struct ubi_vid_hdr *vid_hdr; 1013 uint32_t crc; 1014 1015 if (ubi->ro_mode) 1016 return -EROFS; 1017 1018 if (lnum == used_ebs - 1) 1019 /* If this is the last LEB @len may be unaligned */ 1020 len = ALIGN(data_size, ubi->min_io_size); 1021 else 1022 ubi_assert(!(len & (ubi->min_io_size - 1))); 1023 1024 vid_hdr = ubi_zalloc_vid_hdr(ubi, GFP_NOFS); 1025 if (!vid_hdr) 1026 return -ENOMEM; 1027 1028 err = leb_write_lock(ubi, vol_id, lnum); 1029 if (err) 1030 goto out; 1031 1032 vid_hdr->sqnum = cpu_to_be64(ubi_next_sqnum(ubi)); 1033 vid_hdr->vol_id = cpu_to_be32(vol_id); 1034 vid_hdr->lnum = cpu_to_be32(lnum); 1035 vid_hdr->compat = ubi_get_compat(ubi, vol_id); 1036 vid_hdr->data_pad = cpu_to_be32(vol->data_pad); 1037 1038 crc = crc32(UBI_CRC32_INIT, buf, data_size); 1039 vid_hdr->vol_type = UBI_VID_STATIC; 1040 vid_hdr->data_size = cpu_to_be32(data_size); 1041 vid_hdr->used_ebs = cpu_to_be32(used_ebs); 1042 vid_hdr->data_crc = cpu_to_be32(crc); 1043 1044 ubi_assert(vol->eba_tbl->entries[lnum].pnum < 0); 1045 1046 for (tries = 0; tries <= UBI_IO_RETRIES; tries++) { 1047 err = try_write_vid_and_data(vol, lnum, vid_hdr, buf, 0, len); 1048 if (err != -EIO || !ubi->bad_allowed) 1049 break; 1050 1051 vid_hdr->sqnum = cpu_to_be64(ubi_next_sqnum(ubi)); 1052 ubi_msg(ubi, "try another PEB"); 1053 } 1054 1055 if (err) 1056 ubi_ro_mode(ubi); 1057 1058 leb_write_unlock(ubi, vol_id, lnum); 1059 1060 out: 1061 ubi_free_vid_hdr(ubi, vid_hdr); 1062 1063 return err; 1064 } 1065 1066 /* 1067 * ubi_eba_atomic_leb_change - change logical eraseblock atomically. 1068 * @ubi: UBI device description object 1069 * @vol: volume description object 1070 * @lnum: logical eraseblock number 1071 * @buf: data to write 1072 * @len: how many bytes to write 1073 * 1074 * This function changes the contents of a logical eraseblock atomically. @buf 1075 * has to contain new logical eraseblock data, and @len - the length of the 1076 * data, which has to be aligned. This function guarantees that in case of an 1077 * unclean reboot the old contents is preserved. Returns zero in case of 1078 * success and a negative error code in case of failure. 1079 * 1080 * UBI reserves one LEB for the "atomic LEB change" operation, so only one 1081 * LEB change may be done at a time. This is ensured by @ubi->alc_mutex. 1082 */ 1083 int ubi_eba_atomic_leb_change(struct ubi_device *ubi, struct ubi_volume *vol, 1084 int lnum, const void *buf, int len) 1085 { 1086 int err, tries, vol_id = vol->vol_id; 1087 struct ubi_vid_hdr *vid_hdr; 1088 uint32_t crc; 1089 1090 if (ubi->ro_mode) 1091 return -EROFS; 1092 1093 if (len == 0) { 1094 /* 1095 * Special case when data length is zero. In this case the LEB 1096 * has to be unmapped and mapped somewhere else. 1097 */ 1098 err = ubi_eba_unmap_leb(ubi, vol, lnum); 1099 if (err) 1100 return err; 1101 return ubi_eba_write_leb(ubi, vol, lnum, NULL, 0, 0); 1102 } 1103 1104 vid_hdr = ubi_zalloc_vid_hdr(ubi, GFP_NOFS); 1105 if (!vid_hdr) 1106 return -ENOMEM; 1107 1108 mutex_lock(&ubi->alc_mutex); 1109 err = leb_write_lock(ubi, vol_id, lnum); 1110 if (err) 1111 goto out_mutex; 1112 1113 vid_hdr->sqnum = cpu_to_be64(ubi_next_sqnum(ubi)); 1114 vid_hdr->vol_id = cpu_to_be32(vol_id); 1115 vid_hdr->lnum = cpu_to_be32(lnum); 1116 vid_hdr->compat = ubi_get_compat(ubi, vol_id); 1117 vid_hdr->data_pad = cpu_to_be32(vol->data_pad); 1118 1119 crc = crc32(UBI_CRC32_INIT, buf, len); 1120 vid_hdr->vol_type = UBI_VID_DYNAMIC; 1121 vid_hdr->data_size = cpu_to_be32(len); 1122 vid_hdr->copy_flag = 1; 1123 vid_hdr->data_crc = cpu_to_be32(crc); 1124 1125 dbg_eba("change LEB %d:%d", vol_id, lnum); 1126 1127 for (tries = 0; tries <= UBI_IO_RETRIES; tries++) { 1128 err = try_write_vid_and_data(vol, lnum, vid_hdr, buf, 0, len); 1129 if (err != -EIO || !ubi->bad_allowed) 1130 break; 1131 1132 vid_hdr->sqnum = cpu_to_be64(ubi_next_sqnum(ubi)); 1133 ubi_msg(ubi, "try another PEB"); 1134 } 1135 1136 /* 1137 * This flash device does not admit of bad eraseblocks or 1138 * something nasty and unexpected happened. Switch to read-only 1139 * mode just in case. 1140 */ 1141 if (err) 1142 ubi_ro_mode(ubi); 1143 1144 leb_write_unlock(ubi, vol_id, lnum); 1145 1146 out_mutex: 1147 mutex_unlock(&ubi->alc_mutex); 1148 ubi_free_vid_hdr(ubi, vid_hdr); 1149 return err; 1150 } 1151 1152 /** 1153 * is_error_sane - check whether a read error is sane. 1154 * @err: code of the error happened during reading 1155 * 1156 * This is a helper function for 'ubi_eba_copy_leb()' which is called when we 1157 * cannot read data from the target PEB (an error @err happened). If the error 1158 * code is sane, then we treat this error as non-fatal. Otherwise the error is 1159 * fatal and UBI will be switched to R/O mode later. 1160 * 1161 * The idea is that we try not to switch to R/O mode if the read error is 1162 * something which suggests there was a real read problem. E.g., %-EIO. Or a 1163 * memory allocation failed (-%ENOMEM). Otherwise, it is safer to switch to R/O 1164 * mode, simply because we do not know what happened at the MTD level, and we 1165 * cannot handle this. E.g., the underlying driver may have become crazy, and 1166 * it is safer to switch to R/O mode to preserve the data. 1167 * 1168 * And bear in mind, this is about reading from the target PEB, i.e. the PEB 1169 * which we have just written. 1170 */ 1171 static int is_error_sane(int err) 1172 { 1173 if (err == -EIO || err == -ENOMEM || err == UBI_IO_BAD_HDR || 1174 err == UBI_IO_BAD_HDR_EBADMSG || err == -ETIMEDOUT) 1175 return 0; 1176 return 1; 1177 } 1178 1179 /** 1180 * ubi_eba_copy_leb - copy logical eraseblock. 1181 * @ubi: UBI device description object 1182 * @from: physical eraseblock number from where to copy 1183 * @to: physical eraseblock number where to copy 1184 * @vid_hdr: VID header of the @from physical eraseblock 1185 * 1186 * This function copies logical eraseblock from physical eraseblock @from to 1187 * physical eraseblock @to. The @vid_hdr buffer may be changed by this 1188 * function. Returns: 1189 * o %0 in case of success; 1190 * o %MOVE_CANCEL_RACE, %MOVE_TARGET_WR_ERR, %MOVE_TARGET_BITFLIPS, etc; 1191 * o a negative error code in case of failure. 1192 */ 1193 int ubi_eba_copy_leb(struct ubi_device *ubi, int from, int to, 1194 struct ubi_vid_hdr *vid_hdr) 1195 { 1196 int err, vol_id, lnum, data_size, aldata_size, idx; 1197 struct ubi_volume *vol; 1198 uint32_t crc; 1199 1200 vol_id = be32_to_cpu(vid_hdr->vol_id); 1201 lnum = be32_to_cpu(vid_hdr->lnum); 1202 1203 dbg_wl("copy LEB %d:%d, PEB %d to PEB %d", vol_id, lnum, from, to); 1204 1205 if (vid_hdr->vol_type == UBI_VID_STATIC) { 1206 data_size = be32_to_cpu(vid_hdr->data_size); 1207 aldata_size = ALIGN(data_size, ubi->min_io_size); 1208 } else 1209 data_size = aldata_size = 1210 ubi->leb_size - be32_to_cpu(vid_hdr->data_pad); 1211 1212 idx = vol_id2idx(ubi, vol_id); 1213 spin_lock(&ubi->volumes_lock); 1214 /* 1215 * Note, we may race with volume deletion, which means that the volume 1216 * this logical eraseblock belongs to might be being deleted. Since the 1217 * volume deletion un-maps all the volume's logical eraseblocks, it will 1218 * be locked in 'ubi_wl_put_peb()' and wait for the WL worker to finish. 1219 */ 1220 vol = ubi->volumes[idx]; 1221 spin_unlock(&ubi->volumes_lock); 1222 if (!vol) { 1223 /* No need to do further work, cancel */ 1224 dbg_wl("volume %d is being removed, cancel", vol_id); 1225 return MOVE_CANCEL_RACE; 1226 } 1227 1228 /* 1229 * We do not want anybody to write to this logical eraseblock while we 1230 * are moving it, so lock it. 1231 * 1232 * Note, we are using non-waiting locking here, because we cannot sleep 1233 * on the LEB, since it may cause deadlocks. Indeed, imagine a task is 1234 * unmapping the LEB which is mapped to the PEB we are going to move 1235 * (@from). This task locks the LEB and goes sleep in the 1236 * 'ubi_wl_put_peb()' function on the @ubi->move_mutex. In turn, we are 1237 * holding @ubi->move_mutex and go sleep on the LEB lock. So, if the 1238 * LEB is already locked, we just do not move it and return 1239 * %MOVE_RETRY. Note, we do not return %MOVE_CANCEL_RACE here because 1240 * we do not know the reasons of the contention - it may be just a 1241 * normal I/O on this LEB, so we want to re-try. 1242 */ 1243 err = leb_write_trylock(ubi, vol_id, lnum); 1244 if (err) { 1245 dbg_wl("contention on LEB %d:%d, cancel", vol_id, lnum); 1246 return MOVE_RETRY; 1247 } 1248 1249 /* 1250 * The LEB might have been put meanwhile, and the task which put it is 1251 * probably waiting on @ubi->move_mutex. No need to continue the work, 1252 * cancel it. 1253 */ 1254 if (vol->eba_tbl->entries[lnum].pnum != from) { 1255 dbg_wl("LEB %d:%d is no longer mapped to PEB %d, mapped to PEB %d, cancel", 1256 vol_id, lnum, from, vol->eba_tbl->entries[lnum].pnum); 1257 err = MOVE_CANCEL_RACE; 1258 goto out_unlock_leb; 1259 } 1260 1261 /* 1262 * OK, now the LEB is locked and we can safely start moving it. Since 1263 * this function utilizes the @ubi->peb_buf buffer which is shared 1264 * with some other functions - we lock the buffer by taking the 1265 * @ubi->buf_mutex. 1266 */ 1267 mutex_lock(&ubi->buf_mutex); 1268 dbg_wl("read %d bytes of data", aldata_size); 1269 err = ubi_io_read_data(ubi, ubi->peb_buf, from, 0, aldata_size); 1270 if (err && err != UBI_IO_BITFLIPS) { 1271 ubi_warn(ubi, "error %d while reading data from PEB %d", 1272 err, from); 1273 err = MOVE_SOURCE_RD_ERR; 1274 goto out_unlock_buf; 1275 } 1276 1277 /* 1278 * Now we have got to calculate how much data we have to copy. In 1279 * case of a static volume it is fairly easy - the VID header contains 1280 * the data size. In case of a dynamic volume it is more difficult - we 1281 * have to read the contents, cut 0xFF bytes from the end and copy only 1282 * the first part. We must do this to avoid writing 0xFF bytes as it 1283 * may have some side-effects. And not only this. It is important not 1284 * to include those 0xFFs to CRC because later the they may be filled 1285 * by data. 1286 */ 1287 if (vid_hdr->vol_type == UBI_VID_DYNAMIC) 1288 aldata_size = data_size = 1289 ubi_calc_data_len(ubi, ubi->peb_buf, data_size); 1290 1291 cond_resched(); 1292 crc = crc32(UBI_CRC32_INIT, ubi->peb_buf, data_size); 1293 cond_resched(); 1294 1295 /* 1296 * It may turn out to be that the whole @from physical eraseblock 1297 * contains only 0xFF bytes. Then we have to only write the VID header 1298 * and do not write any data. This also means we should not set 1299 * @vid_hdr->copy_flag, @vid_hdr->data_size, and @vid_hdr->data_crc. 1300 */ 1301 if (data_size > 0) { 1302 vid_hdr->copy_flag = 1; 1303 vid_hdr->data_size = cpu_to_be32(data_size); 1304 vid_hdr->data_crc = cpu_to_be32(crc); 1305 } 1306 vid_hdr->sqnum = cpu_to_be64(ubi_next_sqnum(ubi)); 1307 1308 err = ubi_io_write_vid_hdr(ubi, to, vid_hdr); 1309 if (err) { 1310 if (err == -EIO) 1311 err = MOVE_TARGET_WR_ERR; 1312 goto out_unlock_buf; 1313 } 1314 1315 cond_resched(); 1316 1317 /* Read the VID header back and check if it was written correctly */ 1318 err = ubi_io_read_vid_hdr(ubi, to, vid_hdr, 1); 1319 if (err) { 1320 if (err != UBI_IO_BITFLIPS) { 1321 ubi_warn(ubi, "error %d while reading VID header back from PEB %d", 1322 err, to); 1323 if (is_error_sane(err)) 1324 err = MOVE_TARGET_RD_ERR; 1325 } else 1326 err = MOVE_TARGET_BITFLIPS; 1327 goto out_unlock_buf; 1328 } 1329 1330 if (data_size > 0) { 1331 err = ubi_io_write_data(ubi, ubi->peb_buf, to, 0, aldata_size); 1332 if (err) { 1333 if (err == -EIO) 1334 err = MOVE_TARGET_WR_ERR; 1335 goto out_unlock_buf; 1336 } 1337 1338 cond_resched(); 1339 } 1340 1341 ubi_assert(vol->eba_tbl->entries[lnum].pnum == from); 1342 down_read(&ubi->fm_eba_sem); 1343 vol->eba_tbl->entries[lnum].pnum = to; 1344 up_read(&ubi->fm_eba_sem); 1345 1346 out_unlock_buf: 1347 mutex_unlock(&ubi->buf_mutex); 1348 out_unlock_leb: 1349 leb_write_unlock(ubi, vol_id, lnum); 1350 return err; 1351 } 1352 1353 /** 1354 * print_rsvd_warning - warn about not having enough reserved PEBs. 1355 * @ubi: UBI device description object 1356 * 1357 * This is a helper function for 'ubi_eba_init()' which is called when UBI 1358 * cannot reserve enough PEBs for bad block handling. This function makes a 1359 * decision whether we have to print a warning or not. The algorithm is as 1360 * follows: 1361 * o if this is a new UBI image, then just print the warning 1362 * o if this is an UBI image which has already been used for some time, print 1363 * a warning only if we can reserve less than 10% of the expected amount of 1364 * the reserved PEB. 1365 * 1366 * The idea is that when UBI is used, PEBs become bad, and the reserved pool 1367 * of PEBs becomes smaller, which is normal and we do not want to scare users 1368 * with a warning every time they attach the MTD device. This was an issue 1369 * reported by real users. 1370 */ 1371 static void print_rsvd_warning(struct ubi_device *ubi, 1372 struct ubi_attach_info *ai) 1373 { 1374 /* 1375 * The 1 << 18 (256KiB) number is picked randomly, just a reasonably 1376 * large number to distinguish between newly flashed and used images. 1377 */ 1378 if (ai->max_sqnum > (1 << 18)) { 1379 int min = ubi->beb_rsvd_level / 10; 1380 1381 if (!min) 1382 min = 1; 1383 if (ubi->beb_rsvd_pebs > min) 1384 return; 1385 } 1386 1387 ubi_warn(ubi, "cannot reserve enough PEBs for bad PEB handling, reserved %d, need %d", 1388 ubi->beb_rsvd_pebs, ubi->beb_rsvd_level); 1389 if (ubi->corr_peb_count) 1390 ubi_warn(ubi, "%d PEBs are corrupted and not used", 1391 ubi->corr_peb_count); 1392 } 1393 1394 /** 1395 * self_check_eba - run a self check on the EBA table constructed by fastmap. 1396 * @ubi: UBI device description object 1397 * @ai_fastmap: UBI attach info object created by fastmap 1398 * @ai_scan: UBI attach info object created by scanning 1399 * 1400 * Returns < 0 in case of an internal error, 0 otherwise. 1401 * If a bad EBA table entry was found it will be printed out and 1402 * ubi_assert() triggers. 1403 */ 1404 int self_check_eba(struct ubi_device *ubi, struct ubi_attach_info *ai_fastmap, 1405 struct ubi_attach_info *ai_scan) 1406 { 1407 int i, j, num_volumes, ret = 0; 1408 int **scan_eba, **fm_eba; 1409 struct ubi_ainf_volume *av; 1410 struct ubi_volume *vol; 1411 struct ubi_ainf_peb *aeb; 1412 struct rb_node *rb; 1413 1414 num_volumes = ubi->vtbl_slots + UBI_INT_VOL_COUNT; 1415 1416 scan_eba = kmalloc(sizeof(*scan_eba) * num_volumes, GFP_KERNEL); 1417 if (!scan_eba) 1418 return -ENOMEM; 1419 1420 fm_eba = kmalloc(sizeof(*fm_eba) * num_volumes, GFP_KERNEL); 1421 if (!fm_eba) { 1422 kfree(scan_eba); 1423 return -ENOMEM; 1424 } 1425 1426 for (i = 0; i < num_volumes; i++) { 1427 vol = ubi->volumes[i]; 1428 if (!vol) 1429 continue; 1430 1431 scan_eba[i] = kmalloc(vol->reserved_pebs * sizeof(**scan_eba), 1432 GFP_KERNEL); 1433 if (!scan_eba[i]) { 1434 ret = -ENOMEM; 1435 goto out_free; 1436 } 1437 1438 fm_eba[i] = kmalloc(vol->reserved_pebs * sizeof(**fm_eba), 1439 GFP_KERNEL); 1440 if (!fm_eba[i]) { 1441 ret = -ENOMEM; 1442 goto out_free; 1443 } 1444 1445 for (j = 0; j < vol->reserved_pebs; j++) 1446 scan_eba[i][j] = fm_eba[i][j] = UBI_LEB_UNMAPPED; 1447 1448 av = ubi_find_av(ai_scan, idx2vol_id(ubi, i)); 1449 if (!av) 1450 continue; 1451 1452 ubi_rb_for_each_entry(rb, aeb, &av->root, u.rb) 1453 scan_eba[i][aeb->lnum] = aeb->pnum; 1454 1455 av = ubi_find_av(ai_fastmap, idx2vol_id(ubi, i)); 1456 if (!av) 1457 continue; 1458 1459 ubi_rb_for_each_entry(rb, aeb, &av->root, u.rb) 1460 fm_eba[i][aeb->lnum] = aeb->pnum; 1461 1462 for (j = 0; j < vol->reserved_pebs; j++) { 1463 if (scan_eba[i][j] != fm_eba[i][j]) { 1464 if (scan_eba[i][j] == UBI_LEB_UNMAPPED || 1465 fm_eba[i][j] == UBI_LEB_UNMAPPED) 1466 continue; 1467 1468 ubi_err(ubi, "LEB:%i:%i is PEB:%i instead of %i!", 1469 vol->vol_id, j, fm_eba[i][j], 1470 scan_eba[i][j]); 1471 ubi_assert(0); 1472 } 1473 } 1474 } 1475 1476 out_free: 1477 for (i = 0; i < num_volumes; i++) { 1478 if (!ubi->volumes[i]) 1479 continue; 1480 1481 kfree(scan_eba[i]); 1482 kfree(fm_eba[i]); 1483 } 1484 1485 kfree(scan_eba); 1486 kfree(fm_eba); 1487 return ret; 1488 } 1489 1490 /** 1491 * ubi_eba_init - initialize the EBA sub-system using attaching information. 1492 * @ubi: UBI device description object 1493 * @ai: attaching information 1494 * 1495 * This function returns zero in case of success and a negative error code in 1496 * case of failure. 1497 */ 1498 int ubi_eba_init(struct ubi_device *ubi, struct ubi_attach_info *ai) 1499 { 1500 int i, err, num_volumes; 1501 struct ubi_ainf_volume *av; 1502 struct ubi_volume *vol; 1503 struct ubi_ainf_peb *aeb; 1504 struct rb_node *rb; 1505 1506 dbg_eba("initialize EBA sub-system"); 1507 1508 spin_lock_init(&ubi->ltree_lock); 1509 mutex_init(&ubi->alc_mutex); 1510 ubi->ltree = RB_ROOT; 1511 1512 ubi->global_sqnum = ai->max_sqnum + 1; 1513 num_volumes = ubi->vtbl_slots + UBI_INT_VOL_COUNT; 1514 1515 for (i = 0; i < num_volumes; i++) { 1516 struct ubi_eba_table *tbl; 1517 1518 vol = ubi->volumes[i]; 1519 if (!vol) 1520 continue; 1521 1522 cond_resched(); 1523 1524 tbl = ubi_eba_create_table(vol, vol->reserved_pebs); 1525 if (IS_ERR(tbl)) { 1526 err = PTR_ERR(tbl); 1527 goto out_free; 1528 } 1529 1530 ubi_eba_replace_table(vol, tbl); 1531 1532 av = ubi_find_av(ai, idx2vol_id(ubi, i)); 1533 if (!av) 1534 continue; 1535 1536 ubi_rb_for_each_entry(rb, aeb, &av->root, u.rb) { 1537 if (aeb->lnum >= vol->reserved_pebs) { 1538 /* 1539 * This may happen in case of an unclean reboot 1540 * during re-size. 1541 */ 1542 ubi_move_aeb_to_list(av, aeb, &ai->erase); 1543 } else { 1544 struct ubi_eba_entry *entry; 1545 1546 entry = &vol->eba_tbl->entries[aeb->lnum]; 1547 entry->pnum = aeb->pnum; 1548 } 1549 } 1550 } 1551 1552 if (ubi->avail_pebs < EBA_RESERVED_PEBS) { 1553 ubi_err(ubi, "no enough physical eraseblocks (%d, need %d)", 1554 ubi->avail_pebs, EBA_RESERVED_PEBS); 1555 if (ubi->corr_peb_count) 1556 ubi_err(ubi, "%d PEBs are corrupted and not used", 1557 ubi->corr_peb_count); 1558 err = -ENOSPC; 1559 goto out_free; 1560 } 1561 ubi->avail_pebs -= EBA_RESERVED_PEBS; 1562 ubi->rsvd_pebs += EBA_RESERVED_PEBS; 1563 1564 if (ubi->bad_allowed) { 1565 ubi_calculate_reserved(ubi); 1566 1567 if (ubi->avail_pebs < ubi->beb_rsvd_level) { 1568 /* No enough free physical eraseblocks */ 1569 ubi->beb_rsvd_pebs = ubi->avail_pebs; 1570 print_rsvd_warning(ubi, ai); 1571 } else 1572 ubi->beb_rsvd_pebs = ubi->beb_rsvd_level; 1573 1574 ubi->avail_pebs -= ubi->beb_rsvd_pebs; 1575 ubi->rsvd_pebs += ubi->beb_rsvd_pebs; 1576 } 1577 1578 dbg_eba("EBA sub-system is initialized"); 1579 return 0; 1580 1581 out_free: 1582 for (i = 0; i < num_volumes; i++) { 1583 if (!ubi->volumes[i]) 1584 continue; 1585 ubi_eba_replace_table(ubi->volumes[i], NULL); 1586 } 1587 return err; 1588 } 1589