Date: Wed, 08 Oct 2014 14:52:25 +0000 From: bugzilla-noreply@freebsd.org To: freebsd-bugs@FreeBSD.org Subject: [Bug 186293] tar(1): Problems with tar on FreeBSD 10.0 Message-ID: <bug-186293-8-tyQmPup84p@https.bugs.freebsd.org/bugzilla/> In-Reply-To: <bug-186293-8@https.bugs.freebsd.org/bugzilla/> References: <bug-186293-8@https.bugs.freebsd.org/bugzilla/>
next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=186293 --- Comment #8 from jnaughto@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.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-186293-8-tyQmPup84p>