|
@@ -464,6 +464,7 @@ struct ceph_osd_request *ceph_osdc_new_request(struct ceph_osd_client *osdc,
|
|
|
{
|
|
|
struct ceph_osd_req_op ops[3];
|
|
|
struct ceph_osd_request *req;
|
|
|
+ int r;
|
|
|
|
|
|
ops[0].op = opcode;
|
|
|
ops[0].extent.truncate_seq = truncate_seq;
|
|
@@ -482,10 +483,12 @@ struct ceph_osd_request *ceph_osdc_new_request(struct ceph_osd_client *osdc,
|
|
|
use_mempool,
|
|
|
GFP_NOFS, NULL, NULL);
|
|
|
if (!req)
|
|
|
- return NULL;
|
|
|
+ return ERR_PTR(-ENOMEM);
|
|
|
|
|
|
/* calculate max write size */
|
|
|
- calc_layout(osdc, vino, layout, off, plen, req, ops);
|
|
|
+ r = calc_layout(osdc, vino, layout, off, plen, req, ops);
|
|
|
+ if (r < 0)
|
|
|
+ return ERR_PTR(r);
|
|
|
req->r_file_layout = *layout; /* keep a copy */
|
|
|
|
|
|
/* in case it differs from natural (file) alignment that
|
|
@@ -1928,8 +1931,8 @@ int ceph_osdc_readpages(struct ceph_osd_client *osdc,
|
|
|
CEPH_OSD_OP_READ, CEPH_OSD_FLAG_READ,
|
|
|
NULL, 0, truncate_seq, truncate_size, NULL,
|
|
|
false, 1, page_align);
|
|
|
- if (!req)
|
|
|
- return -ENOMEM;
|
|
|
+ if (IS_ERR(req))
|
|
|
+ return PTR_ERR(req);
|
|
|
|
|
|
/* it may be a short read due to an object boundary */
|
|
|
req->r_pages = pages;
|
|
@@ -1971,8 +1974,8 @@ int ceph_osdc_writepages(struct ceph_osd_client *osdc, struct ceph_vino vino,
|
|
|
snapc, do_sync,
|
|
|
truncate_seq, truncate_size, mtime,
|
|
|
nofail, 1, page_align);
|
|
|
- if (!req)
|
|
|
- return -ENOMEM;
|
|
|
+ if (IS_ERR(req))
|
|
|
+ return PTR_ERR(req);
|
|
|
|
|
|
/* it may be a short write due to an object boundary */
|
|
|
req->r_pages = pages;
|