[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