[OE-core] [PATCH] image_types: add support for modern f2fs flash filesystem
Andre McCurdy
armccurdy at gmail.com
Wed Dec 6 02:42:53 UTC 2017
On Tue, Dec 5, 2017 at 3:27 PM, Saul Wold <sgw at linux.intel.com> wrote:
> The f2fs filesystem is a newer flash filesystem that is available in
> meta-filesystems. This needs a minimum sized blank space to operate
> in correctly.
>
> The f2fs has overprovision functionality and when building smaller
> filesystems, you actually need more space, therefore under 500M (or so)
> double the amount of space needed in order to handle the overprovision
> functions in f2fs.
>
> Signed-off-by: Saul Wold <sgw at linux.intel.com>
> ---
> meta/classes/image_types.bbclass | 21 +++++++++++++++++++++
> 1 file changed, 21 insertions(+)
>
> diff --git a/meta/classes/image_types.bbclass b/meta/classes/image_types.bbclass
> index d09d1277eaa..aaba1073a08 100644
> --- a/meta/classes/image_types.bbclass
> +++ b/meta/classes/image_types.bbclass
> @@ -218,6 +218,24 @@ IMAGE_CMD_ubi () {
>
> IMAGE_CMD_ubifs = "mkfs.ubifs -r ${IMAGE_ROOTFS} -o ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.ubifs ${MKUBIFS_ARGS}"
>
> +MKF2FS_ARGS = ""
> +FIX_F2FS_SIZE ?= "524288"
> +IMAGE_CMD_f2fs () {
> + # We need to add additional smarts here form devices smaller than 1.5G
> + # Need to scale appropriately between 40M -> 1.5G as the "overprovision
> + # ratio" goes down as the device gets bigger (70% -> 4.5%), below about
> + # 500M the standard IMAGE_OVERHEAD_FACTOR does not work, so add additional
> + # space here when under 500M
> + size=${ROOTFS_SIZE}
> + if [ ${size} -lt ${FIX_F2FS_SIZE} ] ; then
> + size=`expr ${size}*2`
> + bbwarn "Rootfs size is too small for F2FS. Filesystem will be extended to ${size}K"
> + fi
> + dd if=/dev/zero of=${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.f2fs count=${size} bs=1024
The equivalent dd command in oe_mkext234fs() creates a sparse file.
Any reason not to do so here (and in IMAGE_CMD_btrfs()) ?
> + mkfs.f2fs ${MKF2FS_ARGS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.f2fs
> + sload.f2fs -f ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.f2fs
> +}
> +
> EXTRA_IMAGECMD = ""
>
> inherit siteinfo kernel-arch
> @@ -231,6 +249,7 @@ EXTRA_IMAGECMD_ext3 ?= "-i 4096"
> EXTRA_IMAGECMD_ext4 ?= "-i 4096"
> EXTRA_IMAGECMD_btrfs ?= "-n 4096"
> EXTRA_IMAGECMD_elf ?= ""
> +EXTRA_IMAGECMD_f2fs ?= ""
This probably doesn't need to be defined (since IMAGE_CMD_f2fs() uses
MKF2FS_ARGS to pass custom arguments, rather than using EXTRA_IMAGECMD
as the other image commands do) ?
> do_image_jffs2[depends] += "mtd-utils-native:do_populate_sysroot"
> do_image_cramfs[depends] += "util-linux-native:do_populate_sysroot"
> @@ -246,6 +265,7 @@ do_image_elf[depends] += "virtual/kernel:do_populate_sysroot mkelfimage-native:d
> do_image_ubi[depends] += "mtd-utils-native:do_populate_sysroot"
> do_image_ubifs[depends] += "mtd-utils-native:do_populate_sysroot"
> do_image_multiubi[depends] += "mtd-utils-native:do_populate_sysroot"
> +do_image_f2fs[depends] += "f2fs-tools-native:do_populate_sysroot"
>
> # This variable is available to request which values are suitable for IMAGE_FSTYPES
> IMAGE_TYPES = " \
> @@ -264,6 +284,7 @@ IMAGE_TYPES = " \
> elf \
> wic wic.gz wic.bz2 wic.lzma \
> container \
> + f2fs \
> "
>
> # Compression is a special case of conversion. The old variable
> --
> 2.13.6
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
More information about the Openembedded-core
mailing list