diff options
author | Borislav Petkov <petkovbb@gmail.com> | 2009-05-02 04:26:12 -0400 |
---|---|---|
committer | Borislav Petkov <petkovbb@gmail.com> | 2009-05-15 00:44:09 -0400 |
commit | b13345f39dadbabdabaf8819cf6df26913da9e8d (patch) | |
tree | 535a81fdf7d71c632fe759c689f4a7d4a5c70399 /drivers/ide/ide-atapi.c | |
parent | 5a0e43b5e2ee9a295f864c38f0e853b1a4fc3892 (diff) |
ide-atapi: add a buffer-arg to ide_queue_pc_tail
This is in preparation of removing ide_atapi_pc. Expose the buffer as an
argument to ide_queue_pc_tail with later replacing it with local buffer
or even kmalloc'ed one if needed due to stack usage constraints.
Also, add the possibility of passing a NULL-ptr buffer for cmds which
don't transfer data besides the cdb. While at it, switch to local buffer
in idetape_get_mode_sense_results().
There should be no functional change resulting from this patch.
Signed-off-by: Borislav Petkov <petkovbb@gmail.com>
Diffstat (limited to 'drivers/ide/ide-atapi.c')
-rw-r--r-- | drivers/ide/ide-atapi.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/ide/ide-atapi.c b/drivers/ide/ide-atapi.c index 0d4da2c1adc1..b12be1f17f14 100644 --- a/drivers/ide/ide-atapi.c +++ b/drivers/ide/ide-atapi.c | |||
@@ -84,7 +84,7 @@ EXPORT_SYMBOL_GPL(ide_init_pc); | |||
84 | * and wait for it to be serviced. | 84 | * and wait for it to be serviced. |
85 | */ | 85 | */ |
86 | int ide_queue_pc_tail(ide_drive_t *drive, struct gendisk *disk, | 86 | int ide_queue_pc_tail(ide_drive_t *drive, struct gendisk *disk, |
87 | struct ide_atapi_pc *pc, unsigned int bufflen) | 87 | struct ide_atapi_pc *pc, void *buf, unsigned int bufflen) |
88 | { | 88 | { |
89 | struct request *rq; | 89 | struct request *rq; |
90 | int error; | 90 | int error; |
@@ -93,8 +93,8 @@ int ide_queue_pc_tail(ide_drive_t *drive, struct gendisk *disk, | |||
93 | rq->cmd_type = REQ_TYPE_SPECIAL; | 93 | rq->cmd_type = REQ_TYPE_SPECIAL; |
94 | rq->special = (char *)pc; | 94 | rq->special = (char *)pc; |
95 | 95 | ||
96 | if (bufflen) { | 96 | if (buf && bufflen) { |
97 | error = blk_rq_map_kern(drive->queue, rq, pc->buf, bufflen, | 97 | error = blk_rq_map_kern(drive->queue, rq, buf, bufflen, |
98 | GFP_NOIO); | 98 | GFP_NOIO); |
99 | if (error) | 99 | if (error) |
100 | goto put_req; | 100 | goto put_req; |
@@ -117,7 +117,7 @@ int ide_do_test_unit_ready(ide_drive_t *drive, struct gendisk *disk) | |||
117 | ide_init_pc(&pc); | 117 | ide_init_pc(&pc); |
118 | pc.c[0] = TEST_UNIT_READY; | 118 | pc.c[0] = TEST_UNIT_READY; |
119 | 119 | ||
120 | return ide_queue_pc_tail(drive, disk, &pc, 0); | 120 | return ide_queue_pc_tail(drive, disk, &pc, NULL, 0); |
121 | } | 121 | } |
122 | EXPORT_SYMBOL_GPL(ide_do_test_unit_ready); | 122 | EXPORT_SYMBOL_GPL(ide_do_test_unit_ready); |
123 | 123 | ||
@@ -132,7 +132,7 @@ int ide_do_start_stop(ide_drive_t *drive, struct gendisk *disk, int start) | |||
132 | if (drive->media == ide_tape) | 132 | if (drive->media == ide_tape) |
133 | pc.flags |= PC_FLAG_WAIT_FOR_DSC; | 133 | pc.flags |= PC_FLAG_WAIT_FOR_DSC; |
134 | 134 | ||
135 | return ide_queue_pc_tail(drive, disk, &pc, 0); | 135 | return ide_queue_pc_tail(drive, disk, &pc, NULL, 0); |
136 | } | 136 | } |
137 | EXPORT_SYMBOL_GPL(ide_do_start_stop); | 137 | EXPORT_SYMBOL_GPL(ide_do_start_stop); |
138 | 138 | ||
@@ -147,7 +147,7 @@ int ide_set_media_lock(ide_drive_t *drive, struct gendisk *disk, int on) | |||
147 | pc.c[0] = ALLOW_MEDIUM_REMOVAL; | 147 | pc.c[0] = ALLOW_MEDIUM_REMOVAL; |
148 | pc.c[4] = on; | 148 | pc.c[4] = on; |
149 | 149 | ||
150 | return ide_queue_pc_tail(drive, disk, &pc, 0); | 150 | return ide_queue_pc_tail(drive, disk, &pc, NULL, 0); |
151 | } | 151 | } |
152 | EXPORT_SYMBOL_GPL(ide_set_media_lock); | 152 | EXPORT_SYMBOL_GPL(ide_set_media_lock); |
153 | 153 | ||