[PATCH] Set the DE_UPDATE flag on the directory node on msdosfs
Kevin Lo
kevlo at kevlo.org
Fri Jun 3 13:00:26 UTC 2011
Kostik Belousov wrote:
> On Fri, Jun 03, 2011 at 06:25:07PM +1000, Bruce Evans wrote:
> > On Fri, 3 Jun 2011, Kevin Lo wrote:
> >
> > >Kevin Lo wrote:
> > >>If you try to NFS export a fat32 formatted external usb devices,
> > >>you'll notice if a new file is created, you won't see that file
> > >>on the NFS client. The reason is msdosfs(5) doesn't change the
> > >>modify time of the directory when an entry is created.
> > >>
> > >>Attached is a patch against HEAD that sets DE_UPDATE on the
> > >>directory node in both createde() and removede().
> > >>Please test it, thanks.
> >
> > It breaks compatibility with MSDOS and Windows.
> >
> > No correct fix is evident. ffs maintains the generation count va_filerev
> > which should help, but:
> > - ffs only increments it when a file mtime is updated.
> > - msdosfs doesn't properly maintain it (it initializes to a non-random
> > number related to the current time when the vnode is initialized, but
> > never increments it).
> > - the old nfs client doesn't use it
> > - the new nfs client does use it for v4. I don't know if this use is
> > sufficient (it has to get it from the server to work for this).
> It seems that reporter forgot to mention this, but the problem was
> reported for the _linux_ NFS client mounting FAT share from the FreeBSD
> server.
Thank kib@ for pointing that out. Yes, the NFS clients running on Linux.
I looked at the Darwin's msdosfs:
http://opensource.apple.com/source/msdosfs/msdosfs-48/msdosfs.kextproj/msdosfs.kmodproj/msdosfs_lookup.c
It seems the DE_UPDATE flag is also set in createde() and removede().
Kevin
More information about the freebsd-fs
mailing list