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>