summaryrefslogtreecommitdiffstats
path: root/sys/amd64/acpica
diff options
context:
space:
mode:
authorgibbs <gibbs@FreeBSD.org>2012-02-16 21:58:47 +0000
committergibbs <gibbs@FreeBSD.org>2012-02-16 21:58:47 +0000
commita50c43eae7b499420b1a953487a5de0ad2e49464 (patch)
treea78b6e8f60d0f3364102d8e597b56d09b5d0b34e /sys/amd64/acpica
parent1b7653a401012eee28f32c7e5c0137b06516f3a1 (diff)
downloadFreeBSD-src-a50c43eae7b499420b1a953487a5de0ad2e49464.zip
FreeBSD-src-a50c43eae7b499420b1a953487a5de0ad2e49464.tar.gz
Fix a bug in the calculation of the maximum I/O request size.
The previous code did not limit the I/O request size based on the maximum number of segments supported by the back-end. In current practice, since the only back-end supporting chained requests is the FreeBSD implementation, this limit was never exceeded. sys/dev/xen/blkfront/block.h: Add two macros, XBF_SEGS_TO_SIZE() and XBF_SIZE_TO_SEGS(), to centralize the logic of reserving a segment to deal with non-page-aligned I/Os. sys/dev/xen/blkfront/blkfront.c: o When negotiating transfer parameters, limit the max_request_size we use and publish, if it is greater than the maximum, unaligned, I/O we can support with the number of segments advertised by the backend. o Don't unilaterally reduce the I/O size published to the disk layer by a single page. max_request_size is already properly limited in the transfer parameter negotiation code. o Fix typos in printf strings: "max_requests_segments" -> "max_request_segments" "specificed" -> "specified" MFC after: 1 day
Diffstat (limited to 'sys/amd64/acpica')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud