提交 75547696 编写于 作者: B Boris Brezillon 提交者: Richard Weinberger

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: NBoris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: NRichard Weinberger <richard@nod.at>
上级 9a5f09ac
...@@ -311,6 +311,18 @@ static void leb_write_unlock(struct ubi_device *ubi, int vol_id, int lnum) ...@@ -311,6 +311,18 @@ static void leb_write_unlock(struct ubi_device *ubi, int vol_id, int lnum)
spin_unlock(&ubi->ltree_lock); spin_unlock(&ubi->ltree_lock);
} }
/**
* ubi_eba_is_mapped - check if a LEB is mapped.
* @vol: volume description object
* @lnum: logical eraseblock number
*
* This function returns true if the LEB is mapped, false otherwise.
*/
bool ubi_eba_is_mapped(struct ubi_volume *vol, int lnum)
{
return vol->eba_tbl[lnum] >= 0;
}
/** /**
* ubi_eba_unmap_leb - un-map logical eraseblock. * ubi_eba_unmap_leb - un-map logical eraseblock.
* @ubi: UBI device description object * @ubi: UBI device description object
......
...@@ -722,7 +722,7 @@ int ubi_leb_map(struct ubi_volume_desc *desc, int lnum) ...@@ -722,7 +722,7 @@ int ubi_leb_map(struct ubi_volume_desc *desc, int lnum)
if (vol->upd_marker) if (vol->upd_marker)
return -EBADF; return -EBADF;
if (vol->eba_tbl[lnum] >= 0) if (ubi_eba_is_mapped(vol, lnum))
return -EBADMSG; return -EBADMSG;
return ubi_eba_write_leb(ubi, vol, lnum, NULL, 0, 0); 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,7 +757,7 @@ int ubi_is_mapped(struct ubi_volume_desc *desc, int lnum)
if (vol->upd_marker) if (vol->upd_marker)
return -EBADF; return -EBADF;
return vol->eba_tbl[lnum] >= 0; return ubi_eba_is_mapped(vol, lnum);
} }
EXPORT_SYMBOL_GPL(ubi_is_mapped); EXPORT_SYMBOL_GPL(ubi_is_mapped);
......
...@@ -849,6 +849,7 @@ static inline bool ubi_leb_valid(struct ubi_volume *vol, int lnum) ...@@ -849,6 +849,7 @@ static inline bool ubi_leb_valid(struct ubi_volume *vol, int lnum)
} }
/* eba.c */ /* eba.c */
bool ubi_eba_is_mapped(struct ubi_volume *vol, int lnum);
int ubi_eba_unmap_leb(struct ubi_device *ubi, struct ubi_volume *vol, int ubi_eba_unmap_leb(struct ubi_device *ubi, struct ubi_volume *vol,
int lnum); int lnum);
int ubi_eba_read_leb(struct ubi_device *ubi, struct ubi_volume *vol, int lnum, int ubi_eba_read_leb(struct ubi_device *ubi, struct ubi_volume *vol, int lnum,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册