summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2018-05-09 03:54:03 -0400
committerJens Axboe <axboe@kernel.dk>2018-05-14 10:55:09 -0400
commitac613e4566f9df3a8cf8b18e2dcc8af087143868 (patch)
tree84c5f6a9caaf5a6ae58c378418e092a60495e184
parent058147bc9435b07c573ce50e9e02b18eaae9b4ea (diff)
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: Christoph Hellwig <hch@lst.de> Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r--drivers/scsi/osd/osd_initiator.c24
-rw-r--r--fs/exofs/ore.c10
-rw-r--r--fs/exofs/super.c2
-rw-r--r--include/scsi/osd_initiator.h6
4 files changed, 18 insertions, 24 deletions
diff --git a/drivers/scsi/osd/osd_initiator.c b/drivers/scsi/osd/osd_initiator.c
index e18877177f1b..f48bae267dc2 100644
--- a/drivers/scsi/osd/osd_initiator.c
+++ b/drivers/scsi/osd/osd_initiator.c
@@ -99,7 +99,7 @@ static int _osd_get_print_system_info(struct osd_dev *od,
99 int nelem = ARRAY_SIZE(get_attrs), a = 0; 99 int nelem = ARRAY_SIZE(get_attrs), a = 0;
100 int ret; 100 int ret;
101 101
102 or = osd_start_request(od, GFP_KERNEL); 102 or = osd_start_request(od);
103 if (!or) 103 if (!or)
104 return -ENOMEM; 104 return -ENOMEM;
105 105
@@ -409,16 +409,15 @@ static void _osd_request_free(struct osd_request *or)
409 kfree(or); 409 kfree(or);
410} 410}
411 411
412struct osd_request *osd_start_request(struct osd_dev *dev, gfp_t gfp) 412struct osd_request *osd_start_request(struct osd_dev *dev)
413{ 413{
414 struct osd_request *or; 414 struct osd_request *or;
415 415
416 or = _osd_request_alloc(gfp); 416 or = _osd_request_alloc(GFP_KERNEL);
417 if (!or) 417 if (!or)
418 return NULL; 418 return NULL;
419 419
420 or->osd_dev = dev; 420 or->osd_dev = dev;
421 or->alloc_flags = gfp;
422 or->timeout = dev->def_timeout; 421 or->timeout = dev->def_timeout;
423 or->retries = OSD_REQ_RETRIES; 422 or->retries = OSD_REQ_RETRIES;
424 423
@@ -546,7 +545,7 @@ static int _osd_realloc_seg(struct osd_request *or,
546 if (seg->alloc_size >= max_bytes) 545 if (seg->alloc_size >= max_bytes)
547 return 0; 546 return 0;
548 547
549 buff = krealloc(seg->buff, max_bytes, or->alloc_flags); 548 buff = krealloc(seg->buff, max_bytes, GFP_KERNEL);
550 if (!buff) { 549 if (!buff) {
551 OSD_ERR("Failed to Realloc %d-bytes was-%d\n", max_bytes, 550 OSD_ERR("Failed to Realloc %d-bytes was-%d\n", max_bytes,
552 seg->alloc_size); 551 seg->alloc_size);
@@ -728,7 +727,7 @@ static int _osd_req_list_objects(struct osd_request *or,
728 _osd_req_encode_olist(or, list); 727 _osd_req_encode_olist(or, list);
729 728
730 WARN_ON(or->in.bio); 729 WARN_ON(or->in.bio);
731 bio = bio_map_kern(q, list, len, or->alloc_flags); 730 bio = bio_map_kern(q, list, len, GFP_KERNEL);
732 if (IS_ERR(bio)) { 731 if (IS_ERR(bio)) {
733 OSD_ERR("!!! Failed to allocate list_objects BIO\n"); 732 OSD_ERR("!!! Failed to allocate list_objects BIO\n");
734 return PTR_ERR(bio); 733 return PTR_ERR(bio);
@@ -1190,14 +1189,14 @@ static int _req_append_segment(struct osd_request *or,
1190 pad_buff = io->pad_buff; 1189 pad_buff = io->pad_buff;
1191 1190
1192 ret = blk_rq_map_kern(io->req->q, io->req, pad_buff, padding, 1191 ret = blk_rq_map_kern(io->req->q, io->req, pad_buff, padding,
1193 or->alloc_flags); 1192 GFP_KERNEL);
1194 if (ret) 1193 if (ret)
1195 return ret; 1194 return ret;
1196 io->total_bytes += padding; 1195 io->total_bytes += padding;
1197 } 1196 }
1198 1197
1199 ret = blk_rq_map_kern(io->req->q, io->req, seg->buff, seg->total_bytes, 1198 ret = blk_rq_map_kern(io->req->q, io->req, seg->buff, seg->total_bytes,
1200 or->alloc_flags); 1199 GFP_KERNEL);
1201 if (ret) 1200 if (ret)
1202 return ret; 1201 return ret;
1203 1202
@@ -1564,14 +1563,14 @@ static int _osd_req_finalize_data_integrity(struct osd_request *or,
1564 * osd_finalize_request and helpers 1563 * osd_finalize_request and helpers
1565 */ 1564 */
1566static struct request *_make_request(struct request_queue *q, bool has_write, 1565static struct request *_make_request(struct request_queue *q, bool has_write,
1567 struct _osd_io_info *oii, gfp_t flags) 1566 struct _osd_io_info *oii)
1568{ 1567{
1569 struct request *req; 1568 struct request *req;
1570 struct bio *bio = oii->bio; 1569 struct bio *bio = oii->bio;
1571 int ret; 1570 int ret;
1572 1571
1573 req = blk_get_request(q, has_write ? REQ_OP_SCSI_OUT : REQ_OP_SCSI_IN, 1572 req = blk_get_request(q, has_write ? REQ_OP_SCSI_OUT : REQ_OP_SCSI_IN,
1574 flags); 1573 GFP_KERNEL);
1575 if (IS_ERR(req)) 1574 if (IS_ERR(req))
1576 return req; 1575 return req;
1577 1576
@@ -1589,13 +1588,12 @@ static struct request *_make_request(struct request_queue *q, bool has_write,
1589static int _init_blk_request(struct osd_request *or, 1588static int _init_blk_request(struct osd_request *or,
1590 bool has_in, bool has_out) 1589 bool has_in, bool has_out)
1591{ 1590{
1592 gfp_t flags = or->alloc_flags;
1593 struct scsi_device *scsi_device = or->osd_dev->scsi_device; 1591 struct scsi_device *scsi_device = or->osd_dev->scsi_device;
1594 struct request_queue *q = scsi_device->request_queue; 1592 struct request_queue *q = scsi_device->request_queue;
1595 struct request *req; 1593 struct request *req;
1596 int ret; 1594 int ret;
1597 1595
1598 req = _make_request(q, has_out, has_out ? &or->out : &or->in, flags); 1596 req = _make_request(q, has_out, has_out ? &or->out : &or->in);
1599 if (IS_ERR(req)) { 1597 if (IS_ERR(req)) {
1600 ret = PTR_ERR(req); 1598 ret = PTR_ERR(req);
1601 goto out; 1599 goto out;
@@ -1611,7 +1609,7 @@ static int _init_blk_request(struct osd_request *or,
1611 or->out.req = req; 1609 or->out.req = req;
1612 if (has_in) { 1610 if (has_in) {
1613 /* allocate bidi request */ 1611 /* allocate bidi request */
1614 req = _make_request(q, false, &or->in, flags); 1612 req = _make_request(q, false, &or->in);
1615 if (IS_ERR(req)) { 1613 if (IS_ERR(req)) {
1616 OSD_DEBUG("blk_get_request for bidi failed\n"); 1614 OSD_DEBUG("blk_get_request for bidi failed\n");
1617 ret = PTR_ERR(req); 1615 ret = PTR_ERR(req);
diff --git a/fs/exofs/ore.c b/fs/exofs/ore.c
index 3c6a9c156b7a..ddbf87246898 100644
--- a/fs/exofs/ore.c
+++ b/fs/exofs/ore.c
@@ -790,7 +790,7 @@ int ore_create(struct ore_io_state *ios)
790 for (i = 0; i < ios->oc->numdevs; i++) { 790 for (i = 0; i < ios->oc->numdevs; i++) {
791 struct osd_request *or; 791 struct osd_request *or;
792 792
793 or = osd_start_request(_ios_od(ios, i), GFP_KERNEL); 793 or = osd_start_request(_ios_od(ios, i));
794 if (unlikely(!or)) { 794 if (unlikely(!or)) {
795 ORE_ERR("%s: osd_start_request failed\n", __func__); 795 ORE_ERR("%s: osd_start_request failed\n", __func__);
796 ret = -ENOMEM; 796 ret = -ENOMEM;
@@ -815,7 +815,7 @@ int ore_remove(struct ore_io_state *ios)
815 for (i = 0; i < ios->oc->numdevs; i++) { 815 for (i = 0; i < ios->oc->numdevs; i++) {
816 struct osd_request *or; 816 struct osd_request *or;
817 817
818 or = osd_start_request(_ios_od(ios, i), GFP_KERNEL); 818 or = osd_start_request(_ios_od(ios, i));
819 if (unlikely(!or)) { 819 if (unlikely(!or)) {
820 ORE_ERR("%s: osd_start_request failed\n", __func__); 820 ORE_ERR("%s: osd_start_request failed\n", __func__);
821 ret = -ENOMEM; 821 ret = -ENOMEM;
@@ -847,7 +847,7 @@ static int _write_mirror(struct ore_io_state *ios, int cur_comp)
847 struct ore_per_dev_state *per_dev = &ios->per_dev[cur_comp]; 847 struct ore_per_dev_state *per_dev = &ios->per_dev[cur_comp];
848 struct osd_request *or; 848 struct osd_request *or;
849 849
850 or = osd_start_request(_ios_od(ios, dev), GFP_KERNEL); 850 or = osd_start_request(_ios_od(ios, dev));
851 if (unlikely(!or)) { 851 if (unlikely(!or)) {
852 ORE_ERR("%s: osd_start_request failed\n", __func__); 852 ORE_ERR("%s: osd_start_request failed\n", __func__);
853 ret = -ENOMEM; 853 ret = -ENOMEM;
@@ -966,7 +966,7 @@ int _ore_read_mirror(struct ore_io_state *ios, unsigned cur_comp)
966 return 0; /* Just an empty slot */ 966 return 0; /* Just an empty slot */
967 967
968 first_dev = per_dev->dev + first_dev % ios->layout->mirrors_p1; 968 first_dev = per_dev->dev + first_dev % ios->layout->mirrors_p1;
969 or = osd_start_request(_ios_od(ios, first_dev), GFP_KERNEL); 969 or = osd_start_request(_ios_od(ios, first_dev));
970 if (unlikely(!or)) { 970 if (unlikely(!or)) {
971 ORE_ERR("%s: osd_start_request failed\n", __func__); 971 ORE_ERR("%s: osd_start_request failed\n", __func__);
972 return -ENOMEM; 972 return -ENOMEM;
@@ -1060,7 +1060,7 @@ static int _truncate_mirrors(struct ore_io_state *ios, unsigned cur_comp,
1060 struct ore_per_dev_state *per_dev = &ios->per_dev[cur_comp]; 1060 struct ore_per_dev_state *per_dev = &ios->per_dev[cur_comp];
1061 struct osd_request *or; 1061 struct osd_request *or;
1062 1062
1063 or = osd_start_request(_ios_od(ios, cur_comp), GFP_KERNEL); 1063 or = osd_start_request(_ios_od(ios, cur_comp));
1064 if (unlikely(!or)) { 1064 if (unlikely(!or)) {
1065 ORE_ERR("%s: osd_start_request failed\n", __func__); 1065 ORE_ERR("%s: osd_start_request failed\n", __func__);
1066 return -ENOMEM; 1066 return -ENOMEM;
diff --git a/fs/exofs/super.c b/fs/exofs/super.c
index 179cd5c2f52a..719a3152da80 100644
--- a/fs/exofs/super.c
+++ b/fs/exofs/super.c
@@ -229,7 +229,7 @@ void exofs_make_credential(u8 cred_a[OSD_CAP_LEN], const struct osd_obj_id *obj)
229static int exofs_read_kern(struct osd_dev *od, u8 *cred, struct osd_obj_id *obj, 229static int exofs_read_kern(struct osd_dev *od, u8 *cred, struct osd_obj_id *obj,
230 u64 offset, void *p, unsigned length) 230 u64 offset, void *p, unsigned length)
231{ 231{
232 struct osd_request *or = osd_start_request(od, GFP_KERNEL); 232 struct osd_request *or = osd_start_request(od);
233/* struct osd_sense_info osi = {.key = 0};*/ 233/* struct osd_sense_info osi = {.key = 0};*/
234 int ret; 234 int ret;
235 235
diff --git a/include/scsi/osd_initiator.h b/include/scsi/osd_initiator.h
index a29d3086eb56..86a569d008b2 100644
--- a/include/scsi/osd_initiator.h
+++ b/include/scsi/osd_initiator.h
@@ -148,7 +148,6 @@ struct osd_request {
148 u8 *pad_buff; 148 u8 *pad_buff;
149 } out, in; 149 } out, in;
150 150
151 gfp_t alloc_flags;
152 unsigned timeout; 151 unsigned timeout;
153 unsigned retries; 152 unsigned retries;
154 unsigned sense_len; 153 unsigned sense_len;
@@ -202,14 +201,11 @@ static inline bool osd_req_is_ver1(struct osd_request *or)
202 * 201 *
203 * @osd_dev: OSD device that holds the scsi-device and default values 202 * @osd_dev: OSD device that holds the scsi-device and default values
204 * that the request is associated with. 203 * that the request is associated with.
205 * @gfp: The allocation flags to use for request allocation, and all
206 * subsequent allocations. This will be stored at
207 * osd_request->alloc_flags, can be changed by user later
208 * 204 *
209 * Allocate osd_request and initialize all members to the 205 * Allocate osd_request and initialize all members to the
210 * default/initial state. 206 * default/initial state.
211 */ 207 */
212struct osd_request *osd_start_request(struct osd_dev *od, gfp_t gfp); 208struct osd_request *osd_start_request(struct osd_dev *od);
213 209
214enum osd_req_options { 210enum osd_req_options {
215 OSD_REQ_FUA = 0x08, /* Force Unit Access */ 211 OSD_REQ_FUA = 0x08, /* Force Unit Access */