diff options
author | Ned Bass <[email protected]> | 2014-01-15 13:52:57 -0800 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2014-01-23 09:58:07 -0800 |
commit | 04aa2de8f788654dda15e0b598fc874915b0fc06 (patch) | |
tree | 243dd7d45fa5dcb3559f5a56980b3a91b72882d3 | |
parent | 3566d5c7c3cb415a53218251fc0247da55dfde46 (diff) |
vdev_file_io_start() to use taskq_dispatch(TQ_PUSHPAGE)
The vdev_file_io_start() function may be processing a zio that the
txg_sync thread is waiting on. In this case it is not safe to perform
memory allocations that may generate new I/O since this could cause a
deadlock. To avoid this, call taskq_dispatch() with TQ_PUSHPAGE
instead of TQ_SLEEP.
Signed-off-by: Ned Bass <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Issue #1928
-rw-r--r-- | module/zfs/vdev_file.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/module/zfs/vdev_file.c b/module/zfs/vdev_file.c index c0d062b0e..858582aca 100644 --- a/module/zfs/vdev_file.c +++ b/module/zfs/vdev_file.c @@ -185,7 +185,7 @@ vdev_file_io_start(zio_t *zio) } VERIFY3U(taskq_dispatch(system_taskq, vdev_file_io_strategy, zio, - TQ_SLEEP), !=, 0); + TQ_PUSHPAGE), !=, 0); return (ZIO_PIPELINE_STOP); } |