Does the following help if added to the previous patch?
diff --git a/fs/netfs/io.c b/fs/netfs/io.c index c93851b98368..9536b2904863 100644 --- a/fs/netfs/io.c +++ b/fs/netfs/io.c @@ -458,7 +458,8 @@ netfs_rreq_prepare_read(struct netfs_io_request *rreq, if (subreq->len > ictx->zero_point - subreq->start) subreq->len = ictx->zero_point - subreq->start; } - if (subreq->len > rreq->i_size - subreq->start) + if (rreq->origin != NETFS_DIO_READ && + subreq->len > rreq->i_size - subreq->start) subreq->len = rreq->i_size - subreq->start; if (rreq->rsize && subreq->len > rreq->rsize) subreq->len = rreq->rsize; @@ -595,9 +596,6 @@ int netfs_begin_read(struct netfs_io_request *rreq, bool sync) do { _debug("submit %llx + %llx >= %llx", rreq->start, rreq->submitted, rreq->i_size); - if (rreq->origin == NETFS_DIO_READ && - rreq->start + rreq->submitted >= rreq->i_size) - break; if (!netfs_rreq_submit_slice(rreq, &io_iter)) break; if (test_bit(NETFS_RREQ_BLOCKED, &rreq->flags) &&
Does the following help if added to the previous patch?
diff --git a/fs/netfs/io.c b/fs/netfs/io.c .9536b2904863 100644 prepare_ read(struct netfs_io_request *rreq, read(struct netfs_io_request *rreq, bool sync)
rreq- >start, rreq->submitted, rreq->i_size); rreq_submit_ slice(rreq, &io_iter)) NETFS_RREQ_ BLOCKED, &rreq->flags) &&
index c93851b98368.
--- a/fs/netfs/io.c
+++ b/fs/netfs/io.c
@@ -458,7 +458,8 @@ netfs_rreq_
if (subreq->len > ictx->zero_point - subreq->start)
subreq->len = ictx->zero_point - subreq->start;
}
- if (subreq->len > rreq->i_size - subreq->start)
+ if (rreq->origin != NETFS_DIO_READ &&
+ subreq->len > rreq->i_size - subreq->start)
subreq->len = rreq->i_size - subreq->start;
if (rreq->rsize && subreq->len > rreq->rsize)
subreq->len = rreq->rsize;
@@ -595,9 +596,6 @@ int netfs_begin_
do {
_debug("submit %llx + %llx >= %llx",
- if (rreq->origin == NETFS_DIO_READ &&
- rreq->start + rreq->submitted >= rreq->i_size)
- break;
if (!netfs_
break;
if (test_bit(