qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: [PATCH 0/3] add TRIM/UNMAP support, v4


From: Christoph Hellwig
Subject: [Qemu-devel] Re: [PATCH 0/3] add TRIM/UNMAP support, v4
Date: Thu, 16 Dec 2010 19:36:14 +0100
User-agent: Mutt/1.3.28i

This patchset adds support for the SCSI WRITE SAME with unmap command,
which allows reclaiming free space from a backing image.

The user facing implementation is pretty complete, but not really
efficient because the underlying bdrv_discard implementation doesn't
use the aio implementation yet.  The reason for that is that the SCSI
layer doesn't really allow any asynchronous commands except for
READ/WRITE by design.  The only support backend so far is the XFS hole
punching ioctl, but others can be added easily when they become
available.  A virtio implementation for a discard command would also
be pretty easy, but until we actually support a better backend then
a plain sparse file it's not worth using for production enviroments
anyway, but more for playing with the thin provisioning infrastructure,
or observing guest behaviour when TRIM / unmap is supported.

If the support is enabled and the backend doesn't support hole punching
the WRITE SAME command becomes a no-op so that migration from
hosts supporting or not supporting it works.

Version 4:
        - incorporate Kevin's review comments for the scsi patch
        - update to the current block queue
        - drop ide TRIM support, as it doesn't easily port to the
          refactoring of the IDE code

Version 3:
        - refactor IDE dma support code
        - proper brace obsfucation
        - fix compile without xfs headers
        - use bool instead of int for a one-byte flag
 
Version 2:
        - replace tabs with spaces
        - return -ENOMEDIUM from bdrv_discard if there's no driver
          assigned
        - actually list the TP EVPD page as supported when querying
          for supported EVPD pages



reply via email to

[Prev in Thread] Current Thread [Next in Thread]