提交 ac613e45 编写于 作者: C Christoph Hellwig 提交者: Jens Axboe

scsi/osd: remove the gfp argument to osd_start_request

Always GFP_KERNEL, and keeping it would cause serious complications for
the next change.
Signed-off-by: NChristoph Hellwig <hch@lst.de>
Signed-off-by: NJens Axboe <axboe@kernel.dk>
上级 058147bc
...@@ -99,7 +99,7 @@ static int _osd_get_print_system_info(struct osd_dev *od, ...@@ -99,7 +99,7 @@ static int _osd_get_print_system_info(struct osd_dev *od,
int nelem = ARRAY_SIZE(get_attrs), a = 0; int nelem = ARRAY_SIZE(get_attrs), a = 0;
int ret; int ret;
or = osd_start_request(od, GFP_KERNEL); or = osd_start_request(od);
if (!or) if (!or)
return -ENOMEM; return -ENOMEM;
...@@ -409,16 +409,15 @@ static void _osd_request_free(struct osd_request *or) ...@@ -409,16 +409,15 @@ static void _osd_request_free(struct osd_request *or)
kfree(or); kfree(or);
} }
struct osd_request *osd_start_request(struct osd_dev *dev, gfp_t gfp) struct osd_request *osd_start_request(struct osd_dev *dev)
{ {
struct osd_request *or; struct osd_request *or;
or = _osd_request_alloc(gfp); or = _osd_request_alloc(GFP_KERNEL);
if (!or) if (!or)
return NULL; return NULL;
or->osd_dev = dev; or->osd_dev = dev;
or->alloc_flags = gfp;
or->timeout = dev->def_timeout; or->timeout = dev->def_timeout;
or->retries = OSD_REQ_RETRIES; or->retries = OSD_REQ_RETRIES;
...@@ -546,7 +545,7 @@ static int _osd_realloc_seg(struct osd_request *or, ...@@ -546,7 +545,7 @@ static int _osd_realloc_seg(struct osd_request *or,
if (seg->alloc_size >= max_bytes) if (seg->alloc_size >= max_bytes)
return 0; return 0;
buff = krealloc(seg->buff, max_bytes, or->alloc_flags); buff = krealloc(seg->buff, max_bytes, GFP_KERNEL);
if (!buff) { if (!buff) {
OSD_ERR("Failed to Realloc %d-bytes was-%d\n", max_bytes, OSD_ERR("Failed to Realloc %d-bytes was-%d\n", max_bytes,
seg->alloc_size); seg->alloc_size);
...@@ -728,7 +727,7 @@ static int _osd_req_list_objects(struct osd_request *or, ...@@ -728,7 +727,7 @@ static int _osd_req_list_objects(struct osd_request *or,
_osd_req_encode_olist(or, list); _osd_req_encode_olist(or, list);
WARN_ON(or->in.bio); WARN_ON(or->in.bio);
bio = bio_map_kern(q, list, len, or->alloc_flags); bio = bio_map_kern(q, list, len, GFP_KERNEL);
if (IS_ERR(bio)) { if (IS_ERR(bio)) {
OSD_ERR("!!! Failed to allocate list_objects BIO\n"); OSD_ERR("!!! Failed to allocate list_objects BIO\n");
return PTR_ERR(bio); return PTR_ERR(bio);
...@@ -1190,14 +1189,14 @@ static int _req_append_segment(struct osd_request *or, ...@@ -1190,14 +1189,14 @@ static int _req_append_segment(struct osd_request *or,
pad_buff = io->pad_buff; pad_buff = io->pad_buff;
ret = blk_rq_map_kern(io->req->q, io->req, pad_buff, padding, ret = blk_rq_map_kern(io->req->q, io->req, pad_buff, padding,
or->alloc_flags); GFP_KERNEL);
if (ret) if (ret)
return ret; return ret;
io->total_bytes += padding; io->total_bytes += padding;
} }
ret = blk_rq_map_kern(io->req->q, io->req, seg->buff, seg->total_bytes, ret = blk_rq_map_kern(io->req->q, io->req, seg->buff, seg->total_bytes,
or->alloc_flags); GFP_KERNEL);
if (ret) if (ret)
return ret; return ret;
...@@ -1564,14 +1563,14 @@ static int _osd_req_finalize_data_integrity(struct osd_request *or, ...@@ -1564,14 +1563,14 @@ static int _osd_req_finalize_data_integrity(struct osd_request *or,
* osd_finalize_request and helpers * osd_finalize_request and helpers
*/ */
static struct request *_make_request(struct request_queue *q, bool has_write, static struct request *_make_request(struct request_queue *q, bool has_write,
struct _osd_io_info *oii, gfp_t flags) struct _osd_io_info *oii)
{ {
struct request *req; struct request *req;
struct bio *bio = oii->bio; struct bio *bio = oii->bio;
int ret; int ret;
req = blk_get_request(q, has_write ? REQ_OP_SCSI_OUT : REQ_OP_SCSI_IN, req = blk_get_request(q, has_write ? REQ_OP_SCSI_OUT : REQ_OP_SCSI_IN,
flags); GFP_KERNEL);
if (IS_ERR(req)) if (IS_ERR(req))
return req; return req;
...@@ -1589,13 +1588,12 @@ static struct request *_make_request(struct request_queue *q, bool has_write, ...@@ -1589,13 +1588,12 @@ static struct request *_make_request(struct request_queue *q, bool has_write,
static int _init_blk_request(struct osd_request *or, static int _init_blk_request(struct osd_request *or,
bool has_in, bool has_out) bool has_in, bool has_out)
{ {
gfp_t flags = or->alloc_flags;
struct scsi_device *scsi_device = or->osd_dev->scsi_device; struct scsi_device *scsi_device = or->osd_dev->scsi_device;
struct request_queue *q = scsi_device->request_queue; struct request_queue *q = scsi_device->request_queue;
struct request *req; struct request *req;
int ret; int ret;
req = _make_request(q, has_out, has_out ? &or->out : &or->in, flags); req = _make_request(q, has_out, has_out ? &or->out : &or->in);
if (IS_ERR(req)) { if (IS_ERR(req)) {
ret = PTR_ERR(req); ret = PTR_ERR(req);
goto out; goto out;
...@@ -1611,7 +1609,7 @@ static int _init_blk_request(struct osd_request *or, ...@@ -1611,7 +1609,7 @@ static int _init_blk_request(struct osd_request *or,
or->out.req = req; or->out.req = req;
if (has_in) { if (has_in) {
/* allocate bidi request */ /* allocate bidi request */
req = _make_request(q, false, &or->in, flags); req = _make_request(q, false, &or->in);
if (IS_ERR(req)) { if (IS_ERR(req)) {
OSD_DEBUG("blk_get_request for bidi failed\n"); OSD_DEBUG("blk_get_request for bidi failed\n");
ret = PTR_ERR(req); ret = PTR_ERR(req);
......
...@@ -790,7 +790,7 @@ int ore_create(struct ore_io_state *ios) ...@@ -790,7 +790,7 @@ int ore_create(struct ore_io_state *ios)
for (i = 0; i < ios->oc->numdevs; i++) { for (i = 0; i < ios->oc->numdevs; i++) {
struct osd_request *or; struct osd_request *or;
or = osd_start_request(_ios_od(ios, i), GFP_KERNEL); or = osd_start_request(_ios_od(ios, i));
if (unlikely(!or)) { if (unlikely(!or)) {
ORE_ERR("%s: osd_start_request failed\n", __func__); ORE_ERR("%s: osd_start_request failed\n", __func__);
ret = -ENOMEM; ret = -ENOMEM;
...@@ -815,7 +815,7 @@ int ore_remove(struct ore_io_state *ios) ...@@ -815,7 +815,7 @@ int ore_remove(struct ore_io_state *ios)
for (i = 0; i < ios->oc->numdevs; i++) { for (i = 0; i < ios->oc->numdevs; i++) {
struct osd_request *or; struct osd_request *or;
or = osd_start_request(_ios_od(ios, i), GFP_KERNEL); or = osd_start_request(_ios_od(ios, i));
if (unlikely(!or)) { if (unlikely(!or)) {
ORE_ERR("%s: osd_start_request failed\n", __func__); ORE_ERR("%s: osd_start_request failed\n", __func__);
ret = -ENOMEM; ret = -ENOMEM;
...@@ -847,7 +847,7 @@ static int _write_mirror(struct ore_io_state *ios, int cur_comp) ...@@ -847,7 +847,7 @@ static int _write_mirror(struct ore_io_state *ios, int cur_comp)
struct ore_per_dev_state *per_dev = &ios->per_dev[cur_comp]; struct ore_per_dev_state *per_dev = &ios->per_dev[cur_comp];
struct osd_request *or; struct osd_request *or;
or = osd_start_request(_ios_od(ios, dev), GFP_KERNEL); or = osd_start_request(_ios_od(ios, dev));
if (unlikely(!or)) { if (unlikely(!or)) {
ORE_ERR("%s: osd_start_request failed\n", __func__); ORE_ERR("%s: osd_start_request failed\n", __func__);
ret = -ENOMEM; ret = -ENOMEM;
...@@ -966,7 +966,7 @@ int _ore_read_mirror(struct ore_io_state *ios, unsigned cur_comp) ...@@ -966,7 +966,7 @@ int _ore_read_mirror(struct ore_io_state *ios, unsigned cur_comp)
return 0; /* Just an empty slot */ return 0; /* Just an empty slot */
first_dev = per_dev->dev + first_dev % ios->layout->mirrors_p1; first_dev = per_dev->dev + first_dev % ios->layout->mirrors_p1;
or = osd_start_request(_ios_od(ios, first_dev), GFP_KERNEL); or = osd_start_request(_ios_od(ios, first_dev));
if (unlikely(!or)) { if (unlikely(!or)) {
ORE_ERR("%s: osd_start_request failed\n", __func__); ORE_ERR("%s: osd_start_request failed\n", __func__);
return -ENOMEM; return -ENOMEM;
...@@ -1060,7 +1060,7 @@ static int _truncate_mirrors(struct ore_io_state *ios, unsigned cur_comp, ...@@ -1060,7 +1060,7 @@ static int _truncate_mirrors(struct ore_io_state *ios, unsigned cur_comp,
struct ore_per_dev_state *per_dev = &ios->per_dev[cur_comp]; struct ore_per_dev_state *per_dev = &ios->per_dev[cur_comp];
struct osd_request *or; struct osd_request *or;
or = osd_start_request(_ios_od(ios, cur_comp), GFP_KERNEL); or = osd_start_request(_ios_od(ios, cur_comp));
if (unlikely(!or)) { if (unlikely(!or)) {
ORE_ERR("%s: osd_start_request failed\n", __func__); ORE_ERR("%s: osd_start_request failed\n", __func__);
return -ENOMEM; return -ENOMEM;
......
...@@ -229,7 +229,7 @@ void exofs_make_credential(u8 cred_a[OSD_CAP_LEN], const struct osd_obj_id *obj) ...@@ -229,7 +229,7 @@ void exofs_make_credential(u8 cred_a[OSD_CAP_LEN], const struct osd_obj_id *obj)
static int exofs_read_kern(struct osd_dev *od, u8 *cred, struct osd_obj_id *obj, static int exofs_read_kern(struct osd_dev *od, u8 *cred, struct osd_obj_id *obj,
u64 offset, void *p, unsigned length) u64 offset, void *p, unsigned length)
{ {
struct osd_request *or = osd_start_request(od, GFP_KERNEL); struct osd_request *or = osd_start_request(od);
/* struct osd_sense_info osi = {.key = 0};*/ /* struct osd_sense_info osi = {.key = 0};*/
int ret; int ret;
......
...@@ -148,7 +148,6 @@ struct osd_request { ...@@ -148,7 +148,6 @@ struct osd_request {
u8 *pad_buff; u8 *pad_buff;
} out, in; } out, in;
gfp_t alloc_flags;
unsigned timeout; unsigned timeout;
unsigned retries; unsigned retries;
unsigned sense_len; unsigned sense_len;
...@@ -202,14 +201,11 @@ static inline bool osd_req_is_ver1(struct osd_request *or) ...@@ -202,14 +201,11 @@ static inline bool osd_req_is_ver1(struct osd_request *or)
* *
* @osd_dev: OSD device that holds the scsi-device and default values * @osd_dev: OSD device that holds the scsi-device and default values
* that the request is associated with. * that the request is associated with.
* @gfp: The allocation flags to use for request allocation, and all
* subsequent allocations. This will be stored at
* osd_request->alloc_flags, can be changed by user later
* *
* Allocate osd_request and initialize all members to the * Allocate osd_request and initialize all members to the
* default/initial state. * default/initial state.
*/ */
struct osd_request *osd_start_request(struct osd_dev *od, gfp_t gfp); struct osd_request *osd_start_request(struct osd_dev *od);
enum osd_req_options { enum osd_req_options {
OSD_REQ_FUA = 0x08, /* Force Unit Access */ OSD_REQ_FUA = 0x08, /* Force Unit Access */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册