6b383c08c4
This patch adds support for bzip2-compressed block entries as introduced with OS X 10.4 (source: https://en.wikipedia.org/wiki/Apple_Disk_Image). It was tested against a 5.2G "OS X Yosemite" installation image which stores the BLXX block in the XML property list (instead of resource forks) and has over 5k chunks. New configure entries are added (--enable-bzip2 / --disable-bzip2) to control inclusion of bzip2 functionality (which requires linking against libbz2). The help message suggests that this option is needed for DMG files, but the tests are generic enough that other parts of QEMU can use bzip2 if needed. The identifiers are based on http://newosxbook.com/DMG.html. The decompression routines are based on the zlib case, but as there is no way to reset the decompression state (unlike zlib), memory is allocated and deallocated for every decompression. This should not be problematic as the decompression takes most of the time and as blocks are typically about/over 1 MiB in size, only one allocation is done every 2000 sectors. Signed-off-by: Peter Wu <peter@lekensteyn.nl> Reviewed-by: John Snow <jsnow@redhat.com> Acked-by: Paolo Bonzini <pbonzini@redhat.com> Message-id: 1420566495-13284-12-git-send-email-peter@lekensteyn.nl Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
43 lines
1.6 KiB
Makefile
43 lines
1.6 KiB
Makefile
block-obj-y += raw_bsd.o qcow.o vdi.o vmdk.o cloop.o dmg.o bochs.o vpc.o vvfat.o
|
|
block-obj-y += qcow2.o qcow2-refcount.o qcow2-cluster.o qcow2-snapshot.o qcow2-cache.o
|
|
block-obj-y += qed.o qed-gencb.o qed-l2-cache.o qed-table.o qed-cluster.o
|
|
block-obj-y += qed-check.o
|
|
block-obj-$(CONFIG_VHDX) += vhdx.o vhdx-endian.o vhdx-log.o
|
|
block-obj-$(CONFIG_QUORUM) += quorum.o
|
|
block-obj-y += parallels.o blkdebug.o blkverify.o
|
|
block-obj-y += block-backend.o snapshot.o qapi.o
|
|
block-obj-$(CONFIG_WIN32) += raw-win32.o win32-aio.o
|
|
block-obj-$(CONFIG_POSIX) += raw-posix.o
|
|
block-obj-$(CONFIG_LINUX_AIO) += linux-aio.o
|
|
block-obj-y += null.o mirror.o
|
|
|
|
block-obj-y += nbd.o nbd-client.o sheepdog.o
|
|
block-obj-$(CONFIG_LIBISCSI) += iscsi.o
|
|
block-obj-$(CONFIG_LIBNFS) += nfs.o
|
|
block-obj-$(CONFIG_CURL) += curl.o
|
|
block-obj-$(CONFIG_RBD) += rbd.o
|
|
block-obj-$(CONFIG_GLUSTERFS) += gluster.o
|
|
block-obj-$(CONFIG_ARCHIPELAGO) += archipelago.o
|
|
block-obj-$(CONFIG_LIBSSH2) += ssh.o
|
|
block-obj-y += accounting.o
|
|
block-obj-y += write-threshold.o
|
|
|
|
common-obj-y += stream.o
|
|
common-obj-y += commit.o
|
|
common-obj-y += backup.o
|
|
|
|
iscsi.o-cflags := $(LIBISCSI_CFLAGS)
|
|
iscsi.o-libs := $(LIBISCSI_LIBS)
|
|
curl.o-cflags := $(CURL_CFLAGS)
|
|
curl.o-libs := $(CURL_LIBS)
|
|
rbd.o-cflags := $(RBD_CFLAGS)
|
|
rbd.o-libs := $(RBD_LIBS)
|
|
gluster.o-cflags := $(GLUSTERFS_CFLAGS)
|
|
gluster.o-libs := $(GLUSTERFS_LIBS)
|
|
ssh.o-cflags := $(LIBSSH2_CFLAGS)
|
|
ssh.o-libs := $(LIBSSH2_LIBS)
|
|
archipelago.o-libs := $(ARCHIPELAGO_LIBS)
|
|
dmg.o-libs := $(BZIP2_LIBS)
|
|
qcow.o-libs := -lz
|
|
linux-aio.o-libs := -laio
|