HomeFreeBSD

buf: Add B_INVALONERR flag to discard data

Description

buf: Add B_INVALONERR flag to discard data

Setting the B_INVALONERR flag before a synchronous write causes the buf
cache to forcibly invalidate contents if the write fails (BIO_ERROR).

This is intended to be used to allow layers above the buffer cache to make
more informed decisions about when discarding dirty buffers without
successful write is acceptable.

As a proof of concept, use in msdosfs to handle failures to mark the on-disk
'dirty' bit during rw mount or ro->rw update.

Extending this to other filesystems is left as future work.

PR: 210316
Reviewed by: kib (with objections)
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D21539

Details

Provenance
cemAuthored on
Reviewer
kib
Differential Revision
D21539: buf: Add bfinval() routine to discard data
Parents
rS352232: MFC r350993, r350997, r351079-r351080, r351082, r351090, r351101-r351102
Branches
Unknown
Tags
Unknown