1*4882a593Smuzhiyunimport os 2*4882a593Smuzhiyun 3*4882a593Smuzhiyunimport infra.basetest 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun 6*4882a593Smuzhiyundef dumpf2fs_getprop(out, prop): 7*4882a593Smuzhiyun for line in out: 8*4882a593Smuzhiyun fields = line.split(" = ") 9*4882a593Smuzhiyun if fields[0] == prop: 10*4882a593Smuzhiyun return fields[1].strip() 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun 13*4882a593Smuzhiyunclass TestF2FS(infra.basetest.BRTest): 14*4882a593Smuzhiyun config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ 15*4882a593Smuzhiyun """ 16*4882a593Smuzhiyun BR2_TARGET_ROOTFS_F2FS=y 17*4882a593Smuzhiyun BR2_TARGET_ROOTFS_F2FS_SIZE="128M" 18*4882a593Smuzhiyun BR2_TARGET_ROOTFS_F2FS_OVERPROVISION=0 19*4882a593Smuzhiyun BR2_TARGET_ROOTFS_F2FS_DISCARD=y 20*4882a593Smuzhiyun # BR2_TARGET_ROOTFS_TAR is not set 21*4882a593Smuzhiyun BR2_LINUX_KERNEL=y 22*4882a593Smuzhiyun BR2_LINUX_KERNEL_CUSTOM_VERSION=y 23*4882a593Smuzhiyun BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.204" 24*4882a593Smuzhiyun BR2_LINUX_KERNEL_USE_DEFCONFIG=y 25*4882a593Smuzhiyun BR2_LINUX_KERNEL_DEFCONFIG="vexpress" 26*4882a593Smuzhiyun BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}" 27*4882a593Smuzhiyun """.format(infra.filepath("conf/f2fs-kernel-fragment.config")) 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun def test_run(self): 30*4882a593Smuzhiyun img = os.path.join(self.builddir, "images", "rootfs.f2fs") 31*4882a593Smuzhiyun out = infra.run_cmd_on_host(self.builddir, ["host/sbin/dump.f2fs", img]) 32*4882a593Smuzhiyun out = out.splitlines() 33*4882a593Smuzhiyun prop = dumpf2fs_getprop(out, "Info: total sectors") 34*4882a593Smuzhiyun self.assertEqual(prop, "262144 (128 MB)") 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun kernel = os.path.join(self.builddir, "images", "zImage") 37*4882a593Smuzhiyun kernel_cmdline = ["root=/dev/mmcblk0", "rootfstype=f2fs", 38*4882a593Smuzhiyun "console=ttyAMA0"] 39*4882a593Smuzhiyun dtb = infra.download(self.downloaddir, "vexpress-v2p-ca9.dtb") 40*4882a593Smuzhiyun options = ["-M", "vexpress-a9", "-dtb", dtb, 41*4882a593Smuzhiyun "-drive", "file={},if=sd,format=raw".format(img)] 42*4882a593Smuzhiyun self.emulator.boot(arch="armv7", kernel=kernel, 43*4882a593Smuzhiyun kernel_cmdline=kernel_cmdline, 44*4882a593Smuzhiyun options=options) 45*4882a593Smuzhiyun self.emulator.login() 46*4882a593Smuzhiyun cmd = "mount | grep '/dev/root on / type f2fs'" 47*4882a593Smuzhiyun self.assertRunOk(cmd) 48