Lines Matching defs:pebnr
45 int nor_calc_data_offs(struct chfs_ebh *ebh, int pebnr, int offset);
46 int nand_calc_data_offs(struct chfs_ebh *ebh, int pebnr, int offset);
47 int nor_read_eb_hdr(struct chfs_ebh *ebh, int pebnr, struct chfs_eb_hdr *ebhdr);
48 int nand_read_eb_hdr(struct chfs_ebh *ebh, int pebnr, struct chfs_eb_hdr *ebhdr);
49 int nor_write_eb_hdr(struct chfs_ebh *ebh, int pebnr, struct chfs_eb_hdr *ebhdr);
50 int nand_write_eb_hdr(struct chfs_ebh *ebh, int pebnr,struct chfs_eb_hdr *ebhdr);
53 int nor_mark_eb_hdr_dirty_flash(struct chfs_ebh *ebh, int pebnr, int lid);
54 int nor_invalidate_eb_hdr(struct chfs_ebh *ebh, int pebnr);
55 int mark_eb_hdr_free(struct chfs_ebh *ebh, int pebnr, int ec);
60 int add_peb_to_erase_queue(struct chfs_ebh *ebh, int pebnr, int ec,struct peb_queue *queue);
61 struct chfs_peb * find_peb_in_use(struct chfs_ebh *ebh, int pebnr);
62 int add_peb_to_free(struct chfs_ebh *ebh, int pebnr, int ec);
63 int add_peb_to_in_use(struct chfs_ebh *ebh, int pebnr, int ec);
66 int release_peb(struct chfs_ebh *ebh, int pebnr);
71 int nor_scan_add_to_used(struct chfs_ebh *ebh, struct chfs_scan_info *si,struct chfs_eb_hdr *ebhdr, int pebnr, int leb_status);
73 int pebnr, struct chfs_eb_hdr *ebhdr);
74 int nand_scan_add_to_used(struct chfs_ebh *ebh, struct chfs_scan_info *si,struct chfs_eb_hdr *ebhdr, int pebnr);
76 int pebnr, struct chfs_eb_hdr *ebhdr);
108 * @pebnr: eraseblock number
112 nor_calc_data_offs(struct chfs_ebh *ebh, int pebnr, int offset)
114 return pebnr * ebh->flash_if->erasesize + offset +
121 * @pebnr: eraseblock number
125 nand_calc_data_offs(struct chfs_ebh *ebh, int pebnr, int offset)
127 return pebnr * ebh->flash_if->erasesize + offset +
135 * @pebnr: eraseblock number
143 int pebnr, struct chfs_eb_hdr *ebhdr)
147 off_t ofs = pebnr * ebh->flash_if->erasesize;
149 KASSERT(pebnr >= 0 && pebnr < ebh->peb_nr);
173 * @pebnr: eraseblock number
180 nand_read_eb_hdr(struct chfs_ebh *ebh, int pebnr,
187 KASSERT(pebnr >= 0 && pebnr < ebh->peb_nr);
190 ofs = pebnr * ebh->flash_if->erasesize;
212 * @pebnr: eraseblock number whereto write
219 nor_write_eb_hdr(struct chfs_ebh *ebh, int pebnr, struct chfs_eb_hdr *ebhdr)
224 off_t ofs = pebnr * ebh->flash_if->erasesize + CHFS_EB_EC_HDR_SIZE;
233 KASSERT(pebnr >= 0 && pebnr < ebh->peb_nr);
249 * @pebnr: eraseblock number whereto write
256 nand_write_eb_hdr(struct chfs_ebh *ebh, int pebnr,
263 KASSERT(pebnr >= 0 && pebnr < ebh->peb_nr);
265 ofs = pebnr * ebh->flash_if->erasesize +
427 * @pebnr: eraseblock number
435 nor_mark_eb_hdr_dirty_flash(struct chfs_ebh *ebh, int pebnr, int lid)
445 ofs = pebnr * ebh->flash_if->erasesize + CHFS_EB_EC_HDR_SIZE
462 * @pebnr: eraseblock number
468 nor_invalidate_eb_hdr(struct chfs_ebh *ebh, int pebnr)
479 ofs = pebnr * ebh->flash_if->erasesize + CHFS_EB_EC_HDR_SIZE
497 * @pebnr: eraseblock number
504 mark_eb_hdr_free(struct chfs_ebh *ebh, int pebnr, int ec)
517 ofs = pebnr * ebh->flash_if->erasesize;
526 chfs_err("can't mark peb as free: %d\n", pebnr);
741 return (peb1->pebnr - peb2->pebnr);
751 comp = peb1->pebnr - peb2->pebnr;
765 * @pebnr - physical eraseblock's number
774 add_peb_to_erase_queue(struct chfs_ebh *ebh, int pebnr, int ec,
782 peb->pebnr = pebnr;
799 find_peb_in_use(struct chfs_ebh *ebh, int pebnr)
802 peb.pebnr = pebnr;
810 * @pebnr - physical eraseblock's number
815 * stored in the @ebh. The key is the erase counter and pebnr.
820 add_peb_to_free(struct chfs_ebh *ebh, int pebnr, int ec)
827 peb->pebnr = pebnr;
840 * @pebnr - physical eraseblock's number
845 * stored in the @ebh. The key is pebnr.
850 add_peb_to_in_use(struct chfs_ebh *ebh, int pebnr, int ec)
857 peb->pebnr = pebnr;
886 peb->pebnr, peb->erase_cnt);
891 peb->pebnr);
895 add_peb_to_erase_queue(ebh, peb->pebnr, peb->erase_cnt,
906 err = add_peb_to_free(ebh, peb->pebnr, peb->erase_cnt);
916 add_peb_to_erase_queue(ebh, peb->pebnr, peb->erase_cnt, &ebh->to_erase);
944 peb->pebnr, peb->erase_cnt);
948 err = add_peb_to_free(ebh, peb->pebnr, peb->erase_cnt);
957 ofs = peb->pebnr * ebh->flash_if->erasesize;
975 dbg_ebh("erased peb: %d\n", peb->pebnr);
993 chfs_err("can not erase PEB: %d, try again\n", peb->pebnr);
1011 * @pebnr: physical eraseblock number
1013 * This function get the peb identified by @pebnr from the in_use RB-tree of
1019 release_peb(struct chfs_ebh *ebh, int pebnr)
1027 peb = find_peb_in_use(ebh, pebnr);
1033 err = add_peb_to_erase_queue(ebh, peb->pebnr, peb->erase_cnt,
1174 * @pebnr: physical eraseblock number
1183 scan_add_to_queue(struct chfs_scan_info *si, int pebnr, int erase_cnt,
1190 sleb->pebnr = pebnr;
1202 * @pebnr: physical eraseblock number
1212 struct chfs_eb_hdr *ebhdr, int pebnr, int leb_status)
1224 sleb->pebnr = pebnr;
1234 return scan_add_to_queue(si, pebnr, ec, &si->erase);
1236 err = scan_add_to_queue(si, old->pebnr,
1244 old->pebnr = pebnr;
1257 * @pebnr: physical eraseblock number
1263 int pebnr, struct chfs_eb_hdr *ebhdr)
1267 err = ebh->ops->read_eb_hdr(ebh, pebnr, ebhdr);
1276 err = scan_add_to_queue(si, pebnr, erase_cnt, &si->corrupted);
1280 err = scan_add_to_queue(si, pebnr, erase_cnt, &si->free);
1284 err = scan_add_to_queue(si, pebnr, erase_cnt, &si->erased);
1288 err = scan_add_to_queue(si, pebnr, erase_cnt, &si->erase);
1292 err = nor_scan_add_to_used(ebh, si, ebhdr, pebnr, leb_status);
1310 * @pebnr: physical eraseblock number
1320 struct chfs_eb_hdr *ebhdr, int pebnr)
1333 sleb->pebnr = pebnr;
1342 return scan_add_to_queue(si, pebnr, ec, &si->erase);
1345 old->pebnr, old->erase_cnt, &si->erase);
1351 old->pebnr = pebnr;
1364 * @pebnr: physical eraseblock number
1370 int pebnr, struct chfs_eb_hdr *ebhdr)
1379 pebnr * ebh->flash_if->erasesize, &is_bad);
1389 err = ebh->ops->read_eb_hdr(ebh, pebnr, ebhdr);
1397 err = scan_add_to_queue(si, pebnr, erase_cnt, &si->corrupted);
1401 err = scan_add_to_queue(si, pebnr, erase_cnt, &si->free);
1405 err = scan_add_to_queue(si, pebnr, erase_cnt, &si->erased);
1409 err = nand_scan_add_to_used(ebh, si, ebhdr, pebnr);
1437 int pebnr, err;
1452 for (pebnr = 0; pebnr < ebh->peb_nr; pebnr++) {
1453 dbg_ebh("processing PEB %d\n", pebnr);
1454 err = ebh->ops->process_eb(ebh, si, pebnr, ebhdr);
1547 ebh->lmap[sleb->lnr] = sleb->pebnr;
1548 err = add_peb_to_in_use(ebh, sleb->pebnr, sleb->erase_cnt);
1554 err = add_peb_to_erase_queue(ebh, sleb->pebnr, avg_ec,
1561 err = add_peb_to_erase_queue(ebh, sleb->pebnr, avg_ec,
1568 err = add_peb_to_free(ebh, sleb->pebnr, sleb->erase_cnt);
1574 err = add_peb_to_erase_queue(ebh, sleb->pebnr, avg_ec,
1727 int err, pebnr;
1736 pebnr = ebh->lmap[lnr];
1738 if (EBH_LEB_UNMAPPED == pebnr) {
1745 data_offset = ebh->ops->calc_data_offs(ebh, pebnr, offset);
1771 int err, pebnr;
1795 pebnr = peb->pebnr;
1797 err = add_peb_to_in_use(ebh, peb->pebnr, peb->erase_cnt);
1799 pebnr = err;
1806 pebnr;
1823 int err, pebnr, retries = 0;
1836 pebnr = ebh->lmap[lnr];
1838 if (pebnr != EBH_LEB_UNMAPPED) {
1839 data_offset = ebh->ops->calc_data_offs(ebh, pebnr, offset);
1846 err, len, pebnr, (uintmax_t )offset, *retlen);
1866 pebnr = get_peb(ebh);
1867 if (pebnr < 0) {
1870 return pebnr;
1874 err = ebh->ops->write_eb_hdr(ebh, pebnr, ebhdr);
1878 lnr, pebnr);
1884 data_offset = ebh->ops->calc_data_offs(ebh, pebnr, offset);
1890 err, len, pebnr, (uintmax_t )offset, *retlen);
1895 ebh->lmap[lnr] = pebnr;
1901 write_error: err = release_peb(ebh, pebnr);
1921 int err, pebnr;
1925 pebnr = ebh->lmap[lnr];
1926 if (pebnr < 0) {
1930 err = release_peb(ebh, pebnr);
1951 int err, pebnr, retries = 0;
1963 pebnr = get_peb(ebh);
1964 if (pebnr < 0) {
1965 err = pebnr;
1971 err = ebh->ops->write_eb_hdr(ebh, pebnr, ebhdr);
1975 lnr, pebnr);
1979 ebh->lmap[lnr] = pebnr;
1986 err = release_peb(ebh, pebnr);
2050 int err, pebnr, pebnr_old, retries = 0;
2086 pebnr = get_peb(ebh);
2087 if (pebnr < 0) {
2091 return pebnr;
2094 err = ebh->ops->write_eb_hdr(ebh, pebnr, ebhdr);
2098 lnr, pebnr);
2103 data_offset = ebh->ops->calc_data_offs(ebh, pebnr, 0);
2109 err, len, pebnr, (uintmax_t)data_offset, *retlen);
2113 ebh->lmap[lnr] = pebnr;
2121 err = release_peb(ebh, peb->pebnr);
2133 err = release_peb(ebh, pebnr);