| 1312 | } |
| 1313 | |
| 1314 | zio_t * |
| 1315 | zio_ioctl(zio_t *pio, spa_t *spa, vdev_t *vd, int cmd, |
| 1316 | zio_done_func_t *done, void *private, enum zio_flag flags) |
| 1317 | { |
| 1318 | zio_t *zio; |
| 1319 | int c; |
| 1320 | |
| 1321 | if (vd->vdev_children == 0) { |
| 1322 | zio = zio_create(pio, spa, 0, NULL, NULL, 0, 0, done, private, |
| 1323 | ZIO_TYPE_IOCTL, ZIO_PRIORITY_NOW, flags, vd, 0, NULL, |
| 1324 | ZIO_STAGE_OPEN, ZIO_IOCTL_PIPELINE); |
| 1325 | |
| 1326 | zio->io_cmd = cmd; |
| 1327 | } else { |
| 1328 | zio = zio_null(pio, spa, NULL, NULL, NULL, flags); |
| 1329 | |
| 1330 | for (c = 0; c < vd->vdev_children; c++) |
| 1331 | zio_nowait(zio_ioctl(zio, spa, vd->vdev_child[c], cmd, |
| 1332 | done, private, flags)); |
| 1333 | } |
| 1334 | |
| 1335 | return (zio); |
| 1336 | } |
| 1337 | |
| 1338 | zio_t * |
| 1339 | zio_trim(zio_t *pio, vdev_t *vd, uint64_t offset, uint64_t size, |
no test coverage detected