Changeset 38111


Ignore:
Timestamp:
2013-09-21T19:55:54+02:00 (4 years ago)
Author:
juhosg
Message:

kernel/3.10: add more helpers to the mtdsplit code

Signed-off-by: Gabor Juhos <juhosg@…>

Location:
trunk/target/linux/generic/files/drivers/mtd
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/generic/files/drivers/mtd/mtdsplit.c

    r38109 r38111  
    6565} 
    6666EXPORT_SYMBOL_GPL(mtd_get_squashfs_len); 
     67 
     68static ssize_t mtd_next_eb(struct mtd_info *mtd, size_t offset) 
     69{ 
     70        return mtd_rounddown_to_eb(offset, mtd) + mtd->erasesize; 
     71} 
     72 
     73int mtd_check_rootfs_magic(struct mtd_info *mtd, size_t offset) 
     74{ 
     75        u32 magic; 
     76        size_t retlen; 
     77        int ret; 
     78 
     79        ret = mtd_read(mtd, offset, sizeof(magic), &retlen, 
     80                       (unsigned char *) &magic); 
     81        if (ret) 
     82                return ret; 
     83 
     84        if (retlen != sizeof(magic)) 
     85                return -EIO; 
     86 
     87        if (le32_to_cpu(magic) != SQUASHFS_MAGIC && 
     88            magic != 0x19852003) 
     89                return -EINVAL; 
     90 
     91        return 0; 
     92} 
     93EXPORT_SYMBOL_GPL(mtd_check_rootfs_magic); 
     94 
     95int mtd_find_rootfs_from(struct mtd_info *mtd, 
     96                         size_t from, 
     97                         size_t limit, 
     98                         size_t *ret_offset) 
     99{ 
     100        size_t offset; 
     101        int err; 
     102 
     103        for (offset = from; offset < limit; 
     104             offset = mtd_next_eb(mtd, offset)) { 
     105                err = mtd_check_rootfs_magic(mtd, offset); 
     106                if (err) 
     107                        continue; 
     108 
     109                *ret_offset = offset; 
     110                return 0; 
     111        } 
     112 
     113        return -ENODEV; 
     114} 
     115EXPORT_SYMBOL_GPL(mtd_find_rootfs_from); 
     116 
  • trunk/target/linux/generic/files/drivers/mtd/mtdsplit.h

    r38109 r38111  
    2020                         size_t offset, 
    2121                         size_t *squashfs_len); 
     22 
     23int mtd_check_rootfs_magic(struct mtd_info *mtd, size_t offset); 
     24 
     25int mtd_find_rootfs_from(struct mtd_info *mtd, 
     26                         size_t from, 
     27                         size_t limit, 
     28                         size_t *ret_offset); 
     29 
    2230#else 
    2331static inline int mtd_get_squashfs_len(struct mtd_info *master, 
     
    2735        return -ENODEV; 
    2836} 
    29 #endif 
     37 
     38static inline int mtd_check_rootfs_magic(struct mtd_info *mtd, size_t offset) 
     39{ 
     40        return -EINVAL; 
     41} 
     42 
     43static inline int mtd_find_rootfs_from(struct mtd_info *mtd, 
     44                                       size_t from, 
     45                                       size_t limit, 
     46                                       size_t *ret_offset) 
     47{ 
     48        return -ENODEV; 
     49} 
     50#endif /* CONFIG_MTD_SPLIT */ 
    3051 
    3152#endif /* _MTDSPLIT_H */ 
Note: See TracChangeset for help on using the changeset viewer.