Project

General

Profile

Bug #47998 » 0001-ceph-hold-a-reference-to-an-inode-for-readahead-requ.patch

RFC patch - Jeff Layton, 11/03/2020 01:51 PM

View differences:

fs/ceph/addr.c
put_page(page);
bytes -= PAGE_SIZE;
}
ceph_async_iput(req->r_inode);
ceph_update_read_latency(&fsc->mdsc->metric, req->r_start_latency,
req->r_end_latency, rc);
......
osd_req_op_extent_osd_data_pages(req, 0, pages, len, 0, false, false);
req->r_callback = finish_read;
req->r_inode = inode;
ihold(inode);
dout("start_read %p starting %p %lld~%lld\n", inode, req, off, len);
ret = ceph_osdc_start_request(osdc, req, false);
if (ret < 0)
if (ret < 0) {
iput(inode);
goto out_pages;
}
ceph_osdc_put_request(req);
/* After adding locked pages to page cache, the inode holds cache cap.
(5-5/6)