[LTP] [PATCH v2 1/2] OVL_MNT: add setup_overlay helper
Murphy Zhou
xzhou@redhat.com
Fri May 24 15:36:13 CEST 2019
Hi Petr,
On Fri, May 24, 2019 at 10:54:52AM +0200, Petr Vorel wrote:
> Hi Murphy,
>
> > > > + ret = mount("overlay", OVL_MNT, "overlay", 0, "lowerdir="OVL_LOWER
> > > > + ",upperdir="OVL_UPPER",workdir="OVL_WORK);
> > > > + if (ret < 0) {
> > > > + if (errno == ENODEV) {
> > > > + tst_res(TINFO,
> > > > + "overlayfs is not configured in this kernel.");
> > > > + return 1;
> > > First I thought we'd implement it as a test flag (member of struct tst_test).
> > > When we have it as separate function I wonder whether we could TCONF on ENODEV
> > > instead of TINFO and return. Maybe there could be here for int strict parameter,
>
> > The return value is referenced in the testcase to determine whether to run
> > tests in overlayfs. It's needed.
>
> > If this strict parameter is only for different wording on NODEV. Is it
> > necessary ?
>
> I'll recap my suggestions:
> 1) I like having macros to help reduce some parameters, this does not block
> functions being flexible (which requires parameters).
> 2) Having helper function create_overlay_dirs() used separately, than parameter
> in single function (Amir [1] suggestion makes sense).
>
> Something like this, just a suggestion:
>
> int create_overlay_dirs()
> {
> SAFE_MKDIR(OVL_LOWER, 0755);
> ...
> return ret;
> }
>
> int mount_overlay(const char *file, const int lineno, int safe)
> {
> ...
> if (create_overlay_dirs())
> tst_brk(TCONF, "...");
>
> ret = mount("overlay", OVL_MNT, "overlay", 0, "lowerdir="OVL_LOWER
> ",upperdir="OVL_UPPER",workdir="OVL_WORK);
> if (ret < 0) {
> if (errno == ENODEV) {
> /*
> * TODO: maybe safe is confusing as we use tst_brk(TBROK anyway),
> * + sometimes tst_res(TCONF, ..) would be preferred over
> * tst_brk(TCONF, ...)
> */
> if (safe)
> tst_brk(TCONF,
> "overlayfs is not configured in this kernel.");
> } else {
> tst_res(TINFO,
> "overlayfs is not configured in this kernel.");
> return 1;
> }
> }
> tst_brk(TBROK | TERRNO, "overlayfs mount failed");
Hmm.. This would changed "test logic" in the existing 4 testcases.
Murphy
> }
> }
>
> #define SAFE_MOUNT_OVERLAY() \
> mount_overlay(__FILE__, __LINE__, 1);
>
> #define TST_MOUNT_OVERLAY() \
> mount_overlay(__FILE__, __LINE__, 0);
>
> Kind regards,
> Petr
>
> [1] http://lists.linux.it/pipermail/ltp/2019-May/011983.html
More information about the ltp
mailing list