Update a comment in brelse() to match reality.

This commit is contained in:
Scott Long 2017-11-20 20:53:03 +00:00
parent 2b61d29172
commit cab229b2a6

View file

@ -2340,9 +2340,18 @@ brelse(struct buf *bp)
!(bp->b_flags & B_INVAL)) {
/*
* Failed write, redirty. All errors except ENXIO (which
* means the device is gone) are expected to be potentially
* transient - underlying media might work if tried again
* after EIO, and memory might be available after an ENOMEM.
* means the device is gone) are treated as being
* transient.
*
* XXX Treating EIO as transient is not correct; the
* contract with the local storage device drivers is that
* they will only return EIO once the I/O is no longer
* retriable. Network I/O also respects this through the
* guarantees of TCP and/or the internal retries of NFS.
* ENOMEM might be transient, but we also have no way of
* knowing when its ok to retry/reschedule. In general,
* this entire case should be made obsolete through better
* error handling/recovery and resource scheduling.
*
* Do this also for buffers that failed with ENXIO, but have
* non-empty dependencies - the soft updates code might need