forked from Ivasoft/openwrt
kernel: mtdsplit: modify rootfs helpers to provide partition type
Our mtdsplit parsers may want to create partition with name choice based on partition file system (e.g. SquashFS vs. JFFS2). This patch allows passing extra argument pointing to variable that will be set properly. Signed-off-by: Rafał Miłecki <zajec5@gmail.com> SVN-Revision: 48598
This commit is contained in:
@@ -70,7 +70,8 @@ static ssize_t mtd_next_eb(struct mtd_info *mtd, size_t offset)
|
||||
return mtd_rounddown_to_eb(offset, mtd) + mtd->erasesize;
|
||||
}
|
||||
|
||||
int mtd_check_rootfs_magic(struct mtd_info *mtd, size_t offset)
|
||||
int mtd_check_rootfs_magic(struct mtd_info *mtd, size_t offset,
|
||||
enum mtdsplit_part_type *type)
|
||||
{
|
||||
u32 magic;
|
||||
size_t retlen;
|
||||
@@ -84,25 +85,32 @@ int mtd_check_rootfs_magic(struct mtd_info *mtd, size_t offset)
|
||||
if (retlen != sizeof(magic))
|
||||
return -EIO;
|
||||
|
||||
if (le32_to_cpu(magic) != SQUASHFS_MAGIC &&
|
||||
magic != 0x19852003)
|
||||
return -EINVAL;
|
||||
if (le32_to_cpu(magic) == SQUASHFS_MAGIC) {
|
||||
if (type)
|
||||
*type = MTDSPLIT_PART_TYPE_SQUASHFS;
|
||||
return 0;
|
||||
} else if (magic == 0x19852003) {
|
||||
if (type)
|
||||
*type = MTDSPLIT_PART_TYPE_JFFS2;
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return -EINVAL;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mtd_check_rootfs_magic);
|
||||
|
||||
int mtd_find_rootfs_from(struct mtd_info *mtd,
|
||||
size_t from,
|
||||
size_t limit,
|
||||
size_t *ret_offset)
|
||||
size_t *ret_offset,
|
||||
enum mtdsplit_part_type *type)
|
||||
{
|
||||
size_t offset;
|
||||
int err;
|
||||
|
||||
for (offset = from; offset < limit;
|
||||
offset = mtd_next_eb(mtd, offset)) {
|
||||
err = mtd_check_rootfs_magic(mtd, offset);
|
||||
err = mtd_check_rootfs_magic(mtd, offset, type);
|
||||
if (err)
|
||||
continue;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user