Date: Wed, 27 Dec 2006 12:00:49 GMT From: Kostik Belousov <kostikbel@gmail.com> To: freebsd-bugs@FreeBSD.org Subject: Re: kern/92785: Using exported filesystem on OS/2 NFS client causes filesystem freeze Message-ID: <200612271200.kBRC0nNX030816@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/92785; it has been noted by GNATS. From: Kostik Belousov <kostikbel@gmail.com> To: Ulrich Spoerlein <uspoerlein@gmail.com> Cc: bug-followup@freebsd.org, Bruce Evans <bde@zeta.org.au> Subject: Re: kern/92785: Using exported filesystem on OS/2 NFS client causes filesystem freeze Date: Wed, 27 Dec 2006 12:59:40 +0200 --0aF+6pWUK5w8WdCh Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, Dec 27, 2006 at 11:43:36AM +0100, Ulrich Spoerlein wrote: > While the patch for UFS seems to quiesce the lock-leak in nfsd I now > exported a FAT32 filesystem. All Linux clients can access the export > just fine, mounting it from OS/2 will result in the following panic, > after issuing a 'dir' in the mounted drive. The dir-command will print > the first line (the "."-DIR) and when trying to look up ".." the nfs > server paniced. >=20 > panic: lockmgr: locking against myself I did not read the code thoroughly, and I prefer not to touch msdosfs. But, anyway, try this: Index: sys/fs/msdosfs/msdosfs_lookup.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /usr/local/arch/ncvs/src/sys/fs/msdosfs/msdosfs_lookup.c,v retrieving revision 1.47 diff -u -r1.47 msdosfs_lookup.c --- sys/fs/msdosfs/msdosfs_lookup.c 22 Jan 2006 21:09:38 -0000 1.47 +++ sys/fs/msdosfs/msdosfs_lookup.c 27 Dec 2006 10:59:17 -0000 @@ -520,16 +520,16 @@ * that point backwards in the directory structure. */ pdp =3D vdp; - if (flags & ISDOTDOT) { + if (dp->de_StartCluster =3D=3D scn && isadir) { + VREF(vdp); /* we want ourself, ie "." */ + *vpp =3D vdp; + } else if (flags & ISDOTDOT) { VOP_UNLOCK(pdp, 0, td); error =3D deget(pmp, cluster, blkoff, &tdp); vn_lock(pdp, LK_EXCLUSIVE | LK_RETRY, td);=20 if (error) return (error); *vpp =3D DETOV(tdp); - } else if (dp->de_StartCluster =3D=3D scn && isadir) { - VREF(vdp); /* we want ourself, ie "." */ - *vpp =3D vdp; } else { if ((error =3D deget(pmp, cluster, blkoff, &tdp)) !=3D 0) return (error); --0aF+6pWUK5w8WdCh Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (FreeBSD) iD8DBQFFklIcC3+MBN1Mb4gRAlT9AJ0b8N2DP+GPnC6r8s1Kbsq7pvDDpACgiD8g 38i7NiuxiHwlsG+7Olp9wCo= =FMmX -----END PGP SIGNATURE----- --0aF+6pWUK5w8WdCh--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200612271200.kBRC0nNX030816>