summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2012-10-11 19:57:11 +0000
committermav <mav@FreeBSD.org>2012-10-11 19:57:11 +0000
commitdef5df11b31baaa81e80d27c446435d1aaa654dd (patch)
tree0d139bdadb656dfe9c8aaa91a22b7a526fa73319
parente4cf877fdd849d05541f682a6ef729b28216135e (diff)
downloadFreeBSD-src-def5df11b31baaa81e80d27c446435d1aaa654dd.zip
FreeBSD-src-def5df11b31baaa81e80d27c446435d1aaa654dd.tar.gz
Don't duplicate path/ccb allocation code, use existing functions.
-rw-r--r--sys/cam/ata/ata_xpt.c23
-rw-r--r--sys/cam/cam_xpt.c8
-rw-r--r--sys/cam/scsi/scsi_xpt.c23
3 files changed, 15 insertions, 39 deletions
diff --git a/sys/cam/ata/ata_xpt.c b/sys/cam/ata/ata_xpt.c
index eb1a0b6..caa4d84 100644
--- a/sys/cam/ata/ata_xpt.c
+++ b/sys/cam/ata/ata_xpt.c
@@ -1462,29 +1462,20 @@ ata_scan_lun(struct cam_periph *periph, struct cam_path *path,
}
if (request_ccb == NULL) {
- request_ccb = malloc(sizeof(union ccb), M_CAMXPT, M_NOWAIT);
+ request_ccb = xpt_alloc_ccb_nowait();
if (request_ccb == NULL) {
xpt_print(path, "xpt_scan_lun: can't allocate CCB, "
"can't continue\n");
return;
}
- new_path = malloc(sizeof(*new_path), M_CAMXPT, M_NOWAIT);
- if (new_path == NULL) {
- xpt_print(path, "xpt_scan_lun: can't allocate path, "
- "can't continue\n");
- free(request_ccb, M_CAMXPT);
- return;
- }
- status = xpt_compile_path(new_path, xpt_periph,
+ status = xpt_create_path(&new_path, xpt_periph,
path->bus->path_id,
path->target->target_id,
path->device->lun_id);
-
if (status != CAM_REQ_CMP) {
- xpt_print(path, "xpt_scan_lun: can't compile path, "
+ xpt_print(path, "xpt_scan_lun: can't create path, "
"can't continue\n");
- free(request_ccb, M_CAMXPT);
- free(new_path, M_CAMXPT);
+ xpt_free_ccb(request_ccb);
return;
}
xpt_setup_ccb(&request_ccb->ccb_h, new_path, CAM_PRIORITY_XPT);
@@ -1524,9 +1515,9 @@ ata_scan_lun(struct cam_periph *periph, struct cam_path *path,
static void
xptscandone(struct cam_periph *periph, union ccb *done_ccb)
{
- xpt_release_path(done_ccb->ccb_h.path);
- free(done_ccb->ccb_h.path, M_CAMXPT);
- free(done_ccb, M_CAMXPT);
+
+ xpt_free_path(done_ccb->ccb_h.path);
+ xpt_free_ccb(done_ccb);
}
static struct cam_ed *
diff --git a/sys/cam/cam_xpt.c b/sys/cam/cam_xpt.c
index 152782e..bcd0278 100644
--- a/sys/cam/cam_xpt.c
+++ b/sys/cam/cam_xpt.c
@@ -3857,12 +3857,6 @@ xpt_bus_register(struct cam_sim *sim, device_t parent, u_int32_t bus)
/* Couldn't satisfy request */
return (CAM_RESRC_UNAVAIL);
}
- path = (struct cam_path *)malloc(sizeof(*path), M_CAMXPT, M_NOWAIT);
- if (path == NULL) {
- free(new_bus, M_CAMXPT);
- return (CAM_RESRC_UNAVAIL);
- }
-
if (strcmp(sim->sim_name, "xpt") != 0) {
sim->path_id =
xptpathid(sim->sim_name, sim->unit_number, sim->bus_id);
@@ -3896,7 +3890,7 @@ xpt_bus_register(struct cam_sim *sim, device_t parent, u_int32_t bus)
*/
new_bus->xport = &xport_default;
- status = xpt_compile_path(path, /*periph*/NULL, sim->path_id,
+ status = xpt_create_path(&path, /*periph*/NULL, sim->path_id,
CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD);
if (status != CAM_REQ_CMP) {
xpt_release_bus(new_bus);
diff --git a/sys/cam/scsi/scsi_xpt.c b/sys/cam/scsi/scsi_xpt.c
index dce4b0c..c381efc 100644
--- a/sys/cam/scsi/scsi_xpt.c
+++ b/sys/cam/scsi/scsi_xpt.c
@@ -2243,29 +2243,20 @@ scsi_scan_lun(struct cam_periph *periph, struct cam_path *path,
}
if (request_ccb == NULL) {
- request_ccb = malloc(sizeof(union ccb), M_CAMXPT, M_NOWAIT);
+ request_ccb = xpt_alloc_ccb_nowait();
if (request_ccb == NULL) {
xpt_print(path, "scsi_scan_lun: can't allocate CCB, "
"can't continue\n");
return;
}
- new_path = malloc(sizeof(*new_path), M_CAMXPT, M_NOWAIT);
- if (new_path == NULL) {
- xpt_print(path, "scsi_scan_lun: can't allocate path, "
- "can't continue\n");
- free(request_ccb, M_CAMXPT);
- return;
- }
- status = xpt_compile_path(new_path, xpt_periph,
+ status = xpt_create_path(&new_path, xpt_periph,
path->bus->path_id,
path->target->target_id,
path->device->lun_id);
-
if (status != CAM_REQ_CMP) {
- xpt_print(path, "scsi_scan_lun: can't compile path, "
+ xpt_print(path, "scsi_scan_lun: can't create path, "
"can't continue\n");
- free(request_ccb, M_CAMXPT);
- free(new_path, M_CAMXPT);
+ xpt_free_ccb(request_ccb);
return;
}
xpt_setup_ccb(&request_ccb->ccb_h, new_path, CAM_PRIORITY_XPT);
@@ -2304,9 +2295,9 @@ scsi_scan_lun(struct cam_periph *periph, struct cam_path *path,
static void
xptscandone(struct cam_periph *periph, union ccb *done_ccb)
{
- xpt_release_path(done_ccb->ccb_h.path);
- free(done_ccb->ccb_h.path, M_CAMXPT);
- free(done_ccb, M_CAMXPT);
+
+ xpt_free_path(done_ccb->ccb_h.path);
+ xpt_free_ccb(done_ccb);
}
static struct cam_ed *
OpenPOWER on IntegriCloud