diff options
author | mav <mav@FreeBSD.org> | 2013-08-05 11:48:40 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2013-08-05 11:48:40 +0000 |
commit | bbfed93309ad0e43fcd90d67e5ba66ff86d113ff (patch) | |
tree | ad49b3f2fe36aff83e041ef6aa15d048ab38b893 /sys/vm/vm_glue.c | |
parent | 08061c3f1e43cdc5bba4b98a08da51432d3ba18c (diff) | |
download | FreeBSD-src-bbfed93309ad0e43fcd90d67e5ba66ff86d113ff.zip FreeBSD-src-bbfed93309ad0e43fcd90d67e5ba66ff86d113ff.tar.gz |
MFprojects/camlock r249505:
Change CCB queue resize logic to be able safely handle overallocations:
- (re)allocate queue space in power of 2 chunks with 64 elements minimum
and never shrink it; with only 4/8 bytes per element size is insignificant.
- automatically reallocate the queue to double size if it is overflowed.
- if queue reallocation failed, store extra CCBs in unsorted TAILQ,
fetching them back as soon as some queue element is freed.
To free space in CCB for TAILQ linking, change highpowerq from keeping
high-power CCBs to keeping devices frozen due to high-power CCBs.
This encloses all pieces of queue resize logic inside of cam_queue.[ch],
removing some not obvious duties from xpt_release_ccb().
Diffstat (limited to 'sys/vm/vm_glue.c')
0 files changed, 0 insertions, 0 deletions