Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 04 Dec 2006 10:37:37 +0100
From:      Rene Ladan <r.c.ladan@gmail.com>
To:        Bruce Evans <bde@zeta.org.au>
Cc:        freebsd-bugs@FreeBSD.org, freebsd-gnats-submit@FreeBSD.org
Subject:   Re: kern/106255: [msdosfs] : correct setting of archive flag
Message-ID:  <4573EC61.2000304@gmail.com>
In-Reply-To: <20061204110256.V24317@delplex.bde.org>
References:  <200612031104.kB3B4jcS098474@www.freebsd.org> <20061204110256.V24317@delplex.bde.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4573EC61.2000304>