diff options
author | Ilya Dryomov <idryomov@gmail.com> | 2018-02-06 13:26:34 -0500 |
---|---|---|
committer | Ilya Dryomov <idryomov@gmail.com> | 2018-04-02 04:12:43 -0400 |
commit | 0420c5dd2ef308b69a86b44a217390f5612bab58 (patch) | |
tree | e7004e2a96d662bf4f67360a060d90dd0c6d4dfe /drivers/block/rbd.c | |
parent | 5a237819aa4e0421a17966e9baf91b9caedaf61d (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.c | 98 |
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 | ||
1210 | static 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 | |||
1217 | static 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 | |||
1231 | static void zero_bvec(struct bio_vec *bv) | 1210 | static 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 | */ | ||
1988 | static 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 | |||
2050 | out_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 | |||
2057 | union rbd_img_fill_iter { | 1959 | union 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; |