https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=186293

--- Comment #8 from jnaug...@ee.ryerson.ca ---
Now the somewhat good news.    So after getting the SR report back from Oracle
I started to dive into the FreeBSD NFS client code.   So this is what I
modified and how I got the issue (which seems to be) resolved.

On my FreeBSD 10 station:

# uname -a
FreeBSD NFSCLIENT 10.1-BETA1 FreeBSD 10.1-BETA1 #4 r271672M: Tue Oct  7
16:52:00 EDT 2014     NFSCLIENT:/usr/obj/usr/src/sys/GENERIC  amd64


I edited the files: nfs_subs.c

NFSCLIENT:/usr/src/sys/nfsclient # ls
nfs.h           nfs_krpc.c      nfs_subs.c      nfsargs.h       nfsnode.h
nfs_bio.c       nfs_nfsiod.c    nfs_vfsops.c    nfsm_subs.h     nfsstats.h
nfs_kdtrace.c   nfs_node.c      nfs_vnops.c     nfsmount.h      nlminfo.h

I commented out the following lines in this file

        if (va->va_atime.tv_sec != VNOVAL) {
//              if ((va->va_vaflags & VA_UTIMES_NULL) == 0) {
//                      tl = nfsm_build_xx(3 * NFSX_UNSIGNED, mb, bpos);
//                      *tl++ = txdr_unsigned(NFSV3SATTRTIME_TOCLIENT);
//                      txdr_nfsv3time(&va->va_atime, tl);
//              } else {
                        tl = nfsm_build_xx(NFSX_UNSIGNED, mb, bpos);
                        *tl = txdr_unsigned(NFSV3SATTRTIME_TOSERVER);
//              }

I also blocked out the following:

//              if ((va->va_vaflags & VA_UTIMES_NULL) == 0) {
//                      tl = nfsm_build_xx(3 * NFSX_UNSIGNED, mb, bpos);
//                      *tl++ = txdr_unsigned(NFSV3SATTRTIME_TOCLIENT);
//                      txdr_nfsv3time(&va->va_mtime, tl);
//              } else {
                        tl = nfsm_build_xx(NFSX_UNSIGNED, mb, bpos);
                        *tl = txdr_unsigned(NFSV3SATTRTIME_TOSERVER);
//              }

How I read this is if the vaflags are set to NULL then let the NFS server set
the atime and mtime based on the server's Clock.  We're not done yet.  To use
this code you also seem to have to mount the filesystem with the "oldnfs" flag.
 For example in my /etc/fstab I have:

NFSSERVER:/var/mnt              /mnt             oldnfs    rw,soft  0 0

Now once I re-compiled the FreeBSD kernel to take the above changes into
account and of course mount the filesystem with the "oldnfs" flags in place the
problems (for what I see) went away.   For example:

NFSCLIENT:/# mount /mnt
NFSCLIENT:/# mount
NFSSERVER:/var/mnt on /mnt (oldnfs)

NFSCLIENT:/# cd /mnt
NFSCLIENT:/mnt# tar xf ~user/foo.tar

Now foo.tar has only one file in it BOB which has perms of 0644.  Now doing a
directory listing:

# ls -l
NFSCLIENT:/mnt # ls -l
total 1
-rw-r--r--  1 user  group  0 Oct  8 10:28 BOB

So far so good.   Now this seems to resolve my problem right now but I'm not
sure whether or not this is going to open up other problems in the future.

-- 
You are receiving this mail because:
You are the assignee for the bug.
_______________________________________________
freebsd-bugs@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"

Reply via email to