common/rc: support f2fs for _scratch_mkfs_sized
PATCH 1/3 common/rc: support f2fs for _scratch_mkfs_sized
The mkfs.f2fs has an option to build a certain sized filesystem by giving the number of sectors.
So, this patch adds to use that.
--- common/rc | 4 ++++ 1 file changed, 4 insertions(+)
common/rc +4 -0
@@ -739,6 +739,10 @@ _scratch_mkfs_sized() $MKFS_REISER4_PROG $MKFS_OPTIONS -y -b $blocksize $SCRATCH_DEV \ `expr $fssize / 1024` ;; + f2fs) + # mkfs.f2fs requires # of sectors as an input for the size + $MKFS_F2FS_PROG $MKFS_OPTIONS $SCRATCH_DEV `expr $fssize / 512` + ;; *) _notrun "Filesystem $FSTYP not supported in _scratch_mkfs_sized" ;;
Signature · 1 line
2.4.9 (Apple Git-60)
PATCH 2/3 common/config: add mkfs options for f2fs
This patch adds an interface to give mkfs option for f2fs.
--- common/config | 3 +++ 1 file changed, 3 insertions(+)
common/config +3 -0
@@ -352,6 +352,9 @@ _mkfs_opts() jfs) export MKFS_OPTIONS="$JFS_MKFS_OPTIONS -q" ;; + f2fs) + export MKFS_OPTIONS="$F2FS_MKFS_OPTIONS" + ;; *) ;; esac
Signature · 1 line
2.4.9 (Apple Git-60)
PATCH 3/3 f2fs/001: introduce a testcaes for -ENOSPC with inline operation
In reply to Jaegeuk KimThis patch introduces f2fs/001 to test -ENOSPC when inline operation was activated.
Inline_data feature is described in:
http://lwn.net/Articles/573408/
--- tests/f2fs/001 | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/f2fs/001.out | 21 +++++++++++++ tests/f2fs/group | 6 ++++ 3 files changed, 113 insertions(+) create mode 100755 tests/f2fs/001 create mode 100644 tests/f2fs/001.out create mode 100644 tests/f2fs/group
tests/f2fs/001 new file +86 -0
@@ -0,0 +1,86 @@ +#! /bin/bash +# FS QA Test No. f2fs/001 +# +# Test inline_data behaviors when filesystem is full. +# +# The inline_data feature was introduced in ext4 and f2fs as follows. +# ext4 : http://lwn.net/Articles/468678/ +# f2fs : http://lwn.net/Articles/573408/ +# +# The basic idea is embedding small-sized file's data into relatively large +# inode space. +# In ext4, up to 132 bytes of data can be stored in 256 bytes-sized inode. +# In f2fs, up to 3.4KB of data can be embedded into 4KB-sized inode block. +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Jaegeuk Kim. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + rm -f $tmp.* +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +_supported_fs f2fs +_supported_os Linux +_require_scratch + +testfile=$SCRATCH_MNT/testfile +dummyfile=$SCRATCH_MNT/dummyfile + +# build 4GB filesystem +_scratch_mkfs_sized $((4 * 1024 * 1024 * 1024)) > /dev/null 2>&1 +_scratch_mount + +echo "==== create small file ====" +$XFS_IO_PROG -t -f -c "pwrite -S 0x58 0 40" $testfile | _filter_xfs_io + +# -ENOSPC should be triggered +echo "==== Fullfill the partition ====" +$XFS_IO_PROG -t -f -c "falloc 0 5g" $dummyfile | _filter_xfs_io + +# -ENOSPC should be triggered without any panic +echo "==== change i_size & write data ====" +$XFS_IO_PROG \ + -c "truncate 96" \ + -c "pwrite -S 0x58 8192 4096" \ +$testfile | _filter_xfs_io + +echo "==== check data contents ====" +hexdump -C $testfile +_scratch_remount +hexdump -C $testfile + +rm $testfile +rm $dummyfile + +status=0 +exit
tests/f2fs/001.out new file +21 -0
@@ -0,0 +1,21 @@ +QA output created by 001 +==== create small file ==== +wrote 40/40 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +==== Fullfill the partition ==== +fallocate: No space left on device +==== change i_size & write data ==== +pwrite64: No space left on device +==== check data contents ==== +00000000 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 |XXXXXXXXXXXXXXXX| +* +00000020 58 58 58 58 58 58 58 58 00 00 00 00 00 00 00 00 |XXXXXXXX........| +00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +* +00000060 +00000000 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 |XXXXXXXXXXXXXXXX| +* +00000020 58 58 58 58 58 58 58 58 00 00 00 00 00 00 00 00 |XXXXXXXX........| +00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +* +00000060
tests/f2fs/group new file +6 -0
@@ -0,0 +1,6 @@ +# QA groups control file +# Defines test groups and nominal group owners +# - do not start group names with a digit +# - comment line before each group is "new" description +# +001 auto quick rw
Signature · 1 line
2.4.9 (Apple Git-60)
Hi Jaegeuk,
Quoted 15 lines · Jaegeuk Kim
The mkfs.f2fs has an option to build a certain sized filesystem by giving the number of sectors.
So, this patch adds to use that.
Signed-off-by Jaegeuk Kim <[email protected]>--- common/rc | 4 ++++ 1 file changed, 4 insertions(+)common/rc +0
-0
common/rc _scratch_mkfs_sized() · line 744
Quoted 6 lines
common/rc +3
-0@@ -739,6 +739,10 @@ _scratch_mkfs_sized() $MKFS_REISER4_PROG $MKFS_OPTIONS -y -b $blocksize $SCRATCH_DEV \ `expr $fssize / 1024` ;; + f2fs) + # mkfs.f2fs requires # of sectors as an input for the size + $MKFS_F2FS_PROG $MKFS_OPTIONS $SCRATCH_DEV `expr $fssize / 512`
In mkfs.f2fs, we will calculate fs size based on real sector size of block device and the input sectors, so if sector size of block device is not 512, our fs size calculated will be incorrect.
How about fixing it for supporting different sector size?
Thanks,
Quoted 5 lines
common/rc +1
-0+ ;; *) _notrun "Filesystem $FSTYP not supported in _scratch_mkfs_sized" ;;
Hi Chao,
Quoted 29 lines · Chao Yu
Hi Jaegeuk,
Quoted 15 lines · Jaegeuk Kim
The mkfs.f2fs has an option to build a certain sized filesystem by giving the number of sectors.
So, this patch adds to use that.
Signed-off-by Jaegeuk Kim <[email protected]>--- common/rc | 4 ++++ 1 file changed, 4 insertions(+)common/rc +0
-0common/rc _scratch_mkfs_sized() · line 744
Quoted 6 lines
common/rc +3
-0@@ -739,6 +739,10 @@ _scratch_mkfs_sized() $MKFS_REISER4_PROG $MKFS_OPTIONS -y -b $blocksize $SCRATCH_DEV \ `expr $fssize / 1024` ;; + f2fs) + # mkfs.f2fs requires # of sectors as an input for the size + $MKFS_F2FS_PROG $MKFS_OPTIONS $SCRATCH_DEV `expr $fssize / 512`In mkfs.f2fs, we will calculate fs size based on real sector size of block device and the input sectors, so if sector size of block device is not 512, our fs size calculated will be incorrect.
Quoted 1 line
How about fixing it for supporting different sector size?
Sure, I'll resend v2.
Thanks,
Quoted 8 lines
Thanks,
Quoted 5 lines
common/rc +1
-0+ ;; *) _notrun "Filesystem $FSTYP not supported in _scratch_mkfs_sized" ;;
Change log from v1:
o adjust different sector sizes
-- >8 --
Quoted 1 line
From
5b2c77d3acaf11bac5489ec697c2ec53f261afebMon Sep 17 00:00:00 2001
From: Jaegeuk Kim <[email protected]>
Date: Fri, 20 Mar 2015 15:37:10 -0700
Subject: [PATCH] common/rc: support f2fs for _scratch_mkfs_sized
The mkfs.f2fs has an option to build a certain sized filesystem by giving the number of sectors.
So, this patch adds to use that.
--- common/rc | 5 +++++ 1 file changed, 5 insertions(+)
common/rc +5 -0
@@ -739,6 +739,11 @@ _scratch_mkfs_sized() $MKFS_REISER4_PROG $MKFS_OPTIONS -y -b $blocksize $SCRATCH_DEV \ `expr $fssize / 1024` ;; + f2fs) + # mkfs.f2fs requires # of sectors as an input for the size + sector_size=`blockdev --getss $SCRATCH_DEV` + $MKFS_F2FS_PROG $MKFS_OPTIONS $SCRATCH_DEV `expr $fssize / $sector_size` + ;; *) _notrun "Filesystem $FSTYP not supported in _scratch_mkfs_sized" ;;
Signature · 1 line
2.4.9 (Apple Git-60)