Re: [PATCH RFC v2 for-6.8/block 15/18] buffer: add a new helper to read sb block

Jan Kara
2023-12-12T14:11:13Z

On Tue 12-12-23 05:25:25, Christoph Hellwig wrote:
> On Mon, Dec 11, 2023 at 10:07:53PM +0800, Yu Kuai wrote:
> > +static __always_inline int buffer_uptodate_or_error(struct buffer_head *bh)
> > +{
> > + /*
> > + * If the buffer has the write error flag, data was failed to write
> > + * out in the block. In this case, set buffer uptodate to prevent
> > + * reading old data.
> > + */
> > + if (buffer_write_io_error(bh))
> > + set_buffer_uptodate(bh);
> > + return buffer_uptodate(bh);
> > +}
>
> So - risking this blows up into a lot of nasty work: Why do we even
> clear the uptodate flag on write errors? Doing so makes not sense to
> me as the data isn't any less uptodate just because we failed to write
> it..

Historic reasons I'd say (buffer_write_io_error isn't *that* old - from
2003 it seems). And yes, it would make a lot of sense to keep uptodate flag
set and just rely on buffer_write_io_error() but it also means going
through all buffer_uptodate() checks in filesystems and determining which
need changing to buffer_write_io_error() which is something nobody is keen
on doing ;)

Honza

--
Jan Kara <jack@suse.com>
SUSE Labs, CR