[LTP] [PATCH 2/2] mount_setattr01: add open_tree_attr variant
Cyril Hrubis
chrubis@suse.cz
Fri Aug 29 11:31:19 CEST 2025
Hi!
> > +static int open_tree_variant1(struct mount_attr *attr)
> > +{
> > + tst_res(TINFO, "Variant using open_tree() + mount_setattr()");
> > +
> > + otfd = TST_EXP_FD(open_tree(AT_FDCWD, MNTPOINT,
> > + AT_EMPTY_PATH | OPEN_TREE_CLONE));
> > + if (otfd == -1)
> > + return -1;
> > +
> > + TST_EXP_PASS(mount_setattr(otfd, "", AT_EMPTY_PATH,
> > + attr, sizeof(*attr)));
> Duplicate mount_setattr? There is another mount_setattr after this
> called.
As far as I can tell the call that was done later has been removed in
this patch. That is because both of the variants do open_tree and
mount_setattr in the open_tree_variant() functions.
> > + if (TST_RET == -1)
> > + return -1;
> > +
> > + return otfd;
> > +}
> > +
> > +static int open_tree_variant2(struct mount_attr *attr)
> > +{
> > + tst_res(TINFO, "Variant using open_tree_attr()");
> > +
> > + otfd = TST_EXP_FD(open_tree_attr(AT_FDCWD, MNTPOINT,
> > + AT_EMPTY_PATH | OPEN_TREE_CLONE,
> > + attr, sizeof(*attr)));
> > +
> > + return otfd;
> > +}
> > +
> > static void run(unsigned int n)
> > {
> > struct tcase *tc = &tcases[n];
> > - struct mount_attr attr = {
> > - .attr_set = tc->mount_attrs,
> > - };
> > struct statvfs buf;
> >
> > - TST_EXP_FD_SILENT(open_tree(AT_FDCWD, MNTPOINT, AT_EMPTY_PATH |
> > - AT_SYMLINK_NOFOLLOW | OPEN_TREE_CLOEXEC | OPEN_TREE_CLONE));
> > - if (!TST_PASS)
> > - return;
> > + memset(attr, 0, sizeof(*attr));
> > + attr->attr_set = tc->mount_attrs;
> >
> > - otfd = (int)TST_RET;
> > + if (tst_variant)
> > + otfd = open_tree_variant1(attr);
> > + else
> > + otfd = open_tree_variant2(attr);
> I am not sure this is perfect way loop the function, add function point into struct tcase
> is better in my opinion.
The tst_variant was implemented exactly for the case where we have
different syscalls doing the same job. In this case a shortcut was added
that does open_tree + mount_setattr in a single syscall, so using
variants is very reasonable choice.
--
Cyril Hrubis
chrubis@suse.cz
More information about the ltp
mailing list