* [RFC PATCH] fstests: add support for hfsplus
@ 2018-09-01 2:05 Ernesto A. Fernández
2018-09-01 17:09 ` Eryu Guan
0 siblings, 1 reply; 6+ messages in thread
From: Ernesto A. Fernández @ 2018-09-01 2:05 UTC (permalink / raw)
To: fstests; +Cc: Eryu Guan
It is not possible to set file system size when running mkfs.hfsplus,
so use the device mapper as a workaround.
Signed-off-by: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
---
I've been using this to test hfsplus patches. If there's a better way
please let me know.
common/config | 7 +++++++
common/rc | 38 +++++++++++++++++++++++++++++++++++++-
2 files changed, 44 insertions(+), 1 deletion(-)
diff --git a/common/config b/common/config
index 2f1f2720..32a1ccb8 100644
--- a/common/config
+++ b/common/config
@@ -229,6 +229,7 @@ case "$HOSTOS" in
export MKFS_CIFS_PROG="false"
export MKFS_OVERLAY_PROG="false"
export MKFS_REISER4_PROG=$(type -P mkfs.reiser4)
+ export MKFS_HFSPLUS_PROG=$(type -P mkfs.hfsplus)
export E2FSCK_PROG=$(type -P e2fsck)
export TUNE2FS_PROG=$(type -P tune2fs)
export FSCK_OVERLAY_PROG=$(type -P fsck.overlay)
@@ -313,6 +314,9 @@ _mount_opts()
ubifs)
export MOUNT_OPTIONS=$UBIFS_MOUNT_OPTIONS
;;
+ hfsplus)
+ export MOUNT_OPTIONS=$HFSPLUS_MOUNT_OPTIONS
+ ;;
*)
;;
esac
@@ -380,6 +384,9 @@ _mkfs_opts()
f2fs)
export MKFS_OPTIONS="$F2FS_MKFS_OPTIONS"
;;
+ hfsplus)
+ export MKFS_OPTIONS=$HFSPLUS_MKFS_OPTIONS
+ ;;
*)
;;
esac
diff --git a/common/rc b/common/rc
index ec631ad9..38f61944 100644
--- a/common/rc
+++ b/common/rc
@@ -158,6 +158,9 @@ case "$FSTYP" in
ubifs)
[ "$UBIUPDATEVOL_PROG" = "" ] && _fatal "ubiupdatevol not found"
;;
+ hfsplus)
+ [ "$MKFS_HFSPLUS_PROG" = "" ] && _fatal "mkfs.hfsplus not found"
+ ;;
esac
if [ ! -z "$REPORT_LIST" ]; then
@@ -746,6 +749,12 @@ _scratch_mkfs()
mkfs_cmd="yes | $MKFS_PROG -t $FSTYP --"
mkfs_filter="grep -v -e ^mkfs\.ocfs2"
;;
+ hfsplus)
+ mkfs_cmd="yes | $MKFS_PROG -t $FSTYP --"
+ mkfs_filter="cat"
+ # a test may have been interrupted after _scratch_mkfs_sized()
+ rm -f ${RESULT_DIR}/hfsplus_sectors
+ ;;
*)
mkfs_cmd="yes | $MKFS_PROG -t $FSTYP --"
mkfs_filter="cat"
@@ -995,6 +1004,17 @@ _scratch_mkfs_sized()
fi
export MOUNT_OPTIONS="-o size=$fssize $TMPFS_MOUNT_OPTIONS"
;;
+ hfsplus)
+ # mkfs.hfsplus does not allow setting the size of the filesystem
+ _require_dm_target linear
+ local sectors=`expr $fssize / 512`
+ local table="0 $sectors linear $SCRATCH_DEV 0"
+ _dmsetup_create hfsplus-tmp --table "$table" || _fatal "dmsetup failed"
+ ${MKFS_PROG}.$FSTYP $MKFS_OPTIONS -b $blocksize /dev/mapper/hfsplus-tmp
+ _dmsetup_remove hfsplus-tmp
+ # remember the true size of the filesystem for fsck.hfsplus
+ echo -n $sectors > ${RESULT_DIR}/hfsplus_sectors
+ ;;
*)
_notrun "Filesystem $FSTYP not supported in _scratch_mkfs_sized"
;;
@@ -2661,6 +2681,22 @@ _check_scratch_fs()
ubifs)
# there is no fsck program for ubifs yet
;;
+ hfsplus)
+ # fsck.hfsplus will always assume the filesystem fills the device
+ if [ -f ${RESULT_DIR}/hfsplus_sectors ]; then
+ local sectors=`cat ${RESULT_DIR}/hfsplus_sectors`
+ rm -f ${RESULT_DIR}/hfsplus_sectors
+ local table="0 $sectors linear $SCRATCH_DEV 0"
+ _dmsetup_create hfsplus-tmp --table "$table" || \
+ _fatal "dmsetup failed"
+ _check_generic_filesystem /dev/mapper/hfsplus-tmp
+ local fsck_status=$?
+ _dmsetup_remove hfsplus-tmp
+ return $fsck_status
+ else
+ _check_generic_filesystem $device
+ fi
+ ;;
*)
_check_generic_filesystem $device
;;
@@ -3055,7 +3091,7 @@ _require_metadata_journaling()
fi
case "$FSTYP" in
- ext2|vfat|msdos|udf)
+ ext2|vfat|msdos|udf|hfsplus)
_notrun "$FSTYP does not support metadata journaling"
;;
ext4)
--
2.11.0
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [RFC PATCH] fstests: add support for hfsplus
2018-09-01 2:05 [RFC PATCH] fstests: add support for hfsplus Ernesto A. Fernández
@ 2018-09-01 17:09 ` Eryu Guan
2018-09-02 4:03 ` Ernesto A. Fernández
0 siblings, 1 reply; 6+ messages in thread
From: Eryu Guan @ 2018-09-01 17:09 UTC (permalink / raw)
To: Ernesto A. Fernández; +Cc: fstests
On Fri, Aug 31, 2018 at 11:05:03PM -0300, Ernesto A. Fernández wrote:
> It is not possible to set file system size when running mkfs.hfsplus,
> so use the device mapper as a workaround.
I'd prefer _notrun the test in _scratch_mkfs_sized() instead of this
workaround, as the harness is expecting to operate $SCRATCH_DEV but this
workaround may break this assumption in subtle ways, e.g. now
_check_scratch_fs fails to create hfsplus-tmp device because
$SCRATCH_DEV may still be mounted.
Otherwise this patch looks fine to me.
Thanks,
Eryu
>
> Signed-off-by: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
> ---
> I've been using this to test hfsplus patches. If there's a better way
> please let me know.
>
> common/config | 7 +++++++
> common/rc | 38 +++++++++++++++++++++++++++++++++++++-
> 2 files changed, 44 insertions(+), 1 deletion(-)
>
> diff --git a/common/config b/common/config
> index 2f1f2720..32a1ccb8 100644
> --- a/common/config
> +++ b/common/config
> @@ -229,6 +229,7 @@ case "$HOSTOS" in
> export MKFS_CIFS_PROG="false"
> export MKFS_OVERLAY_PROG="false"
> export MKFS_REISER4_PROG=$(type -P mkfs.reiser4)
> + export MKFS_HFSPLUS_PROG=$(type -P mkfs.hfsplus)
> export E2FSCK_PROG=$(type -P e2fsck)
> export TUNE2FS_PROG=$(type -P tune2fs)
> export FSCK_OVERLAY_PROG=$(type -P fsck.overlay)
> @@ -313,6 +314,9 @@ _mount_opts()
> ubifs)
> export MOUNT_OPTIONS=$UBIFS_MOUNT_OPTIONS
> ;;
> + hfsplus)
> + export MOUNT_OPTIONS=$HFSPLUS_MOUNT_OPTIONS
> + ;;
> *)
> ;;
> esac
> @@ -380,6 +384,9 @@ _mkfs_opts()
> f2fs)
> export MKFS_OPTIONS="$F2FS_MKFS_OPTIONS"
> ;;
> + hfsplus)
> + export MKFS_OPTIONS=$HFSPLUS_MKFS_OPTIONS
> + ;;
> *)
> ;;
> esac
> diff --git a/common/rc b/common/rc
> index ec631ad9..38f61944 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -158,6 +158,9 @@ case "$FSTYP" in
> ubifs)
> [ "$UBIUPDATEVOL_PROG" = "" ] && _fatal "ubiupdatevol not found"
> ;;
> + hfsplus)
> + [ "$MKFS_HFSPLUS_PROG" = "" ] && _fatal "mkfs.hfsplus not found"
> + ;;
> esac
>
> if [ ! -z "$REPORT_LIST" ]; then
> @@ -746,6 +749,12 @@ _scratch_mkfs()
> mkfs_cmd="yes | $MKFS_PROG -t $FSTYP --"
> mkfs_filter="grep -v -e ^mkfs\.ocfs2"
> ;;
> + hfsplus)
> + mkfs_cmd="yes | $MKFS_PROG -t $FSTYP --"
> + mkfs_filter="cat"
> + # a test may have been interrupted after _scratch_mkfs_sized()
> + rm -f ${RESULT_DIR}/hfsplus_sectors
> + ;;
> *)
> mkfs_cmd="yes | $MKFS_PROG -t $FSTYP --"
> mkfs_filter="cat"
> @@ -995,6 +1004,17 @@ _scratch_mkfs_sized()
> fi
> export MOUNT_OPTIONS="-o size=$fssize $TMPFS_MOUNT_OPTIONS"
> ;;
> + hfsplus)
> + # mkfs.hfsplus does not allow setting the size of the filesystem
> + _require_dm_target linear
> + local sectors=`expr $fssize / 512`
> + local table="0 $sectors linear $SCRATCH_DEV 0"
> + _dmsetup_create hfsplus-tmp --table "$table" || _fatal "dmsetup failed"
> + ${MKFS_PROG}.$FSTYP $MKFS_OPTIONS -b $blocksize /dev/mapper/hfsplus-tmp
> + _dmsetup_remove hfsplus-tmp
> + # remember the true size of the filesystem for fsck.hfsplus
> + echo -n $sectors > ${RESULT_DIR}/hfsplus_sectors
> + ;;
> *)
> _notrun "Filesystem $FSTYP not supported in _scratch_mkfs_sized"
> ;;
> @@ -2661,6 +2681,22 @@ _check_scratch_fs()
> ubifs)
> # there is no fsck program for ubifs yet
> ;;
> + hfsplus)
> + # fsck.hfsplus will always assume the filesystem fills the device
> + if [ -f ${RESULT_DIR}/hfsplus_sectors ]; then
> + local sectors=`cat ${RESULT_DIR}/hfsplus_sectors`
> + rm -f ${RESULT_DIR}/hfsplus_sectors
> + local table="0 $sectors linear $SCRATCH_DEV 0"
> + _dmsetup_create hfsplus-tmp --table "$table" || \
> + _fatal "dmsetup failed"
> + _check_generic_filesystem /dev/mapper/hfsplus-tmp
> + local fsck_status=$?
> + _dmsetup_remove hfsplus-tmp
> + return $fsck_status
> + else
> + _check_generic_filesystem $device
> + fi
> + ;;
> *)
> _check_generic_filesystem $device
> ;;
> @@ -3055,7 +3091,7 @@ _require_metadata_journaling()
> fi
>
> case "$FSTYP" in
> - ext2|vfat|msdos|udf)
> + ext2|vfat|msdos|udf|hfsplus)
> _notrun "$FSTYP does not support metadata journaling"
> ;;
> ext4)
> --
> 2.11.0
>
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [RFC PATCH] fstests: add support for hfsplus
2018-09-01 17:09 ` Eryu Guan
@ 2018-09-02 4:03 ` Ernesto A. Fernández
[not found] ` <4445a65e-42b7-5e2e-36fa-45f116f99f33@sandeen.net>
0 siblings, 1 reply; 6+ messages in thread
From: Ernesto A. Fernández @ 2018-09-02 4:03 UTC (permalink / raw)
To: Eryu Guan; +Cc: fstests
On Sun, Sep 02, 2018 at 01:09:57AM +0800, Eryu Guan wrote:
> On Fri, Aug 31, 2018 at 11:05:03PM -0300, Ernesto A. Fernández wrote:
> > It is not possible to set file system size when running mkfs.hfsplus,
> > so use the device mapper as a workaround.
>
> I'd prefer _notrun the test in _scratch_mkfs_sized() instead of this
> workaround, as the harness is expecting to operate $SCRATCH_DEV but this
> workaround may break this assumption in subtle ways, e.g. now
> _check_scratch_fs fails to create hfsplus-tmp device because
> $SCRATCH_DEV may still be mounted.
I didn't realize $SCRATCH_DEV could still be mounted, sorry. Maybe I can
unmount it before _dmsetup_create(), and remount after _dmsetup_remove()?
Like _check_generic_filesystem() does. Or would that bring other problems?
I know it's ugly, but one test that uses _scratch_mkfs_sized() has helped
me find a number of bugs already. It would be really useful to get it to
work.
Thanks,
Ernest
>
> Otherwise this patch looks fine to me.
>
> Thanks,
> Eryu
>
> >
> > Signed-off-by: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
> > ---
> > I've been using this to test hfsplus patches. If there's a better way
> > please let me know.
> >
> > common/config | 7 +++++++
> > common/rc | 38 +++++++++++++++++++++++++++++++++++++-
> > 2 files changed, 44 insertions(+), 1 deletion(-)
> >
> > diff --git a/common/config b/common/config
> > index 2f1f2720..32a1ccb8 100644
> > --- a/common/config
> > +++ b/common/config
> > @@ -229,6 +229,7 @@ case "$HOSTOS" in
> > export MKFS_CIFS_PROG="false"
> > export MKFS_OVERLAY_PROG="false"
> > export MKFS_REISER4_PROG=$(type -P mkfs.reiser4)
> > + export MKFS_HFSPLUS_PROG=$(type -P mkfs.hfsplus)
> > export E2FSCK_PROG=$(type -P e2fsck)
> > export TUNE2FS_PROG=$(type -P tune2fs)
> > export FSCK_OVERLAY_PROG=$(type -P fsck.overlay)
> > @@ -313,6 +314,9 @@ _mount_opts()
> > ubifs)
> > export MOUNT_OPTIONS=$UBIFS_MOUNT_OPTIONS
> > ;;
> > + hfsplus)
> > + export MOUNT_OPTIONS=$HFSPLUS_MOUNT_OPTIONS
> > + ;;
> > *)
> > ;;
> > esac
> > @@ -380,6 +384,9 @@ _mkfs_opts()
> > f2fs)
> > export MKFS_OPTIONS="$F2FS_MKFS_OPTIONS"
> > ;;
> > + hfsplus)
> > + export MKFS_OPTIONS=$HFSPLUS_MKFS_OPTIONS
> > + ;;
> > *)
> > ;;
> > esac
> > diff --git a/common/rc b/common/rc
> > index ec631ad9..38f61944 100644
> > --- a/common/rc
> > +++ b/common/rc
> > @@ -158,6 +158,9 @@ case "$FSTYP" in
> > ubifs)
> > [ "$UBIUPDATEVOL_PROG" = "" ] && _fatal "ubiupdatevol not found"
> > ;;
> > + hfsplus)
> > + [ "$MKFS_HFSPLUS_PROG" = "" ] && _fatal "mkfs.hfsplus not found"
> > + ;;
> > esac
> >
> > if [ ! -z "$REPORT_LIST" ]; then
> > @@ -746,6 +749,12 @@ _scratch_mkfs()
> > mkfs_cmd="yes | $MKFS_PROG -t $FSTYP --"
> > mkfs_filter="grep -v -e ^mkfs\.ocfs2"
> > ;;
> > + hfsplus)
> > + mkfs_cmd="yes | $MKFS_PROG -t $FSTYP --"
> > + mkfs_filter="cat"
> > + # a test may have been interrupted after _scratch_mkfs_sized()
> > + rm -f ${RESULT_DIR}/hfsplus_sectors
> > + ;;
> > *)
> > mkfs_cmd="yes | $MKFS_PROG -t $FSTYP --"
> > mkfs_filter="cat"
> > @@ -995,6 +1004,17 @@ _scratch_mkfs_sized()
> > fi
> > export MOUNT_OPTIONS="-o size=$fssize $TMPFS_MOUNT_OPTIONS"
> > ;;
> > + hfsplus)
> > + # mkfs.hfsplus does not allow setting the size of the filesystem
> > + _require_dm_target linear
> > + local sectors=`expr $fssize / 512`
> > + local table="0 $sectors linear $SCRATCH_DEV 0"
> > + _dmsetup_create hfsplus-tmp --table "$table" || _fatal "dmsetup failed"
> > + ${MKFS_PROG}.$FSTYP $MKFS_OPTIONS -b $blocksize /dev/mapper/hfsplus-tmp
> > + _dmsetup_remove hfsplus-tmp
> > + # remember the true size of the filesystem for fsck.hfsplus
> > + echo -n $sectors > ${RESULT_DIR}/hfsplus_sectors
> > + ;;
> > *)
> > _notrun "Filesystem $FSTYP not supported in _scratch_mkfs_sized"
> > ;;
> > @@ -2661,6 +2681,22 @@ _check_scratch_fs()
> > ubifs)
> > # there is no fsck program for ubifs yet
> > ;;
> > + hfsplus)
> > + # fsck.hfsplus will always assume the filesystem fills the device
> > + if [ -f ${RESULT_DIR}/hfsplus_sectors ]; then
> > + local sectors=`cat ${RESULT_DIR}/hfsplus_sectors`
> > + rm -f ${RESULT_DIR}/hfsplus_sectors
> > + local table="0 $sectors linear $SCRATCH_DEV 0"
> > + _dmsetup_create hfsplus-tmp --table "$table" || \
> > + _fatal "dmsetup failed"
> > + _check_generic_filesystem /dev/mapper/hfsplus-tmp
> > + local fsck_status=$?
> > + _dmsetup_remove hfsplus-tmp
> > + return $fsck_status
> > + else
> > + _check_generic_filesystem $device
> > + fi
> > + ;;
> > *)
> > _check_generic_filesystem $device
> > ;;
> > @@ -3055,7 +3091,7 @@ _require_metadata_journaling()
> > fi
> >
> > case "$FSTYP" in
> > - ext2|vfat|msdos|udf)
> > + ext2|vfat|msdos|udf|hfsplus)
> > _notrun "$FSTYP does not support metadata journaling"
> > ;;
> > ext4)
> > --
> > 2.11.0
> >
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2018-09-03 4:06 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-09-01 2:05 [RFC PATCH] fstests: add support for hfsplus Ernesto A. Fernández
2018-09-01 17:09 ` Eryu Guan
2018-09-02 4:03 ` Ernesto A. Fernández
[not found] ` <4445a65e-42b7-5e2e-36fa-45f116f99f33@sandeen.net>
2018-09-02 14:05 ` Eryu Guan
2018-09-02 23:45 ` Ernesto A. Fernández
2018-09-02 23:49 ` Dave Chinner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox