diff options
author | Dan Williams <dan.j.williams@intel.com> | 2011-07-29 20:26:39 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2011-08-27 10:35:13 -0400 |
commit | 4fcf812ca392303aa79dd50e96e83a29faa13bd0 (patch) | |
tree | 411c33d701989b44ba2f4ecb64fd0cba92214958 /drivers/scsi/mvsas | |
parent | 7ca3c803e85080afdff4097e60fefec865027809 (diff) |
[SCSI] libsas: export sas_alloc_task()
Now that isci has added a 3rd open coded user of this functionality just
share the libsas version.
Acked-by: Jack Wang <jack_wang@usish.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/mvsas')
-rw-r--r-- | drivers/scsi/mvsas/mv_sas.c | 29 |
1 files changed, 3 insertions, 26 deletions
diff --git a/drivers/scsi/mvsas/mv_sas.c b/drivers/scsi/mvsas/mv_sas.c index 4958fefff365..4196eee33dc9 100644 --- a/drivers/scsi/mvsas/mv_sas.c +++ b/drivers/scsi/mvsas/mv_sas.c | |||
@@ -1387,28 +1387,6 @@ void mvs_dev_gone(struct domain_device *dev) | |||
1387 | mvs_dev_gone_notify(dev); | 1387 | mvs_dev_gone_notify(dev); |
1388 | } | 1388 | } |
1389 | 1389 | ||
1390 | static struct sas_task *mvs_alloc_task(void) | ||
1391 | { | ||
1392 | struct sas_task *task = kzalloc(sizeof(struct sas_task), GFP_KERNEL); | ||
1393 | |||
1394 | if (task) { | ||
1395 | INIT_LIST_HEAD(&task->list); | ||
1396 | spin_lock_init(&task->task_state_lock); | ||
1397 | task->task_state_flags = SAS_TASK_STATE_PENDING; | ||
1398 | init_timer(&task->timer); | ||
1399 | init_completion(&task->completion); | ||
1400 | } | ||
1401 | return task; | ||
1402 | } | ||
1403 | |||
1404 | static void mvs_free_task(struct sas_task *task) | ||
1405 | { | ||
1406 | if (task) { | ||
1407 | BUG_ON(!list_empty(&task->list)); | ||
1408 | kfree(task); | ||
1409 | } | ||
1410 | } | ||
1411 | |||
1412 | static void mvs_task_done(struct sas_task *task) | 1390 | static void mvs_task_done(struct sas_task *task) |
1413 | { | 1391 | { |
1414 | if (!del_timer(&task->timer)) | 1392 | if (!del_timer(&task->timer)) |
@@ -1432,7 +1410,7 @@ static int mvs_exec_internal_tmf_task(struct domain_device *dev, | |||
1432 | struct sas_task *task = NULL; | 1410 | struct sas_task *task = NULL; |
1433 | 1411 | ||
1434 | for (retry = 0; retry < 3; retry++) { | 1412 | for (retry = 0; retry < 3; retry++) { |
1435 | task = mvs_alloc_task(); | 1413 | task = sas_alloc_task(GFP_KERNEL); |
1436 | if (!task) | 1414 | if (!task) |
1437 | return -ENOMEM; | 1415 | return -ENOMEM; |
1438 | 1416 | ||
@@ -1490,15 +1468,14 @@ static int mvs_exec_internal_tmf_task(struct domain_device *dev, | |||
1490 | SAS_ADDR(dev->sas_addr), | 1468 | SAS_ADDR(dev->sas_addr), |
1491 | task->task_status.resp, | 1469 | task->task_status.resp, |
1492 | task->task_status.stat); | 1470 | task->task_status.stat); |
1493 | mvs_free_task(task); | 1471 | sas_free_task(task); |
1494 | task = NULL; | 1472 | task = NULL; |
1495 | 1473 | ||
1496 | } | 1474 | } |
1497 | } | 1475 | } |
1498 | ex_err: | 1476 | ex_err: |
1499 | BUG_ON(retry == 3 && task != NULL); | 1477 | BUG_ON(retry == 3 && task != NULL); |
1500 | if (task != NULL) | 1478 | sas_free_task(task); |
1501 | mvs_free_task(task); | ||
1502 | return res; | 1479 | return res; |
1503 | } | 1480 | } |
1504 | 1481 | ||