Completely skip cache flushing for not supporting log devices.
MFC after: 2 weeks Sponsored by: iXsystems, Inc.
This commit is contained in:
parent
55d5acd163
commit
3ef0c861a5
@ -838,7 +838,7 @@ zil_flush_vdevs(zilog_t *zilog)
|
||||
avl_tree_t *t = &zilog->zl_vdev_tree;
|
||||
void *cookie = NULL;
|
||||
zil_vdev_node_t *zv;
|
||||
zio_t *zio;
|
||||
zio_t *zio = NULL;
|
||||
|
||||
ASSERT(zilog->zl_writer);
|
||||
|
||||
@ -851,12 +851,13 @@ zil_flush_vdevs(zilog_t *zilog)
|
||||
|
||||
spa_config_enter(spa, SCL_STATE, FTAG, RW_READER);
|
||||
|
||||
zio = zio_root(spa, NULL, NULL, ZIO_FLAG_CANFAIL);
|
||||
|
||||
while ((zv = avl_destroy_nodes(t, &cookie)) != NULL) {
|
||||
vdev_t *vd = vdev_lookup_top(spa, zv->zv_vdev);
|
||||
if (vd != NULL)
|
||||
if (vd != NULL && !vd->vdev_nowritecache) {
|
||||
if (zio == NULL)
|
||||
zio = zio_root(spa, NULL, NULL, ZIO_FLAG_CANFAIL);
|
||||
zio_flush(zio, vd);
|
||||
}
|
||||
kmem_free(zv, sizeof (*zv));
|
||||
}
|
||||
|
||||
@ -864,7 +865,8 @@ zil_flush_vdevs(zilog_t *zilog)
|
||||
* Wait for all the flushes to complete. Not all devices actually
|
||||
* support the DKIOCFLUSHWRITECACHE ioctl, so it's OK if it fails.
|
||||
*/
|
||||
(void) zio_wait(zio);
|
||||
if (zio)
|
||||
(void) zio_wait(zio);
|
||||
|
||||
spa_config_exit(spa, SCL_STATE, FTAG);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user