Comment 74 for bug 2056461

Revision history for this message
In , dhowells (dhowells-linux-kernel-bugs) wrote :

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) &&