On Thu, Aug 17, 2023 at 10:54 AM Karel Zak <kzak@xxxxxxxxxx> wrote: > > On Thu, Aug 17, 2023 at 10:20:13AM +0100, fdmanana@xxxxxxxxxx wrote: > > A regression was introduced in v2.39 that causes mounting with the atime > > option to fail: > > > > $ mkfs.ext4 -F /dev/sdi > > $ mount -o atime /dev/sdi /mnt/sdi > > mount: /mnt/sdi: not mount point or bad option. > > dmesg(1) may have more information after failed mount system call. > > Great timing! I just released bugfix tarball v2.39.2 a few minutes ago :-) Ahaha yes! I was supposed to send it yesterday, but I had to take some time to figure out where to write a test case, so that's what took most of the time actually :) Thanks. > > > diff --git a/libmount/src/optlist.c b/libmount/src/optlist.c > > index e93810b47..d0afc94f7 100644 > > --- a/libmount/src/optlist.c > > +++ b/libmount/src/optlist.c > > @@ -875,7 +875,18 @@ int mnt_optlist_get_attrs(struct libmnt_optlist *ls, uint64_t *set, uint64_t *cl > > > > if (opt->ent->mask & MNT_INVERT) { > > DBG(OPTLIST, ul_debugobj(ls, " clr: %s", opt->ent->name)); > > - *clr |= x; > > + /* > > + * All atime settings are mutually exclusive so *clr must > > + * have MOUNT_ATTR__ATIME set. > > + * > > + * See the function fs/namespace.c:build_mount_kattr() > > + * in the linux kernel source. > > + */ > > + if (x == MOUNT_ATTR_RELATIME || x == MOUNT_ATTR_NOATIME || > > + x == MOUNT_ATTR_STRICTATIME) > > + *clr |= MOUNT_ATTR__ATIME; > > + else > > + *clr |= x; > > Ah, the libmount code does this, but only when set a new option. This is > missing for inverted options (like atime). > > > +# Test that the atime option works after the migration to use the new kernel mount APIs. > > +ts_run $TESTPROG --mount -o atime $DEVICE $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG > > +$TS_CMD_FINDMNT --kernel --mountpoint $MOUNTPOINT -o VFS-OPTIONS -n >> $TS_OUTPUT 2>> $TS_ERRLOG > > +is_mounted $DEVICE || echo "$DEVICE not mounted" >> $TS_OUTPUT 2>> $TS_ERRLOG > > +ts_run $TESTPROG --umount $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG > > +is_mounted $DEVICE && echo "$DEVICE still mounted" >> $TS_OUTPUT 2>> $TS_ERRLOG > > + > > +ts_finalize_subtest > > Applied, thanks, and extra thanks for the tests! > > Karel > > > -- > Karel Zak <kzak@xxxxxxxxxx> > http://karelzak.blogspot.com >