Date: Mon, 4 Dec 2006 11:39:32 +1100 (EST) From: Bruce Evans <bde@zeta.org.au> To: Rene Ladan <r.c.ladan@gmail.com> Cc: freebsd-bugs@FreeBSD.org, freebsd-gnats-submit@FreeBSD.org Subject: Re: kern/106255: [msdosfs] : correct setting of archive flag Message-ID: <20061204110256.V24317@delplex.bde.org> In-Reply-To: <200612031104.kB3B4jcS098474@www.freebsd.org> References: <200612031104.kB3B4jcS098474@www.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 3 Dec 2006, Rene Ladan wrote: >> Description: > The MSDOS file system has an archive bit in the flags field. This bit roughly corresponds to the archive flag on the UFS file system. However, it is set the wrong way around: the flag should be set when the bit is present, and cleared when the bit is absent. The comment in msdosfs/direntry.h says that ATTR_ARCHIVE means that the file is new or modified (in other words, not archived), while the comment in sys/stat.h says that SF_ARCHIVED means that the file is archived, but I think both mean that it is archived. > --- msdosfs_vnops.c Mon Nov 6 14:41:57 2006 > +++ msdosfs_vnops.c.rene Sun Dec 3 11:58:47 2006 > @@ -352,7 +352,7 @@ > vap->va_ctime = vap->va_mtime; > } > vap->va_flags = 0; > - if ((dep->de_Attributes & ATTR_ARCHIVE) == 0) > + if (dep->de_Attributes & ATTR_ARCHIVE) > vap->va_flags |= SF_ARCHIVED; > vap->va_gen = 0; > vap->va_blocksize = pmp->pm_bpcluster; This only fixes the reporting of the flag. msdosfs still maintains the flag perfectly backwards (except DETIMES() is missing setting of it for for all changes -- I think all changes to metadata except possibly to atimes should set it to be perfectly backwards and clear it to be correct). Grep shows that this flag is negatively useful in FreeBSD. No file systems maintain it (except for getting it backwards in msdosfs). All archiving utilities need to maintain it for it to be useful, but none except tar even reference it (except possibly indirectly via strtofflags(3)), and tar seems to just print it (indirectly via a special version of strtofflags(3)). Bruce
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20061204110256.V24317>