qemu-e2k/qga
Paolo Bonzini eab5fd5989 qemu-ga: add guest-fstrim command
FITRIM is a mounted filesystem feature to discard (or "trim") blocks which
are not in use by the filesystem. This is useful for solid-state drives
(SSDs) and thinly-provisioned storage.  Provide access to the feature
from the host so that filesystems can be trimmed periodically or before
migration.

Here is an example using scsi_debug:

    # modprobe scsi_debug lbpu=1 lbpws=1
    # sg_vpd -p0xb2 /dev/sdb
    Logical block provisioning VPD page (SBC):
      Unmap command supported (LBPU): 1
      Write same (16) with unmap bit supported (LBWS): 1
      Write same (10) with unmap bit supported (LBWS10): 0
    # mke2fs /dev/sdb
    # cat /sys/bus/pseudo/drivers/scsi_debug/map
    1-616,16257-16383
    # mount /dev/sdb /run/media/pbonzini/test
    # dd if=/dev/zero of=/run/media/pbonzini/test/file
    # cat map
    1-616,645-1588,1599-4026,4029-16383
    # rm /run/media/pbonzini/test/file
    # ./qemu-ga /dev/fd/0
    {"execute":"guest-fstrim"}
    {"return": {}}
    # cat map
    1-612

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Luiz Capitulino <lcapitulino@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
2012-06-21 17:59:27 -05:00
..
channel-posix.c qemu-ga: Implement alternative to O_ASYNC 2012-05-01 10:49:23 +00:00
channel-win32.c qemu-ga: for w32, fix leaked handle ov.hEvent in ga_channel_write() 2012-03-19 11:31:04 +00:00
channel.h qemu-ga: move channel/transport functionality into wrapper class 2012-02-23 15:40:16 -06:00
commands-posix.c qemu-ga: add guest-fstrim command 2012-06-21 17:59:27 -05:00
commands-win32.c qemu-ga: add guest-fstrim command 2012-06-21 17:59:27 -05:00
commands.c qemu-ga: align versioning with QEMU_VERSION 2012-05-15 09:17:06 -05:00
guest-agent-command-state.c Use glib memory allocation and free functions 2011-08-20 23:01:08 -05:00
guest-agent-core.h qemu-ga: align versioning with QEMU_VERSION 2012-05-15 09:17:06 -05:00
Makefile.objs build: move qga/ objects to nested Makefile.objs 2012-06-07 09:21:16 +02:00
service-win32.c qemu-ga: add Windows service integration 2012-02-23 15:43:50 -06:00
service-win32.h qemu-ga: add Windows service integration 2012-02-23 15:43:50 -06:00