Re: [PATCH v22 25/31] zonefs: Provide a splice-read wrapper

From: David Howells
Date: Tue May 23 2023 - 16:44:25 EST


Damien Le Moal <dlemoal@xxxxxxxxxx> wrote:

> > + if (len > 0) {
> > + ret = filemap_splice_read(in, ppos, pipe, len, flags);
> > + if (ret == -EIO)
>
> Is -EIO the only error that filemap_splice_read() may return ? There are other
> IO error codes that we could get from the block layer, e.g. -ETIMEDOUT etc. So
> "if (ret < 0)" may be better here ?

It can return -ENOMEM, -EINTR and -EAGAIN at least, none of which really count
as I/O errors. I based the splice function on what zonefs_file_read_iter()
does:

} else {
ret = generic_file_read_iter(iocb, to);
if (ret == -EIO)
zonefs_io_error(inode, false);
}

David