kern/106255: [msdosfs] : correct setting of archive flag

Rene Ladan r.c.ladan at gmail.com
Mon Dec 4 01:37:42 PST 2006


Bruce Evans schreef:
> 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.
> 
Indeed, the MSDOS archive bit means that the user should archive the file.

>> --- 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).
> 
Thanks, I'll look into that.

> 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)).
>
That's up to the utilities.

> Bruce
> 

Regards,
Rene
-- 
GPG fingerprint = E738 5471 D185 7013 0EE0  4FC8 3C1D 6F83 12E1 84F6
(subkeys.pgp.net)

"It won't fit on the line."
		-- me, 2001



More information about the freebsd-bugs mailing list