diff options
author | ps <ps@FreeBSD.org> | 2005-11-21 19:23:46 +0000 |
---|---|---|
committer | ps <ps@FreeBSD.org> | 2005-11-21 19:23:46 +0000 |
commit | 6364b280f8c021890b7197124558e6b448888c03 (patch) | |
tree | 6ba2c8e7d1aaff8621b20d87076ec42196255126 /sys/nfsclient/nfs_bio.c | |
parent | 6b40ef55c34c5b06f335f63f127ff9eeccd79de1 (diff) | |
download | FreeBSD-src-6364b280f8c021890b7197124558e6b448888c03.zip FreeBSD-src-6364b280f8c021890b7197124558e6b448888c03.tar.gz |
- Always return success from NFS strategy. nfs_doio(), in the
event of an error, does the right thing, in terms of setting
the error flags in the buf header. That fixes a crash from
bstrategy().
- Treat ETIMEDOUT as a "recoverable" error, causing the buffer
to be re-dirtied. ETIMEDOUT can occur on soft mounts, when
the number of retries are exceeded, and we don't want data loss
in that case.
Submitted by: Mohan Srinivasan
Diffstat (limited to 'sys/nfsclient/nfs_bio.c')
-rw-r--r-- | sys/nfsclient/nfs_bio.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/nfsclient/nfs_bio.c b/sys/nfsclient/nfs_bio.c index 3018dda..896bb17 100644 --- a/sys/nfsclient/nfs_bio.c +++ b/sys/nfsclient/nfs_bio.c @@ -1605,7 +1605,7 @@ nfs_doio(struct vnode *vp, struct buf *bp, struct ucred *cr, struct thread *td) * bp in this case is not an NFS cache block so we should * be safe. XXX */ - if (error == EINTR || error == EIO + if (error == EINTR || error == EIO || error == ETIMEDOUT || (!error && (bp->b_flags & B_NEEDCOMMIT))) { int s; |