Searched hist:"51762288 b41f59d027073c404a29256fc4d4540e" (Results 1 – 1 of 1) sorted by relevance
/openbmc/qemu/ |
H A D | block.c | diff 51762288b41f59d027073c404a29256fc4d4540e Mon Apr 19 10:56:41 CDT 2010 Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> block: Cache total_sectors to reduce bdrv_getlength calls
The BlockDriver bdrv_getlength function is called from the I/O code path when checking that the request falls within the device. Unfortunately this involves an lseek system call in the raw protocol; every read or write request will incur this lseek cost.
Jan Kiszka <jan.kiszka@siemens.com> identified this issue and its latency overhead. This patch caches device length in the existing total_sectors variable so lseek calls can be avoided for fixed size devices.
Growable devices fall back to the full bdrv_getlength code path because I have not added logic to detect extending the size of the device in a write.
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|