mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
libceph: combine initializing and setting osd data
This ends up being a rather large patch but what it's doing is somewhat straightforward. Basically, this is replacing two calls with one. The first of the two calls is initializing a struct ceph_osd_data with data (either a page array, a page list, or a bio list); the second is setting an osd request op so it associates that data with one of the op's parameters. In place of those two will be a single function that initializes the op directly. That means we sort of fan out a set of the needed functions: - extent ops with pages data - extent ops with pagelist data - extent ops with bio list data and - class ops with page data for receiving a response We also have define another one, but it's only used internally: - class ops with pagelist data for request parameters Note that we *still* haven't gotten rid of the osd request's r_data_in and r_data_out fields. All the osd ops refer to them for their data. For now, these data fields are pointers assigned to the appropriate r_data_* field when these new functions are called. Signed-off-by: Alex Elder <elder@inktank.com> Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
This commit is contained in:
parent
39b44cbe86
commit
a4ce40a9a7
5 changed files with 161 additions and 72 deletions
|
@ -240,17 +240,39 @@ extern void osd_req_op_extent_init(struct ceph_osd_request *osd_req,
|
|||
u64 truncate_size, u32 truncate_seq);
|
||||
extern void osd_req_op_extent_update(struct ceph_osd_request *osd_req,
|
||||
unsigned int which, u64 length);
|
||||
extern void osd_req_op_extent_osd_data(struct ceph_osd_request *osd_req,
|
||||
|
||||
extern struct ceph_osd_data *osd_req_op_extent_osd_data(
|
||||
struct ceph_osd_request *osd_req,
|
||||
unsigned int which, bool write_request);
|
||||
extern struct ceph_osd_data *osd_req_op_cls_response_data(
|
||||
struct ceph_osd_request *osd_req,
|
||||
unsigned int which);
|
||||
|
||||
extern void osd_req_op_extent_osd_data_pages(struct ceph_osd_request *,
|
||||
unsigned int which, bool write_request,
|
||||
struct page **pages, u64 length,
|
||||
u32 alignment, bool pages_from_pool,
|
||||
bool own_pages);
|
||||
extern void osd_req_op_extent_osd_data_pagelist(struct ceph_osd_request *,
|
||||
unsigned int which, bool write_request,
|
||||
struct ceph_pagelist *pagelist);
|
||||
#ifdef CONFIG_BLOCK
|
||||
extern void osd_req_op_extent_osd_data_bio(struct ceph_osd_request *,
|
||||
unsigned int which, bool write_request,
|
||||
struct bio *bio, size_t bio_length);
|
||||
#endif /* CONFIG_BLOCK */
|
||||
|
||||
extern void osd_req_op_cls_response_data_pages(struct ceph_osd_request *,
|
||||
unsigned int which,
|
||||
struct ceph_osd_data *osd_data);
|
||||
struct page **pages, u64 length,
|
||||
u32 alignment, bool pages_from_pool,
|
||||
bool own_pages);
|
||||
|
||||
extern void osd_req_op_cls_init(struct ceph_osd_request *osd_req,
|
||||
unsigned int which, u16 opcode,
|
||||
const char *class, const char *method,
|
||||
const void *request_data,
|
||||
size_t request_data_size);
|
||||
extern void osd_req_op_cls_response_data(struct ceph_osd_request *osd_req,
|
||||
unsigned int which,
|
||||
struct ceph_osd_data *response_data);
|
||||
extern void osd_req_op_watch_init(struct ceph_osd_request *osd_req,
|
||||
unsigned int which, u16 opcode,
|
||||
u64 cookie, u64 version, int flag);
|
||||
|
@ -290,17 +312,6 @@ static inline void ceph_osdc_put_request(struct ceph_osd_request *req)
|
|||
kref_put(&req->r_kref, ceph_osdc_release_request);
|
||||
}
|
||||
|
||||
extern void ceph_osd_data_pages_init(struct ceph_osd_data *osd_data,
|
||||
struct page **pages, u64 length,
|
||||
u32 alignment, bool pages_from_pool,
|
||||
bool own_pages);
|
||||
extern void ceph_osd_data_pagelist_init(struct ceph_osd_data *osd_data,
|
||||
struct ceph_pagelist *pagelist);
|
||||
#ifdef CONFIG_BLOCK
|
||||
extern void ceph_osd_data_bio_init(struct ceph_osd_data *osd_data,
|
||||
struct bio *bio, size_t bio_length);
|
||||
#endif /* CONFIG_BLOCK */
|
||||
|
||||
extern int ceph_osdc_start_request(struct ceph_osd_client *osdc,
|
||||
struct ceph_osd_request *req,
|
||||
bool nofail);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue