summaryrefslogtreecommitdiffstats
path: root/drivers/block/rbd.c
diff options
context:
space:
mode:
authorIlya Dryomov <idryomov@gmail.com>2018-02-06 13:26:34 -0500
committerIlya Dryomov <idryomov@gmail.com>2018-04-02 04:12:43 -0400
commit0420c5dd2ef308b69a86b44a217390f5612bab58 (patch)
treee7004e2a96d662bf4f67360a060d90dd0c6d4dfe /drivers/block/rbd.c
parent5a237819aa4e0421a17966e9baf91b9caedaf61d (diff)
rbd: remove rbd_img_request_fill() and helpers
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Diffstat (limited to 'drivers/block/rbd.c')
-rw-r--r--drivers/block/rbd.c98
1 files changed, 0 insertions, 98 deletions
diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
index 24f169f33219..a22d265b30df 100644
--- a/drivers/block/rbd.c
+++ b/drivers/block/rbd.c
@@ -1207,27 +1207,6 @@ static void rbd_dev_mapping_clear(struct rbd_device *rbd_dev)
1207 rbd_dev->mapping.features = 0; 1207 rbd_dev->mapping.features = 0;
1208} 1208}
1209 1209
1210static u64 rbd_segment_offset(struct rbd_device *rbd_dev, u64 offset)
1211{
1212 u64 segment_size = rbd_obj_bytes(&rbd_dev->header);
1213
1214 return offset & (segment_size - 1);
1215}
1216
1217static u64 rbd_segment_length(struct rbd_device *rbd_dev,
1218 u64 offset, u64 length)
1219{
1220 u64 segment_size = rbd_obj_bytes(&rbd_dev->header);
1221
1222 offset &= segment_size - 1;
1223
1224 rbd_assert(length <= U64_MAX - offset);
1225 if (offset + length > segment_size)
1226 length = segment_size - offset;
1227
1228 return length;
1229}
1230
1231static void zero_bvec(struct bio_vec *bv) 1210static void zero_bvec(struct bio_vec *bv)
1232{ 1211{
1233 void *buf; 1212 void *buf;
@@ -1977,83 +1956,6 @@ static int __rbd_img_fill_request(struct rbd_img_request *img_req)
1977 return 0; 1956 return 0;
1978} 1957}
1979 1958
1980/*
1981 * Split up an image request into one or more object requests, each
1982 * to a different object. The "type" parameter indicates whether
1983 * "data_desc" is the pointer to the head of a list of bio
1984 * structures, or the base of a page array. In either case this
1985 * function assumes data_desc describes memory sufficient to hold
1986 * all data described by the image request.
1987 */
1988static int rbd_img_request_fill(struct rbd_img_request *img_request,
1989 enum obj_request_type type,
1990 void *data_desc)
1991{
1992 struct rbd_device *rbd_dev = img_request->rbd_dev;
1993 struct rbd_obj_request *obj_request = NULL;
1994 struct rbd_obj_request *next_obj_request;
1995 struct ceph_bio_iter bio_it;
1996 struct ceph_bvec_iter bvec_it;
1997 u64 img_offset;
1998 u64 resid;
1999
2000 dout("%s: img %p type %d data_desc %p\n", __func__, img_request,
2001 (int)type, data_desc);
2002
2003 img_offset = img_request->offset;
2004 resid = img_request->length;
2005 rbd_assert(resid > 0);
2006
2007 if (type == OBJ_REQUEST_BIO) {
2008 bio_it = *(struct ceph_bio_iter *)data_desc;
2009 rbd_assert(img_offset ==
2010 bio_it.iter.bi_sector << SECTOR_SHIFT);
2011 } else if (type == OBJ_REQUEST_BVECS) {
2012 bvec_it = *(struct ceph_bvec_iter *)data_desc;
2013 }
2014
2015 while (resid) {
2016 u64 object_no = img_offset >> rbd_dev->header.obj_order;
2017 u64 offset = rbd_segment_offset(rbd_dev, img_offset);
2018 u64 length = rbd_segment_length(rbd_dev, img_offset, resid);
2019
2020 obj_request = rbd_obj_request_create();
2021 if (!obj_request)
2022 goto out_unwind;
2023
2024 obj_request->ex.oe_objno = object_no;
2025 obj_request->ex.oe_off = offset;
2026 obj_request->ex.oe_len = length;
2027
2028 /*
2029 * set obj_request->img_request before creating the
2030 * osd_request so that it gets the right snapc
2031 */
2032 rbd_img_obj_request_add(img_request, obj_request);
2033
2034 if (type == OBJ_REQUEST_BIO) {
2035 obj_request->bio_pos = bio_it;
2036 ceph_bio_iter_advance(&bio_it, length);
2037 } else if (type == OBJ_REQUEST_BVECS) {
2038 obj_request->bvec_pos = bvec_it;
2039 ceph_bvec_iter_shorten(&obj_request->bvec_pos, length);
2040 ceph_bvec_iter_advance(&bvec_it, length);
2041 }
2042
2043 img_offset += length;
2044 resid -= length;
2045 }
2046
2047 img_request->data_type = type;
2048 return __rbd_img_fill_request(img_request);
2049
2050out_unwind:
2051 for_each_obj_request_safe(img_request, obj_request, next_obj_request)
2052 rbd_img_obj_request_del(img_request, obj_request);
2053
2054 return -ENOMEM;
2055}
2056
2057union rbd_img_fill_iter { 1959union rbd_img_fill_iter {
2058 struct ceph_bio_iter bio_iter; 1960 struct ceph_bio_iter bio_iter;
2059 struct ceph_bvec_iter bvec_iter; 1961 struct ceph_bvec_iter bvec_iter;