Lines Matching refs:lba

127 /* Get zone at which block with logical address 'lba' lives
133 static int msb_get_zone_from_lba(int lba)
135 if (lba < 494)
137 return ((lba - 494) / 496) + 1;
1001 u16 pba, u32 lba, struct scatterlist *sg, int offset)
1016 if (pba >= msb->block_count || lba >= msb->logical_block_count) {
1022 if (msb_get_zone_from_lba(lba) != msb_get_zone_from_pba(pba)) {
1023 pr_err("BUG: write: lba zone mismatch");
1044 msb->regs.extra_data.logical_address = cpu_to_be16(lba);
1117 static int msb_update_block(struct msb_data *msb, u16 lba,
1123 pba = msb->lba_to_pba_table[lba];
1124 dbg_verbose("start of a block update at lba %d, pba %d", lba, pba);
1134 msb_get_zone_from_lba(lba));
1143 error = msb_write_block(msb, new_pba, lba, sg, offset);
1154 msb->lba_to_pba_table[lba] = new_pba;
1373 u16 pba, lba, other_block;
1415 lba = be16_to_cpu(extra.logical_address);
1445 if (lba == MS_BLOCK_INVALID) {
1453 if (msb_get_zone_from_lba(lba) != msb_get_zone_from_pba(pba)) {
1454 pr_notice("pba %05d -> [bad lba %05d] - will erase",
1455 pba, lba);
1461 if (msb->lba_to_pba_table[lba] == MS_BLOCK_INVALID) {
1462 dbg_verbose("pba %05d -> [lba %05d]", pba, lba);
1463 msb->lba_to_pba_table[lba] = pba;
1467 other_block = msb->lba_to_pba_table[lba];
1476 msb->lba_to_pba_table[lba] = pba;
1491 msb->lba_to_pba_table[lba] = pba;
1538 u16 pba, lba;
1546 lba = msb->cache_block_lba;
1547 pba = msb->lba_to_pba_table[lba];
1563 page, lba);
1606 static int msb_cache_write(struct msb_data *msb, int lba,
1616 lba != msb->cache_block_lba)
1622 lba != msb->cache_block_lba) {
1630 msb->cache_block_lba = lba;
1635 dbg_verbose("Write of LBA %d page %d to cache ", lba, page);
1647 static int msb_cache_read(struct msb_data *msb, int lba,
1650 int pba = msb->lba_to_pba_table[lba];
1654 if (lba == msb->cache_block_lba &&
1658 lba, pba, page);
1668 lba, pba, page);
1674 msb_cache_write(msb, lba, page, true, sg, offset);
1811 static int msb_do_write_request(struct msb_data *msb, int lba,
1821 if (msb->cache_block_lba == lba)
1824 dbg_verbose("Writing whole lba %d", lba);
1825 error = msb_update_block(msb, lba, sg, offset);
1831 lba++;
1835 error = msb_cache_write(msb, lba, page, false, sg, offset);
1845 lba++;
1851 static int msb_do_read_request(struct msb_data *msb, int lba,
1860 error = msb_cache_read(msb, lba, page, sg, offset);
1870 lba++;
1880 sector_t lba;
1909 lba = blk_rq_pos(req);
1911 sector_div(lba, msb->page_size / 512);
1912 page = sector_div(lba, msb->pages_in_block);
1915 error = msb_do_read_request(msb, lba, page, sg,
1918 error = msb_do_write_request(msb, lba, page, sg,