Bug #47998 » 0001-ceph-hold-a-reference-to-an-inode-for-readahead-requ.patch
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.
|