#
b48735e5 |
| 10-Jul-2024 |
leixiang <leixiang@kylinos.cn> |
disk/core: Fix memory leakage in open all disks
Fix memory leakage in disk/core disk_image__open_all when malloc disk failed, should free the disks that already malloced.
Signed-off-by: Lei Xiang <
disk/core: Fix memory leakage in open all disks
Fix memory leakage in disk/core disk_image__open_all when malloc disk failed, should free the disks that already malloced.
Signed-off-by: Lei Xiang <leixiang@kylinos.cn> Suggested-by: Xie Ming <xieming@kylinos.cn> Suggested-by: Alexandru Elisei <alexandru.elisei@arm.com> Suggested-by: Will Deacon <will@kernel.org> Signed-off-by: Will Deacon <will@kernel.org>
show more ...
|
#
7bc3b5d7 |
| 06-Jun-2023 |
Jean-Philippe Brucker <jean-philippe@linaro.org> |
disk/core: Fix segfault on exit with SCSI
The SCSI backend doesn't call disk_image__new() so the disk ops are NULL. Check for this case on exit.
Signed-off-by: Jean-Philippe Brucker <jean-philippe@
disk/core: Fix segfault on exit with SCSI
The SCSI backend doesn't call disk_image__new() so the disk ops are NULL. Check for this case on exit.
Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org> Link: https://lore.kernel.org/r/20230606130426.978945-8-jean-philippe@linaro.org Signed-off-by: Will Deacon <will@kernel.org>
show more ...
|
#
145a86fe |
| 06-Jun-2023 |
Jean-Philippe Brucker <jean-philippe@linaro.org> |
virtio/scsi: Fix and simplify command-line
Fix and simplify the command-line parameter for virtio-scsi. Currently passing a "scsi:xxxx" parameter without the second "tpgt" argument causes kvmtool to
virtio/scsi: Fix and simplify command-line
Fix and simplify the command-line parameter for virtio-scsi. Currently passing a "scsi:xxxx" parameter without the second "tpgt" argument causes kvmtool to segfault. But only the "wwpn" parameter is necessary.
The tpgt parameter is ignored and was never used upstream. See linux/vhost_types.h:
* ABI Rev 0: July 2012 version starting point for v3.6-rc merge candidate + * RFC-v2 vhost-scsi userspace. Add GET_ABI_VERSION ioctl usage * ABI Rev 1: January 2013. Ignore vhost_tpgt field in struct vhost_scsi_target. * All the targets under vhost_wwpn can be seen and used by guset.
Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org> Link: https://lore.kernel.org/r/20230606130426.978945-7-jean-philippe@linaro.org Signed-off-by: Will Deacon <will@kernel.org>
show more ...
|
#
48427891 |
| 07-Jun-2022 |
Jean-Philippe Brucker <jean-philippe.brucker@arm.com> |
virtio/blk: Implement VIRTIO_F_ANY_LAYOUT feature
The current virtio-block implementation assumes that buffers have a specific layout (5.2.6.4 "Legacy Interface: Framing Requirements"). Modern virti
virtio/blk: Implement VIRTIO_F_ANY_LAYOUT feature
The current virtio-block implementation assumes that buffers have a specific layout (5.2.6.4 "Legacy Interface: Framing Requirements"). Modern virtio removes this layout constraint, so we have to be careful when reading buffers. Note that since the Linux driver uses the same layout as the legacy transport, arbitrary layouts were not actually tested.
Signed-off-by: Jean-Philippe Brucker <jean-philippe.brucker@arm.com> Link: https://lore.kernel.org/r/20220607170239.120084-16-jean-philippe.brucker@arm.com Signed-off-by: Will Deacon <will@kernel.org>
show more ...
|
#
39ab3a0b |
| 23-Sep-2021 |
Alexandru Elisei <alexandru.elisei@arm.com> |
Use kvm->nr_disks instead of kvm->cfg.image_count
A user can specify multiple disk images using the --disk/-d argument. The callback for the argument ends up in disk/core.c::calling disk_img_name_pa
Use kvm->nr_disks instead of kvm->cfg.image_count
A user can specify multiple disk images using the --disk/-d argument. The callback for the argument ends up in disk/core.c::calling disk_img_name_parser(), which increments kvm->cfg.image_count for each disk image.
Immediately after parsing the arguments in kvm_cmd_run_init(), kvm->nr_disks is set to kvm->cfg.image_count, effectively making kvm->nr_disks an alias for kvm->cfg.image_count, as image_count is never changed afterward.
Later on, the core disk code uses kvm->cfg.image_count when opening all the disk images, but kvm->nr_disks when closing them, which is inconsistent, but technically correct since they represent the same thing and have the same value.
Let's remove all this confusing usage and use only kvm->nr_disks to represent the number of disk images specified by the user.
While this technically means that kvmtool now supports up to INT_MAX disk images, in practice this is limited by MAX_DISK_IMAGES, which is equal to four. Which means there are no functional changes.
Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com> Link: https://lore.kernel.org/r/20210923144505.60776-6-alexandru.elisei@arm.com Signed-off-by: Will Deacon <will@kernel.org>
show more ...
|
#
2790307c |
| 04-Apr-2019 |
Jean-Philippe Brucker <jean-philippe.brucker@arm.com> |
disk/aio: Add wait() disk operation
Add a call into the disk layer to synchronize the AIO queue. Wait for all pending requests to complete. This will be necessary when resetting a virtqueue.
The wa
disk/aio: Add wait() disk operation
Add a call into the disk layer to synchronize the AIO queue. Wait for all pending requests to complete. This will be necessary when resetting a virtqueue.
The wait() operation isn't the same as flush(). A VIRTIO_BLK_T_FLUSH request ensures that any write request *that completed before the FLUSH is sent* is committed to permanent storage (e.g. written back from a write cache). But it doesn't do anything for requests that are still pending when the FLUSH is sent.
Avoid introducing a mutex on the io_submit() and io_getevents() paths, because it can lead to 30% throughput drop on heavy FIO jobs. Instead manage an inflight counter using compare-and-swap operations, which is simple enough as the caller doesn't submit new requests while it waits for the AIO queue to drain. The __sync_fetch_and_* operations are a bit rough since they use full barriers, but that didn't seem to introduce a performance regression.
Signed-off-by: Jean-Philippe Brucker <jean-philippe.brucker@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
show more ...
|
#
30a9aa69 |
| 04-Apr-2019 |
Jean-Philippe Brucker <jean-philippe.brucker@arm.com> |
disk/aio: Refactor AIO code
Move all AIO code to a separate file, disk/aio.c, to remove as much #ifdefs as possible. Split the raw read/write disk ops into async and sync, and choose which ones to u
disk/aio: Refactor AIO code
Move all AIO code to a separate file, disk/aio.c, to remove as much #ifdefs as possible. Split the raw read/write disk ops into async and sync, and choose which ones to use depending on CONFIG_HAS_AIO. Note that we fix raw_image__close() which incorrectly checked CONFIG_HAS_VIRTIO instead of CONFIG_HAS_AIO, and closed an unitialized disk->evt. A subsequent commit will complete this refactoring by fixing use of the 'async' disk attribute.
Reviewed-by: Andre Przywara <andre.przywara@arm.com> Signed-off-by: Jean-Philippe Brucker <jean-philippe.brucker@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
show more ...
|
#
5c5cae75 |
| 04-Apr-2019 |
Jean-Philippe Brucker <jean-philippe.brucker@arm.com> |
virtio/blk: Set VIRTIO_BLK_F_RO when the disk is read-only
Since we don't currently tell the guest when the disk backend is read-only, it will report any inconsistent read after write as an error. A
virtio/blk: Set VIRTIO_BLK_F_RO when the disk is read-only
Since we don't currently tell the guest when the disk backend is read-only, it will report any inconsistent read after write as an error. An image may be read-only either because user requested it on the command-line, or because write support isn't implemented. Pass the read-only attribute using the VIRTIO_BLK_F_RO feature.
Reviewed-by: Andre Przywara <andre.przywara@arm.com> Signed-off-by: Jean-Philippe Brucker <jean-philippe.brucker@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
show more ...
|
#
52c22e6e |
| 17-Jul-2015 |
Andre Przywara <andre.przywara@arm.com> |
use <poll.h> instead of <sys/poll.h>
The manpage of poll(2) states that the prototype of poll is defined in <poll.h>. Use that header file instead of <sys/poll.h> to allow compilation against musl-l
use <poll.h> instead of <sys/poll.h>
The manpage of poll(2) states that the prototype of poll is defined in <poll.h>. Use that header file instead of <sys/poll.h> to allow compilation against musl-libc.
Signed-off-by: Andre Przywara <andre.przywara@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
show more ...
|
#
69f50425 |
| 28-May-2014 |
Andreas Herrmann <andreas.herrmann@caviumnetworks.com> |
kvm tools: Fix print format warnings
This should fix following warnings
builtin-stat.c:93:3: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 2 has type '__u6
kvm tools: Fix print format warnings
This should fix following warnings
builtin-stat.c:93:3: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 2 has type '__u64' [-Wformat] builtin-run.c:188:4: warning: format '%Lu' expects argument of type 'long long unsigned int', but argument 3 has type '__u64' [-Wformat] builtin-run.c:554:3: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 2 has type 'u64' [-Wformat] builtin-run.c:554:3: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 3 has type 'u64' [-Wformat] builtin-run.c:645:3: warning: format '%Lu' expects argument of type 'long long unsigned int', but argument 4 has type 'u64' [-Wformat] disk/core.c:330:4: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 4 has type '__dev_t' [-Wformat] disk/core.c:330:4: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 5 has type '__dev_t' [-Wformat] disk/core.c:330:4: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 6 has type '__ino64_t' [-Wformat] mmio.c:134:5: warning: format '%llx' expects argument of type 'long long unsigned int', but argument 4 has type 'u64' [-Wformat] util/util.c:101:7: warning: format '%lld' expects argument of type 'long long int', but argument 3 has type 'u64' [-Wformat] util/util.c:113:7: warning: format '%lld' expects argument of type 'long long int', but argument 2 has type 'u64' [-Wformat] hw/pci-shmem.c:339:3: warning: format '%llx' expects argument of type 'long long unsigned int', but argument 2 has type 'u64' [-Wformat] hw/pci-shmem.c:340:3: warning: format '%llx' expects argument of type 'long long unsigned int', but argument 2 has type 'u64' [-Wformat]
as observed when compiling on mips64.
Signed-off-by: Andreas Herrmann <andreas.herrmann@caviumnetworks.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|
#
71bf426a |
| 20-Dec-2012 |
Sasha Levin <sasha.levin@oracle.com> |
kvm tools: remove unneeded check from disk code
We already know 'disk' is non-null.
Signed-off-by: Sasha Levin <sasha.levin@oracle.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
|
#
a4d8c55e |
| 24-Oct-2012 |
Sasha Levin <sasha.levin@oracle.com> |
kvm tools: Specify names for VM internal threads
Give threads a meaningful name. This makes debugging much easier, and everything else much prettier.
Suggested-by: Ingo Molnar <mingo@kernel.org> Si
kvm tools: Specify names for VM internal threads
Give threads a meaningful name. This makes debugging much easier, and everything else much prettier.
Suggested-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Sasha Levin <sasha.levin@oracle.com> [ penberg@kernel.org: specify vcpu names ] Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|
#
49a8afd1 |
| 17-Sep-2012 |
Sasha Levin <levinsasha928@gmail.com> |
kvm tools: use init/exit where possible
Switch to using init/exit calls instead of the repeating call blocks in builtin-run.
Signed-off-by: Sasha Levin <levinsasha928@gmail.com> Signed-off-by: Pekk
kvm tools: use init/exit where possible
Switch to using init/exit calls instead of the repeating call blocks in builtin-run.
Signed-off-by: Sasha Levin <levinsasha928@gmail.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|
#
3b55dcde |
| 05-Sep-2012 |
Sasha Levin <levinsasha928@gmail.com> |
kvm tools: disk image related cleanup
Move io debug delay into kvm_config, the parser out of builtin-run into the disk code and make the init/exit functions match the rest of the code in style.
Sig
kvm tools: disk image related cleanup
Move io debug delay into kvm_config, the parser out of builtin-run into the disk code and make the init/exit functions match the rest of the code in style.
Signed-off-by: Sasha Levin <levinsasha928@gmail.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|
#
a67da3be |
| 17-Aug-2012 |
Asias He <asias.hejun@gmail.com> |
kvm tools: Add initial virtio-scsi support
This patch brings virito-scsi support to kvm tool.
With the introduce of tcm_vhost (vhost-scsi)
tcm_vhost: Initial merge for vhost level target fabric
kvm tools: Add initial virtio-scsi support
This patch brings virito-scsi support to kvm tool.
With the introduce of tcm_vhost (vhost-scsi)
tcm_vhost: Initial merge for vhost level target fabric driver
we can implement virito-scsi by simply having vhost-scsi to handle the SCSI command.
Howto use: 1) Setup the tcm_vhost target through /sys/kernel/config
[Stefan Hajnoczi, Thanks for the script to setup tcm_vhost]
** Setup wwpn and tpgt $ wwpn="naa.0" $ tpgt=/sys/kernel/config/target/vhost/$wwpn/tpgt_0 $ nexus=$tpgt/nexus $ mkdir -p $tpgt $ echo -n $wwpn > $nexus
** Setup lun using /dev/ram $ n=0 $ lun=$tpgt/lun/lun_${n} $ data=/sys/kernel/config/target/core/iblock_0/data_${n} $ ram=/dev/ram${n} $ mkdir -p $lun $ mkdir -p $data $ echo -n udev_path=${ram} > $data/control $ echo -n 1 > $data/enable $ ln -s $data $lun
2) Run kvm tool with the new disk option '-d scsi:$wwpn:$tpgt', e.g $ lkvm run -k /boot/bzImage -d ~/img/sid.img -d scsi:naa.0:0
Signed-off-by: Asias He <asias.hejun@gmail.com> Cc: Nicholas A. Bellinger <nab@linux-iscsi.org> Cc: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> Cc: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|
#
5236b505 |
| 03-Aug-2012 |
Asias He <asias.hejun@gmail.com> |
kvm tools: Enable O_DIRECT support
With Direct I/O, file reads and writes go directly from the applications to the storage device, bypassing the operating system read and write caches. This is usefu
kvm tools: Enable O_DIRECT support
With Direct I/O, file reads and writes go directly from the applications to the storage device, bypassing the operating system read and write caches. This is useful for applications that manage their own caches.
Open a disk image with O_DIRECT: $ lkvm run -d ~/img/test.img,direct
The original readonly flag is still supported. Open a disk image with O_DIRECT and readonly: $ lkvm run -d ~/img/test.img,direct,ro
Signed-off-by: Asias He <asias.hejun@gmail.com> Acked-by: Sasha Levin <levinsasha928@gmail.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|
#
97f16d66 |
| 11-Jul-2012 |
Asias He <asias.hejun@gmail.com> |
kvm tools: Introduce struct disk_image_params
Introduce struct disk_image_params to contain all the disk image parameters. This is useful for adding more disk image parameters, e.g. disk image cache
kvm tools: Introduce struct disk_image_params
Introduce struct disk_image_params to contain all the disk image parameters. This is useful for adding more disk image parameters, e.g. disk image cache mode.
Signed-off-by: Asias He <asias.hejun@gmail.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|
#
fea74936 |
| 04-Jun-2012 |
Asias He <asias.hejun@gmail.com> |
kvm tools: Increase AIO_MAX to 256
The queue size for virtio_blk is 256 and AIO_MAX is 32, we might be short of available aio events if guest issues > 32 requests simultaneously. Following error is
kvm tools: Increase AIO_MAX to 256
The queue size for virtio_blk is 256 and AIO_MAX is 32, we might be short of available aio events if guest issues > 32 requests simultaneously. Following error is observed when guest running stressed I/O workload.
Info: disk_image__read error: total=-11
To fix this, let's increase the aio events limit.
Signed-off-by: Asias He <asias.hejun@gmail.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|
#
54c84566 |
| 05-Jun-2012 |
Asias He <asias.hejun@gmail.com> |
kvm tools: Code cleanup for disk/core.c
Signed-off-by: Asias He <asias.hejun@gmail.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
|
#
dcd3cd8e |
| 04-Jun-2012 |
Asias He <asias.hejun@gmail.com> |
kvm tools: Simplify disk read write function name
We read and write in sectors by default. It makes little sense to add the extra _sector string for read and write ops/function name.
Signed-off-by:
kvm tools: Simplify disk read write function name
We read and write in sectors by default. It makes little sense to add the extra _sector string for read and write ops/function name.
Signed-off-by: Asias He <asias.hejun@gmail.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|
#
9f9207c5 |
| 19-Dec-2011 |
Sasha Levin <levinsasha928@gmail.com> |
kvm tools: Fixes for disk image module
Fixes include: - Error handling - Cleanup - Standard init/uninit
Signed-off-by: Sasha Levin <levinsasha928@gmail.com>
|
#
599ed2a8 |
| 18-Dec-2011 |
Cyrill Gorcunov <gorcunov@gmail.com> |
kvm tools: Rename pr_error to pr_err to follow kernel convention
The kernel already has pr_err helper lets do the same.
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com> Signed-off-by: Pekka Enbe
kvm tools: Rename pr_error to pr_err to follow kernel convention
The kernel already has pr_err helper lets do the same.
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|
#
618cbb7c |
| 29-Nov-2011 |
Asias He <asias.hejun@gmail.com> |
kvm tools: Get multiple io events at a time
This patch reduces the number of calls to io_getevents() by getting multiple io events at a time instead of one in disk image thread.
Signed-off-by: Asia
kvm tools: Get multiple io events at a time
This patch reduces the number of calls to io_getevents() by getting multiple io events at a time instead of one in disk image thread.
Signed-off-by: Asias He <asias.hejun@gmail.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|
#
f41a132b |
| 02-Nov-2011 |
Sasha Levin <levinsasha928@gmail.com> |
kvm tools: Use native vectored AIO in virtio-blk
This patch hooks AIO support into virtio-blk, allowing for faster IO.
Signed-off-by: Sasha Levin <levinsasha928@gmail.com> [ penberg@kernel.org: wra
kvm tools: Use native vectored AIO in virtio-blk
This patch hooks AIO support into virtio-blk, allowing for faster IO.
Signed-off-by: Sasha Levin <levinsasha928@gmail.com> [ penberg@kernel.org: wrap libaio include with CONFIG_HAS_AIO ] Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|
#
8b52f877 |
| 02-Nov-2011 |
Sasha Levin <levinsasha928@gmail.com> |
kvm tools: Split io request from completion
This patch splits IO request processing from completion notification.
Signed-off-by: Sasha Levin <levinsasha928@gmail.com> Signed-off-by: Pekka Enberg <p
kvm tools: Split io request from completion
This patch splits IO request processing from completion notification.
Signed-off-by: Sasha Levin <levinsasha928@gmail.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|