[newnfs/client] SIGINFO aborts transfer and produces `permission
denied'
Rick Macklem
rmacklem at uoguelph.ca
Sat Jul 18 13:32:33 UTC 2009
On Sat, 18 Jul 2009, Anonymous wrote:
>
> Yep, I can reproduce it as easily on 8.0-BETA2 snapshot under qemu
>
> # uname -vm
> FreeBSD 8.0-BETA2 #0: Wed Jul 15 23:25:30 UTC 2009
> root at almeida.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386
>
I'll try to get around to testing it this weekend, but if you'd
like to test the following patch, I think it might fix the problem.
The new krpc only checks NFSMNT_INT at connect and not every rpc.
rick
ps: The line #s assume the other patch you tested is already applied.
--- untested exp. nfs client patch ---
--- fs/nfsclient/nfs_clvfsops.c.sav2 2009-07-18 09:19:07.000000000 -0400
+++ fs/nfsclient/nfs_clvfsops.c 2009-07-18 09:29:14.000000000 -0400
@@ -1037,7 +1037,7 @@
{
struct nfsmount *nmp;
struct nfsnode *np;
- int error, trycnt, ret, clearintr;
+ int error, trycnt, ret;
struct nfsvattr nfsva;
static u_int64_t clval = 0;
@@ -1152,20 +1152,8 @@
nmp->nm_sockreq.nr_vers = NFS_VER2;
- /*
- * For Connection based sockets (TCP,...) do the connect here,
- * but make it interruptible, even for non-interuptible mounts.
- */
- if ((nmp->nm_flag & NFSMNT_INT) == 0) {
- nmp->nm_flag |= NFSMNT_INT;
- clearintr = 1;
- } else {
- clearintr = 0;
- }
if ((error = newnfs_connect(nmp, &nmp->nm_sockreq, cred, td, 0)))
goto bad;
- if (clearintr)
- nmp->nm_flag &= ~NFSMNT_INT;
/*
* A reference count is needed on the nfsnode representing the
More information about the freebsd-current
mailing list