diff options
author | dg <dg@FreeBSD.org> | 1995-02-03 03:40:08 +0000 |
---|---|---|
committer | dg <dg@FreeBSD.org> | 1995-02-03 03:40:08 +0000 |
commit | 667f316f4a517bd602828802083c376fd1bbac5f (patch) | |
tree | 89b3d5a71157f17ab43b878636d9d3db9f1f9ade | |
parent | 5644378de909d44c68cbaf22fdf7fffdc8190553 (diff) | |
download | FreeBSD-src-667f316f4a517bd602828802083c376fd1bbac5f.zip FreeBSD-src-667f316f4a517bd602828802083c376fd1bbac5f.tar.gz |
Removed a pile of vfs_unbusy_pages()...both unnecessary and wrong - resulted
in serious system instability. Changed a B_INVAL to a B_NOCACHE so that
buffer data is properly disposed of.
Submitted by: John Dyson, Rick Macklin, and ohki@gssm.otsuka.tsukuba.ac.jp
-rw-r--r-- | sys/nfs/nfs_bio.c | 9 | ||||
-rw-r--r-- | sys/nfsclient/nfs_bio.c | 9 |
2 files changed, 6 insertions, 12 deletions
diff --git a/sys/nfs/nfs_bio.c b/sys/nfs/nfs_bio.c index b1430dc..f8b77f9 100644 --- a/sys/nfs/nfs_bio.c +++ b/sys/nfs/nfs_bio.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * @(#)nfs_bio.c 8.5 (Berkeley) 1/4/94 - * $Id: nfs_bio.c,v 1.8 1995/01/09 16:05:05 davidg Exp $ + * $Id: nfs_bio.c,v 1.9 1995/01/10 13:06:51 davidg Exp $ */ #include <sys/param.h> @@ -249,7 +249,6 @@ again: vfs_busy_pages(bp, 0); error = nfs_doio(bp, cred, p); if (error) { - vfs_unbusy_pages(bp); brelse(bp); return (error); } @@ -267,7 +266,7 @@ again: return (EINTR); got_buf = 1; } - bp->b_flags |= B_INVAL; + bp->b_flags |= B_NOCACHE; if (bp->b_dirtyend > 0) { if ((bp->b_flags & B_DELWRI) == 0) panic("nfsbioread"); @@ -293,7 +292,6 @@ again: vfs_busy_pages(bp, 0); error = nfs_doio(bp, cred, p); if (error) { - vfs_unbusy_pages(bp); bp->b_flags |= B_ERROR; brelse(bp); return (error); @@ -315,7 +313,6 @@ again: vfs_busy_pages(bp, 0); error = nfs_doio(bp, cred, p); if (error) { - vfs_unbusy_pages(bp); bp->b_flags |= B_ERROR; brelse(bp); return (error); @@ -337,8 +334,8 @@ again: rabp->b_flags |= (B_READ | B_ASYNC); vfs_busy_pages(rabp, 0); if (nfs_asyncio(rabp, cred)) { - vfs_unbusy_pages(rabp); rabp->b_flags |= B_INVAL|B_ERROR; + vfs_unbusy_pages(rabp); brelse(rabp); } } else { diff --git a/sys/nfsclient/nfs_bio.c b/sys/nfsclient/nfs_bio.c index b1430dc..f8b77f9 100644 --- a/sys/nfsclient/nfs_bio.c +++ b/sys/nfsclient/nfs_bio.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * @(#)nfs_bio.c 8.5 (Berkeley) 1/4/94 - * $Id: nfs_bio.c,v 1.8 1995/01/09 16:05:05 davidg Exp $ + * $Id: nfs_bio.c,v 1.9 1995/01/10 13:06:51 davidg Exp $ */ #include <sys/param.h> @@ -249,7 +249,6 @@ again: vfs_busy_pages(bp, 0); error = nfs_doio(bp, cred, p); if (error) { - vfs_unbusy_pages(bp); brelse(bp); return (error); } @@ -267,7 +266,7 @@ again: return (EINTR); got_buf = 1; } - bp->b_flags |= B_INVAL; + bp->b_flags |= B_NOCACHE; if (bp->b_dirtyend > 0) { if ((bp->b_flags & B_DELWRI) == 0) panic("nfsbioread"); @@ -293,7 +292,6 @@ again: vfs_busy_pages(bp, 0); error = nfs_doio(bp, cred, p); if (error) { - vfs_unbusy_pages(bp); bp->b_flags |= B_ERROR; brelse(bp); return (error); @@ -315,7 +313,6 @@ again: vfs_busy_pages(bp, 0); error = nfs_doio(bp, cred, p); if (error) { - vfs_unbusy_pages(bp); bp->b_flags |= B_ERROR; brelse(bp); return (error); @@ -337,8 +334,8 @@ again: rabp->b_flags |= (B_READ | B_ASYNC); vfs_busy_pages(rabp, 0); if (nfs_asyncio(rabp, cred)) { - vfs_unbusy_pages(rabp); rabp->b_flags |= B_INVAL|B_ERROR; + vfs_unbusy_pages(rabp); brelse(rabp); } } else { |