Replay r349342 by imp accidentally reverted by r349352

Use the cam_ed copy of ata_params rather than malloc and freeing
memory for it. This reaches into internal bits of xpt a little, and
I'll clean that up later.
This commit is contained in:
Warner Losh 2019-06-25 06:14:31 +00:00
parent 91211c46ac
commit a9154c1c83

View File

@ -64,6 +64,9 @@ __FBSDID("$FreeBSD$");
#include <cam/cam_ccb.h> #include <cam/cam_ccb.h>
#include <cam/cam_periph.h> #include <cam/cam_periph.h>
#include <cam/cam_xpt_periph.h> #include <cam/cam_xpt_periph.h>
#ifdef _KERNEL
#include <cam/cam_xpt_internal.h>
#endif /* _KERNEL */
#include <cam/cam_sim.h> #include <cam/cam_sim.h>
#include <cam/cam_iosched.h> #include <cam/cam_iosched.h>
@ -3613,15 +3616,7 @@ dastart(struct cam_periph *periph, union ccb *start_ccb)
break; break;
} }
ata_params = (struct ata_params*) ata_params = &periph->path->device->ident_data;
malloc(sizeof(*ata_params), M_SCSIDA,M_NOWAIT|M_ZERO);
if (ata_params == NULL) {
xpt_print(periph->path, "Couldn't malloc ata_params "
"data\n");
/* da_free_periph??? */
break;
}
scsi_ata_identify(&start_ccb->csio, scsi_ata_identify(&start_ccb->csio,
/*retries*/da_retry_count, /*retries*/da_retry_count,
@ -5294,7 +5289,6 @@ dadone_probeata(struct cam_periph *periph, union ccb *done_ccb)
} }
} }
free(ata_params, M_SCSIDA);
if ((softc->zone_mode == DA_ZONE_HOST_AWARE) if ((softc->zone_mode == DA_ZONE_HOST_AWARE)
|| (softc->zone_mode == DA_ZONE_HOST_MANAGED)) { || (softc->zone_mode == DA_ZONE_HOST_MANAGED)) {
/* /*