diff options
author | dillon <dillon@FreeBSD.org> | 2002-07-16 19:43:59 +0000 |
---|---|---|
committer | dillon <dillon@FreeBSD.org> | 2002-07-16 19:43:59 +0000 |
commit | 9d3af4cbd88afdd8a8683d64b06cefeab624eb75 (patch) | |
tree | f86f7011f3bafc935b2ba2b9206cb4c0a0fd1f2e /sys/nfsclient/nfs_bio.c | |
parent | fe71e4fa203fd8c94989894d621d46100b917194 (diff) | |
download | FreeBSD-src-9d3af4cbd88afdd8a8683d64b06cefeab624eb75.zip FreeBSD-src-9d3af4cbd88afdd8a8683d64b06cefeab624eb75.tar.gz |
Fix a bug nfs_write() related to ^C'ing during a file write on an
interruptable mount. We were returning from inside the loop without
releasing the rslock.
Submitted by: Mike Junk <junk@isilon.com>
MFC after: 3 days
Diffstat (limited to 'sys/nfsclient/nfs_bio.c')
-rw-r--r-- | sys/nfsclient/nfs_bio.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/nfsclient/nfs_bio.c b/sys/nfsclient/nfs_bio.c index b8151c3..e244c64 100644 --- a/sys/nfsclient/nfs_bio.c +++ b/sys/nfsclient/nfs_bio.c @@ -930,8 +930,10 @@ again: if (bp->b_dirtyend > 0 && (on > bp->b_dirtyend || (on + n) < bp->b_dirtyoff)) { - if (BUF_WRITE(bp) == EINTR) - return (EINTR); + if (BUF_WRITE(bp) == EINTR) { + error = EINTR; + break; + } goto again; } |