diff options
author | smh <smh@FreeBSD.org> | 2014-04-30 17:46:29 +0000 |
---|---|---|
committer | smh <smh@FreeBSD.org> | 2014-04-30 17:46:29 +0000 |
commit | 14906a620b6524bb6bd3f17265e6c4464f7e31d1 (patch) | |
tree | 85e14bcb4f575216f44ab083c3402c7352507c9f /contrib/libucl | |
parent | 6429f5f6361b358fde4f2643463a38637e700f1b (diff) | |
download | FreeBSD-src-14906a620b6524bb6bd3f17265e6c4464f7e31d1.zip FreeBSD-src-14906a620b6524bb6bd3f17265e6c4464f7e31d1.tar.gz |
Reintroduce priority for the TRIM ZIOs instead of using the "NOW" priority
The changes how TRIM requests are generated to use ZIO_TYPE_FREE + a priority
instead of ZIO_TYPE_IOCTL, until processed by vdev_geom; only then is it
translated the required geom values. This reduces the amount of changes
required for FREE requests to be supported by the new IO scheduler. This
also eliminates the need for a specific DKIOCTRIM.
Also fixed FREE vdev child IO's from running ZIO_STAGE_VDEV_IO_DONE as part
of their schedule.
As the new IO scheduler can result in a request to execute one type of IO to
actually run a different type of IO it requires that zio_trim requests are
processed without holding the trim map lock (tm->tm_lock), as the free request
execute call may result in write request running hence triggering a
trim_map_write_start call, which takes the trim map lock and hence would result
in recused on no-recursive sx lock.
This is based off avg's original work, so credit to him.
MFC after: 1 month
Diffstat (limited to 'contrib/libucl')
0 files changed, 0 insertions, 0 deletions