Date: Tue, 6 Jan 2026 20:47:45 -0300 From: Jose Luis Duran <jlduran@freebsd.org> To: Xin LI <delphij@gmail.com> Cc: Gleb Smirnoff <glebius@freebsd.org>, current@freebsd.org, christos@netbsd.org, Ngie Cooper <ngie@freebsd.org> Subject: Re: mtree(1) recent POLA violation Message-ID: <CAPwQLcdt%2BKgOygDVrBwuBvv_3U=7xLdU2g6ooc2zrj0OyJfaoQ@mail.gmail.com> In-Reply-To: <CAGMYy3vJ9jvkRSdWCWc4d4B5ToyoBUO1cRQXfRLKVwTYGQokBA@mail.gmail.com> References: <aV2OtWy0JknNGC1b@cell.glebi.us> <CAPwQLcen1C4YH6nBdsip8dzme3bQHVVLJ%2BkgdtJK83ffRjA0sg@mail.gmail.com> <CAGMYy3vJ9jvkRSdWCWc4d4B5ToyoBUO1cRQXfRLKVwTYGQokBA@mail.gmail.com>
index | next in thread | previous in thread | raw e-mail
On Tue, Jan 6, 2026 at 8:37 PM Xin LI <delphij@gmail.com> wrote: > > (Adding ngie@ who reported PR 219467 and Christos for visibility) > > On Tue, Jan 6, 2026 at 3:05 PM Jose Luis Duran <jlduran@freebsd.org> wrote: >> >> On Tue, Jan 6, 2026 at 7:37 PM Gleb Smirnoff <glebius@freebsd.org> wrote: >> > >> > Hi, >> > >> > the recent mtree(1) import from NetBSD brought one change, that is a POLA >> > violation and I would also question if the new behavior is desired. >> >> The change stems from: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=219467 >> >> > Before the import 'mtree -c -R all' would leave 'type=' keywords, despite '-R >> > all' asks for removing all keywords. The 'type=' is special, since this >> > keyword is required to reconstruct a new spec. >> > >> > In other words before the import this was working: >> > >> > mtree -c -R all | mtree -C >> > >> > Now this is broken. The above was standard idiom to compare installed to tree >> > to a specification. Now the correct syntax to get the same behavior is this: >> > >> > mtree -c -k type | mtree -C >> > >> > I'll let other to decide do we want to fix this POLA violation or not. At least >> > this needs to be recorded in Release notes. >> >> Right, according to the manual page: >> >> -k <keywords>: Use the "type" keyword plus the specified (whitespace >> or comma separated) keywords instead of the current set of keywords. >> If "all" is specified, use all of the other keywords. If the "type" >> keyword is not desired, suppress it with "-R type". >> -R <keywords>: Remove the specified (whitespace or comma separated) >> keywords from the current set of keywords. If "all" is specified, >> remove all of the other keywords. >> >> So, the previous behavior was bugged. It now does what it says it should. > > > If we look at when the keyword feature was initially implemented (CSRG r51884, 34 years ago), it's quite clear that "type" was special: F_TYPE is always set regardless of what's specified with '-k' (mtree.c), and in create.c the flag is the only one not being checked. IMHO "type" represents a material difference in a file hierarchy specification, and should always be present for non-plain files. > > It has been there for 34 years and legitimate users evidently rely on this feature and the historical behavior should not be considered a bug. I think we should restore the historical behavior and amend the documentation to reflect it instead. I'm not opposed to reverting it, if we also change (something along the lines): 1. Remove: "If the type keyword is not desired, suppress it with -R type." from the "-k" flag description. 2. Add: "If 'all' is specified, remove all of the other keywords with the exception of 'type'." > Cheers, Regards, -- Jose Luis Duranhome | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAPwQLcdt%2BKgOygDVrBwuBvv_3U=7xLdU2g6ooc2zrj0OyJfaoQ>
