Message ID | 1423004840-45315-7-git-send-email-jaegeuk@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Feb 03, 2015 at 03:07:18PM -0800, Jaegeuk Kim wrote: > This patch defines dump.f2fs and logstate for f2fs's clean and dirty logs. > And, also it adds _link_out_file_fs to specify output according to filesystem. > > Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> > --- > common/config | 1 + > common/log | 20 +++++++++++++++++--- > common/rc | 22 ++++++++++++++++++++++ > 3 files changed, 40 insertions(+), 3 deletions(-) > > diff --git a/common/config b/common/config > index 9fb3703..cdc2214 100644 > --- a/common/config > +++ b/common/config > @@ -221,6 +221,7 @@ case "$HOSTOS" in > export MKFS_UDF_PROG="`set_prog_path mkudffs`" > export MKFS_BTRFS_PROG="`set_btrfs_mkfs_prog_path_with_opts`" > export MKFS_F2FS_PROG="`set_prog_path mkfs.f2fs`" > + export DUMP_F2FS_PROG="`set_prog_path dump.f2fs`" > export BMAP_F2FS_PROG="`set_prog_path fibmap.f2fs`" > export BTRFS_UTIL_PROG="`set_prog_path btrfs`" > export BTRFS_SHOW_SUPER_PROG="`set_prog_path btrfs-show-super`" > diff --git a/common/log b/common/log > index 87074d9..186eb4c 100644 > --- a/common/log > +++ b/common/log > @@ -218,11 +218,25 @@ _check_log() > > _print_logstate() > { > - _scratch_xfs_logprint -t | tee -a $seqres.full >$tmp.logprint > - if grep -q "<DIRTY>" $tmp.logprint; then > + case "$FSTYP" in > + xfs) > + _scratch_xfs_logprint -t | tee -a $seqres.full >$tmp.logprint > + DIRTY="<DIRTY>" > + CLEAN="<CLEAN>" > + ;; > + f2fs) > + _scratch_f2fs_logprint | tee -a $seqres.full >$tmp.logprint > + DIRTY="sudden-power-off" > + CLEAN="unmount" > + ;; > + *) > + ;; > + esac > + > + if grep -q $DIRTY $tmp.logprint; then > echo "dirty log" > fi > - if grep -q "<CLEAN>" $tmp.logprint; then > + if grep -q $CLEAN $tmp.logprint; then > echo "clean log" > fi The only output from this function is "clean log" or "dirty log". so: _scratch_xfs_logstate() { _scratch_xfs_logprint -t | tee -a $seqres.full | grep -q "<CLEAN>" echo $? } _scratch_f2fs_logstate() { $DUMP_F2FS_PROG $SCRATCH_DEV | tee -a $seqres.full | grep -q "unmount" echo $? } _print_logstate() { case "$FSTYP" in xfs) dirty=$(_scratch_xfs_logstate) ;; f2fs) dirty=$(_scratch_f2fs_logstate) ;; *) ;; esac if [ $dirty -ne 0 ]; then echo "dirty log" else echo "clean log" fi } > +_link_out_file_fs() > +{ > + if [ -z "$1" -o -z "$2" ]; then > + echo Error must pass src and dst. > + exit > + fi > + rm -f $2 > + ln -s $1.$FSTYP $2 > +} Not sure why this is necessary, but I'll point that out where it is used. > + > _die() > { > echo $@ > @@ -2435,6 +2450,13 @@ _require_dumpe2fs() > fi > } > > +_require_dumpf2fs() > +{ > + if [ -z "$DUMP_F2FS_PROG" ]; then > + _notrun "This test requires dump.f2fs utility." > + fi > +} Actually, I'd make that _require_logstate() { case "$FSTYP" in xfs) if [ -z "$XFS_LOGPRINT_PROG" ]; then _notrun "This test requires xfs_logprint utility." fi f2fs) if [ -z "$DUMP_F2FS_PROG" ]; then _notrun "This test requires dump.f2fs utility." fi ;; *) _notrun "$FSTYP does not support log state probing." ;; esac } > + > _require_ugid_map() > { > if [ ! -e /proc/self/uid_map ]; then > -- > 2.1.1 > >
diff --git a/common/config b/common/config index 9fb3703..cdc2214 100644 --- a/common/config +++ b/common/config @@ -221,6 +221,7 @@ case "$HOSTOS" in export MKFS_UDF_PROG="`set_prog_path mkudffs`" export MKFS_BTRFS_PROG="`set_btrfs_mkfs_prog_path_with_opts`" export MKFS_F2FS_PROG="`set_prog_path mkfs.f2fs`" + export DUMP_F2FS_PROG="`set_prog_path dump.f2fs`" export BMAP_F2FS_PROG="`set_prog_path fibmap.f2fs`" export BTRFS_UTIL_PROG="`set_prog_path btrfs`" export BTRFS_SHOW_SUPER_PROG="`set_prog_path btrfs-show-super`" diff --git a/common/log b/common/log index 87074d9..186eb4c 100644 --- a/common/log +++ b/common/log @@ -218,11 +218,25 @@ _check_log() _print_logstate() { - _scratch_xfs_logprint -t | tee -a $seqres.full >$tmp.logprint - if grep -q "<DIRTY>" $tmp.logprint; then + case "$FSTYP" in + xfs) + _scratch_xfs_logprint -t | tee -a $seqres.full >$tmp.logprint + DIRTY="<DIRTY>" + CLEAN="<CLEAN>" + ;; + f2fs) + _scratch_f2fs_logprint | tee -a $seqres.full >$tmp.logprint + DIRTY="sudden-power-off" + CLEAN="unmount" + ;; + *) + ;; + esac + + if grep -q $DIRTY $tmp.logprint; then echo "dirty log" fi - if grep -q "<CLEAN>" $tmp.logprint; then + if grep -q $CLEAN $tmp.logprint; then echo "clean log" fi } diff --git a/common/rc b/common/rc index 72e2f99..04b05eb 100644 --- a/common/rc +++ b/common/rc @@ -770,6 +770,11 @@ _scratch_xfs_repair() $XFS_REPAIR_PROG $SCRATCH_OPTIONS $* $SCRATCH_DEV } +_scratch_f2fs_logprint() +{ + $DUMP_F2FS_PROG $SCRATCH_DEV +} + _get_pids_by_name() { if [ $# -ne 1 ] @@ -2091,6 +2096,16 @@ _link_out_file() fi } +_link_out_file_fs() +{ + if [ -z "$1" -o -z "$2" ]; then + echo Error must pass src and dst. + exit + fi + rm -f $2 + ln -s $1.$FSTYP $2 +} + _die() { echo $@ @@ -2435,6 +2450,13 @@ _require_dumpe2fs() fi } +_require_dumpf2fs() +{ + if [ -z "$DUMP_F2FS_PROG" ]; then + _notrun "This test requires dump.f2fs utility." + fi +} + _require_ugid_map() { if [ ! -e /proc/self/uid_map ]; then
This patch defines dump.f2fs and logstate for f2fs's clean and dirty logs. And, also it adds _link_out_file_fs to specify output according to filesystem. Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> --- common/config | 1 + common/log | 20 +++++++++++++++++--- common/rc | 22 ++++++++++++++++++++++ 3 files changed, 40 insertions(+), 3 deletions(-)