diff options
author | jhb <jhb@FreeBSD.org> | 2009-06-12 21:19:57 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2009-06-12 21:19:57 +0000 |
commit | 01a6f1d14b53778dbb31fdecbfa8f690fca99973 (patch) | |
tree | ed160435387e96a7e199a1f319cc353ea227d151 /sys/fs/cd9660 | |
parent | 6d318791b0f30e23d590ddddbf610f774c8e04ae (diff) | |
download | FreeBSD-src-01a6f1d14b53778dbb31fdecbfa8f690fca99973.zip FreeBSD-src-01a6f1d14b53778dbb31fdecbfa8f690fca99973.tar.gz |
Update the inline version of vn_get_ino() for ".." lookups to match the
recentish changes to vn_get_ino().
MFC after: 1 week
Diffstat (limited to 'sys/fs/cd9660')
-rw-r--r-- | sys/fs/cd9660/cd9660_lookup.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/sys/fs/cd9660/cd9660_lookup.c b/sys/fs/cd9660/cd9660_lookup.c index ae6d3f8..e23d8f3 100644 --- a/sys/fs/cd9660/cd9660_lookup.c +++ b/sys/fs/cd9660/cd9660_lookup.c @@ -374,15 +374,17 @@ found: */ mp = pdp->v_mount; ltype = VOP_ISLOCKED(pdp); - for (;;) { - error = vfs_busy(mp, MBF_NOWAIT); - if (error == 0) - break; + error = vfs_busy(mp, MBF_NOWAIT); + if (error != 0) { VOP_UNLOCK(pdp, 0); - pause("vn_vget", 1); + error = vfs_busy(mp, 0); vn_lock(pdp, ltype | LK_RETRY); - if (pdp->v_iflag & VI_DOOMED) + if (error) + return (ENOENT); + if (pdp->v_iflag & VI_DOOMED) { + vfs_unbusy(mp); return (ENOENT); + } } VOP_UNLOCK(pdp, 0); error = cd9660_vget_internal(vdp->v_mount, i_ino, |