aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBoris Brezillon <boris.brezillon@free-electrons.com>2016-09-16 10:59:23 -0400
committerRichard Weinberger <richard@nod.at>2016-10-02 16:48:14 -0400
commit7554769641da272ea8821194c2efda08a11014b0 (patch)
treeb6d086adee9f4b35879e85e435e9585222193b5a
parent9a5f09ac0ab83e4a965a24edd6cf7cb0303c6dc9 (diff)
UBI: provide an helper to check whether a LEB is mapped or not
This is part of the process of hiding UBI EBA's internal to other part of the UBI implementation, so that we can add new information to the EBA table without having to patch different places in the UBI code. Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com> Signed-off-by: Richard Weinberger <richard@nod.at>
-rw-r--r--drivers/mtd/ubi/eba.c12
-rw-r--r--drivers/mtd/ubi/kapi.c4
-rw-r--r--drivers/mtd/ubi/ubi.h1
3 files changed, 15 insertions, 2 deletions
diff --git a/drivers/mtd/ubi/eba.c b/drivers/mtd/ubi/eba.c
index 180eb006e966..32045dd3d1db 100644
--- a/drivers/mtd/ubi/eba.c
+++ b/drivers/mtd/ubi/eba.c
@@ -312,6 +312,18 @@ static void leb_write_unlock(struct ubi_device *ubi, int vol_id, int lnum)
312} 312}
313 313
314/** 314/**
315 * ubi_eba_is_mapped - check if a LEB is mapped.
316 * @vol: volume description object
317 * @lnum: logical eraseblock number
318 *
319 * This function returns true if the LEB is mapped, false otherwise.
320 */
321bool ubi_eba_is_mapped(struct ubi_volume *vol, int lnum)
322{
323 return vol->eba_tbl[lnum] >= 0;
324}
325
326/**
315 * ubi_eba_unmap_leb - un-map logical eraseblock. 327 * ubi_eba_unmap_leb - un-map logical eraseblock.
316 * @ubi: UBI device description object 328 * @ubi: UBI device description object
317 * @vol: volume description object 329 * @vol: volume description object
diff --git a/drivers/mtd/ubi/kapi.c b/drivers/mtd/ubi/kapi.c
index cec7f65beb9e..88b1897aeb40 100644
--- a/drivers/mtd/ubi/kapi.c
+++ b/drivers/mtd/ubi/kapi.c
@@ -722,7 +722,7 @@ int ubi_leb_map(struct ubi_volume_desc *desc, int lnum)
722 if (vol->upd_marker) 722 if (vol->upd_marker)
723 return -EBADF; 723 return -EBADF;
724 724
725 if (vol->eba_tbl[lnum] >= 0) 725 if (ubi_eba_is_mapped(vol, lnum))
726 return -EBADMSG; 726 return -EBADMSG;
727 727
728 return ubi_eba_write_leb(ubi, vol, lnum, NULL, 0, 0); 728 return ubi_eba_write_leb(ubi, vol, lnum, NULL, 0, 0);
@@ -757,7 +757,7 @@ int ubi_is_mapped(struct ubi_volume_desc *desc, int lnum)
757 if (vol->upd_marker) 757 if (vol->upd_marker)
758 return -EBADF; 758 return -EBADF;
759 759
760 return vol->eba_tbl[lnum] >= 0; 760 return ubi_eba_is_mapped(vol, lnum);
761} 761}
762EXPORT_SYMBOL_GPL(ubi_is_mapped); 762EXPORT_SYMBOL_GPL(ubi_is_mapped);
763 763
diff --git a/drivers/mtd/ubi/ubi.h b/drivers/mtd/ubi/ubi.h
index 23c902e204aa..37469805591d 100644
--- a/drivers/mtd/ubi/ubi.h
+++ b/drivers/mtd/ubi/ubi.h
@@ -849,6 +849,7 @@ static inline bool ubi_leb_valid(struct ubi_volume *vol, int lnum)
849} 849}
850 850
851/* eba.c */ 851/* eba.c */
852bool ubi_eba_is_mapped(struct ubi_volume *vol, int lnum);
852int ubi_eba_unmap_leb(struct ubi_device *ubi, struct ubi_volume *vol, 853int ubi_eba_unmap_leb(struct ubi_device *ubi, struct ubi_volume *vol,
853 int lnum); 854 int lnum);
854int ubi_eba_read_leb(struct ubi_device *ubi, struct ubi_volume *vol, int lnum, 855int ubi_eba_read_leb(struct ubi_device *ubi, struct ubi_volume *vol, int lnum,