aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block/ps3disk.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2009-04-28 00:06:07 -0400
committerJens Axboe <jens.axboe@oracle.com>2009-04-28 02:14:50 -0400
commitcd4c34ebec155e5c10f897d9bebf618248121e70 (patch)
tree17baaee04a3b360fdc4a85ca53f31b7d92475bdd /drivers/block/ps3disk.c
parent5b5c5d12b91cb6b2a2967f06aef35d59008dc2e7 (diff)
ps3disk: simplify request completion
ps3disk_interrupt() always completes requests fully but it uses rq->hard_cur_sectors for FLUSH requests for some reason. Drop them and simply use __blk_end_request_all(). [ Impact: cleanup ] Signed-off-by: Tejun Heo <tj@kernel.org> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'drivers/block/ps3disk.c')
-rw-r--r--drivers/block/ps3disk.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/drivers/block/ps3disk.c b/drivers/block/ps3disk.c
index d23b54bc2f50..f6586e4d351c 100644
--- a/drivers/block/ps3disk.c
+++ b/drivers/block/ps3disk.c
@@ -231,7 +231,6 @@ static irqreturn_t ps3disk_interrupt(int irq, void *data)
231 struct request *req; 231 struct request *req;
232 int res, read, error; 232 int res, read, error;
233 u64 tag, status; 233 u64 tag, status;
234 unsigned long num_sectors;
235 const char *op; 234 const char *op;
236 235
237 res = lv1_storage_get_async_status(dev->sbd.dev_id, &tag, &status); 236 res = lv1_storage_get_async_status(dev->sbd.dev_id, &tag, &status);
@@ -261,11 +260,9 @@ static irqreturn_t ps3disk_interrupt(int irq, void *data)
261 if (req->cmd_type == REQ_TYPE_LINUX_BLOCK && 260 if (req->cmd_type == REQ_TYPE_LINUX_BLOCK &&
262 req->cmd[0] == REQ_LB_OP_FLUSH) { 261 req->cmd[0] == REQ_LB_OP_FLUSH) {
263 read = 0; 262 read = 0;
264 num_sectors = req->hard_cur_sectors;
265 op = "flush"; 263 op = "flush";
266 } else { 264 } else {
267 read = !rq_data_dir(req); 265 read = !rq_data_dir(req);
268 num_sectors = req->nr_sectors;
269 op = read ? "read" : "write"; 266 op = read ? "read" : "write";
270 } 267 }
271 if (status) { 268 if (status) {
@@ -281,7 +278,7 @@ static irqreturn_t ps3disk_interrupt(int irq, void *data)
281 } 278 }
282 279
283 spin_lock(&priv->lock); 280 spin_lock(&priv->lock);
284 __blk_end_request(req, error, num_sectors << 9); 281 __blk_end_request_all(req, error);
285 priv->req = NULL; 282 priv->req = NULL;
286 ps3disk_do_request(dev, priv->queue); 283 ps3disk_do_request(dev, priv->queue);
287 spin_unlock(&priv->lock); 284 spin_unlock(&priv->lock);