Go ahead and completely fix the ata_params before calling the veto
function. This breaks nothing that uses it in the tree since ata_params is ignored in storvsc_ada_probe_veto which is the only in-tree consumer.
This commit is contained in:
parent
0a944371e8
commit
161d2a1796
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=349339
@ -896,22 +896,14 @@ device_fail: if ((path->device->flags & CAM_DEV_UNCONFIGURED) == 0)
|
|||||||
int16_t *ptr;
|
int16_t *ptr;
|
||||||
int veto = 0;
|
int veto = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Convert to host byte order, and fix the strings.
|
||||||
|
*/
|
||||||
ident_buf = &softc->ident_data;
|
ident_buf = &softc->ident_data;
|
||||||
for (ptr = (int16_t *)ident_buf;
|
for (ptr = (int16_t *)ident_buf;
|
||||||
ptr < (int16_t *)ident_buf + sizeof(struct ata_params)/2; ptr++) {
|
ptr < (int16_t *)ident_buf + sizeof(struct ata_params)/2; ptr++) {
|
||||||
*ptr = le16toh(*ptr);
|
*ptr = le16toh(*ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Allow others to veto this ATA disk attachment. This
|
|
||||||
* is mainly used by VMs, whose disk controllers may
|
|
||||||
* share the disks with the simulated ATA controllers.
|
|
||||||
*/
|
|
||||||
EVENTHANDLER_INVOKE(ada_probe_veto, path, ident_buf, &veto);
|
|
||||||
if (veto) {
|
|
||||||
goto device_fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strncmp(ident_buf->model, "FX", 2) &&
|
if (strncmp(ident_buf->model, "FX", 2) &&
|
||||||
strncmp(ident_buf->model, "NEC", 3) &&
|
strncmp(ident_buf->model, "NEC", 3) &&
|
||||||
strncmp(ident_buf->model, "Pioneer", 7) &&
|
strncmp(ident_buf->model, "Pioneer", 7) &&
|
||||||
@ -926,6 +918,17 @@ device_fail: if ((path->device->flags & CAM_DEV_UNCONFIGURED) == 0)
|
|||||||
ata_bpack(ident_buf->revision, ident_buf->revision, sizeof(ident_buf->revision));
|
ata_bpack(ident_buf->revision, ident_buf->revision, sizeof(ident_buf->revision));
|
||||||
ata_btrim(ident_buf->serial, sizeof(ident_buf->serial));
|
ata_btrim(ident_buf->serial, sizeof(ident_buf->serial));
|
||||||
ata_bpack(ident_buf->serial, ident_buf->serial, sizeof(ident_buf->serial));
|
ata_bpack(ident_buf->serial, ident_buf->serial, sizeof(ident_buf->serial));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Allow others to veto this ATA disk attachment. This
|
||||||
|
* is mainly used by VMs, whose disk controllers may
|
||||||
|
* share the disks with the simulated ATA controllers.
|
||||||
|
*/
|
||||||
|
EVENTHANDLER_INVOKE(ada_probe_veto, path, ident_buf, &veto);
|
||||||
|
if (veto) {
|
||||||
|
goto device_fail;
|
||||||
|
}
|
||||||
|
|
||||||
/* Device may need spin-up before IDENTIFY become valid. */
|
/* Device may need spin-up before IDENTIFY become valid. */
|
||||||
if ((ident_buf->specconf == 0x37c8 ||
|
if ((ident_buf->specconf == 0x37c8 ||
|
||||||
ident_buf->specconf == 0x738c) &&
|
ident_buf->specconf == 0x738c) &&
|
||||||
|
Loading…
Reference in New Issue
Block a user