Index: arc.c =================================================================== RCS file: /cvs/src/sys/dev/pci/arc.c,v retrieving revision 1.103 diff -u -p -r1.103 arc.c --- arc.c 13 Jul 2014 23:10:23 -0000 1.103 +++ arc.c 9 Sep 2014 05:52:14 -0000 @@ -29,6 +29,7 @@ #include #include #include +#include #include @@ -824,9 +825,13 @@ arc_attach(struct device *parent, struct * interface relies on being able to sleep, so we need to use a thread * to do the work. */ - if (scsi_task(arc_create_sensors, sc, NULL, 1) != 0) - printf("%s: unable to schedule arc_create_sensors as a " - "scsi task", DEVNAME(sc)); + { + struct task *t; + t = malloc(sizeof(*t), M_TEMP, M_WAITOK); + + task_set(t, arc_create_sensors, sc, t); + task_add(systq, t); + } #endif #endif @@ -2596,12 +2601,15 @@ arc_wait(struct arc_softc *sc) #ifndef SMALL_KERNEL void -arc_create_sensors(void *xsc, void *arg) +arc_create_sensors(void *xsc, void *xt) { struct arc_softc *sc = xsc; + struct task *t = xt; struct bioc_inq bi; struct bioc_vol bv; int i; + + free(t, M_TEMP, sizeof(*t)); DPRINTF("%s: arc_create_sensors\n", DEVNAME(sc)); /*