Loading fs/nfs/direct.c +20 −28 Original line number Diff line number Diff line Loading @@ -243,7 +243,6 @@ static void nfs_direct_read_completion(struct nfs_pgio_header *hdr) dreq->count += hdr->good_bytes; spin_unlock(&dreq->lock); if (!test_bit(NFS_IOHDR_ERROR, &hdr->flags)) { while (!list_empty(&hdr->pages)) { struct nfs_page *req = nfs_list_entry(hdr->pages.next); struct page *page = req->wb_page; Loading @@ -256,24 +255,17 @@ static void nfs_direct_read_completion(struct nfs_pgio_header *hdr) hdr->good_bytes & ~PAGE_MASK, PAGE_SIZE); } bytes += req->wb_bytes; nfs_list_remove_request(req); if (!PageCompound(page)) if (!PageCompound(page)) { if (test_bit(NFS_IOHDR_ERROR, &hdr->flags)) { if (bytes < hdr->good_bytes) set_page_dirty(page); } else set_page_dirty(page); nfs_direct_readpage_release(req); } } else { while (!list_empty(&hdr->pages)) { struct nfs_page *req = nfs_list_entry(hdr->pages.next); if (bytes < hdr->good_bytes) if (!PageCompound(req->wb_page)) set_page_dirty(req->wb_page); bytes += req->wb_bytes; nfs_list_remove_request(req); nfs_direct_readpage_release(req); } } out_put: if (put_dreq(dreq)) nfs_direct_complete(dreq); Loading fs/nfs/read.c +18 −26 Original line number Diff line number Diff line Loading @@ -179,7 +179,6 @@ static void nfs_read_completion(struct nfs_pgio_header *hdr) if (test_bit(NFS_IOHDR_REDO, &hdr->flags)) goto out; if (!test_bit(NFS_IOHDR_ERROR, &hdr->flags)) { while (!list_empty(&hdr->pages)) { struct nfs_page *req = nfs_list_entry(hdr->pages.next); struct page *page = req->wb_page; Loading @@ -192,22 +191,15 @@ static void nfs_read_completion(struct nfs_pgio_header *hdr) hdr->good_bytes & ~PAGE_MASK, PAGE_SIZE); } SetPageUptodate(page); nfs_list_remove_request(req); nfs_readpage_release(req); bytes += PAGE_SIZE; } } else { while (!list_empty(&hdr->pages)) { struct nfs_page *req = nfs_list_entry(hdr->pages.next); bytes += req->wb_bytes; if (test_bit(NFS_IOHDR_ERROR, &hdr->flags)) { if (bytes <= hdr->good_bytes) SetPageUptodate(req->wb_page); SetPageUptodate(page); } else SetPageUptodate(page); nfs_list_remove_request(req); nfs_readpage_release(req); } } out: hdr->release(hdr); } Loading Loading
fs/nfs/direct.c +20 −28 Original line number Diff line number Diff line Loading @@ -243,7 +243,6 @@ static void nfs_direct_read_completion(struct nfs_pgio_header *hdr) dreq->count += hdr->good_bytes; spin_unlock(&dreq->lock); if (!test_bit(NFS_IOHDR_ERROR, &hdr->flags)) { while (!list_empty(&hdr->pages)) { struct nfs_page *req = nfs_list_entry(hdr->pages.next); struct page *page = req->wb_page; Loading @@ -256,24 +255,17 @@ static void nfs_direct_read_completion(struct nfs_pgio_header *hdr) hdr->good_bytes & ~PAGE_MASK, PAGE_SIZE); } bytes += req->wb_bytes; nfs_list_remove_request(req); if (!PageCompound(page)) if (!PageCompound(page)) { if (test_bit(NFS_IOHDR_ERROR, &hdr->flags)) { if (bytes < hdr->good_bytes) set_page_dirty(page); } else set_page_dirty(page); nfs_direct_readpage_release(req); } } else { while (!list_empty(&hdr->pages)) { struct nfs_page *req = nfs_list_entry(hdr->pages.next); if (bytes < hdr->good_bytes) if (!PageCompound(req->wb_page)) set_page_dirty(req->wb_page); bytes += req->wb_bytes; nfs_list_remove_request(req); nfs_direct_readpage_release(req); } } out_put: if (put_dreq(dreq)) nfs_direct_complete(dreq); Loading
fs/nfs/read.c +18 −26 Original line number Diff line number Diff line Loading @@ -179,7 +179,6 @@ static void nfs_read_completion(struct nfs_pgio_header *hdr) if (test_bit(NFS_IOHDR_REDO, &hdr->flags)) goto out; if (!test_bit(NFS_IOHDR_ERROR, &hdr->flags)) { while (!list_empty(&hdr->pages)) { struct nfs_page *req = nfs_list_entry(hdr->pages.next); struct page *page = req->wb_page; Loading @@ -192,22 +191,15 @@ static void nfs_read_completion(struct nfs_pgio_header *hdr) hdr->good_bytes & ~PAGE_MASK, PAGE_SIZE); } SetPageUptodate(page); nfs_list_remove_request(req); nfs_readpage_release(req); bytes += PAGE_SIZE; } } else { while (!list_empty(&hdr->pages)) { struct nfs_page *req = nfs_list_entry(hdr->pages.next); bytes += req->wb_bytes; if (test_bit(NFS_IOHDR_ERROR, &hdr->flags)) { if (bytes <= hdr->good_bytes) SetPageUptodate(req->wb_page); SetPageUptodate(page); } else SetPageUptodate(page); nfs_list_remove_request(req); nfs_readpage_release(req); } } out: hdr->release(hdr); } Loading