Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 23 Aug 2011 10:10:50 +0000 (UTC)
From:      Vadim Goncharov <vadim_nuclight@mail.ru>
To:        freebsd-fs@freebsd.org
Subject:   Re: touch(1) not working on directories in an msdosfs(5) envirement
Message-ID:  <slrnj56v5a.30vs.vadim_nuclight@kernblitz.nuclight.avtf.net>
References:  <slrnj4tnr9.2di5.vadim_nuclight@kernblitz.nuclight.avtf.net> <1303085986.99226.1313794735324.JavaMail.root@erie.cs.uoguelph.ca>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi Rick Macklem! 

On Fri, 19 Aug 2011 18:58:55 -0400 (EDT); Rick Macklem wrote about 'Re: touch(1) not working on directories in an msdosfs(5) envirement':

>>> Yes, FAT file systems do not maintain a directory modify
>>> time. (The original FAT12,16 structure didn't even have a
>>> modify time for the root dir.)
>> 
>>> Just like Windows.
>> 
>>> This causes issues when a FAT fs is exported via NFS and
>>> someone was going to experiment with an "in memory only"
>>> modify time for dirs, to minimize caching issues, but I
>>> haven't heard back from them lately.
>> 
>>> Apparently Mac OS X chooses to update the modify time that
>>> exists on FAT32 file systems, but that isn't Windows compatible.
>> 
>> What? I've just now created a test directory and changed it's modify
>> time
>> in Far Manager on Windows 2000, in a FAT32 partition. In fact it
>> allows to
>> change all three directory times, creation and access, too. So, I
>> conclude,
>> the FAT supports it.
>> 
> Well, FAT32 (not the root dir of FAT12 or FAT16) does have a modify
> time stored on disk for the directory entry for a directory.

> The case I was thinking of (because that was what affected NFS client
> caching) was the case where an entry is added to a directory. I just
> checked that and it does not change the directory's modify time when
> an entry is added to a directory (at least for Windows7 personal...).

> I'm not enough of a Windows guy to even know what "Far Manager" is,
> but I'm not surprised that there is a tool that can change it.

That's a plugin-enabled console file two-panel file manager, of which,
um, the Midnight Commander is just a cheap unperful buggy clone :-)

But even this does not preserve directory times when directory trees are
copied, yes. It just has a separate dialog to modify all file's attributes
and times. I had to write a small Delphi program several years ago to make
copying directory times from tree to tree.

> msdosfs_setattr() in sys/fs/msdosfs/msdosfs_vnops.c definitely only
> does it for non-directories:
> 		if (vp->v_type != VDIR) {
> 			if ((pmp->pm_flags & MSDOSFSMNT_NOWIN95) == 0 &&
> 			    vap->va_atime.tv_sec != VNOVAL) {
> 				dep->de_flag &= ~DE_ACCESS;
> 				timespec2fattime(&vap->va_atime, 0,
> 				    &dep->de_ADate, NULL, NULL);
> 			}
> 			if (vap->va_mtime.tv_sec != VNOVAL) {
> 				dep->de_flag &= ~DE_UPDATE;
> 				timespec2fattime(&vap->va_mtime, 0,
> 				    &dep->de_MDate, &dep->de_MTime, NULL);
> 			}
> 			dep->de_Attributes |= ATTR_ARCHIVE;
> 			dep->de_flag |= DE_MODIFIED;
> 		}

> I'm not the author of the above, but I had assumed that it was
> because Windows doesn't normally update it. Obviously, the above
> code could easily be changed (although I haven't tested that), if
> that is now considered correct behaviour. (It might have been
> because the msdosfs is meant to work for all FAT variants.)

I don't know about other variants, nowhere to check :-) And Windows
doesn't, yes. Windows lacks many standard tools and actions which are
supported by API, though.

-- 
WBR, Vadim Goncharov. ICQ#166852181       mailto:vadim_nuclight@mail.ru
[Anti-Greenpeace][Sober FreeBSD zealot][http://nuclight.livejournal.com]




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?slrnj56v5a.30vs.vadim_nuclight>