• P
    block/dmg: support bzip2 block entry types · 6b383c08
    Peter Wu 提交于
    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: NPeter Wu <peter@lekensteyn.nl>
    Reviewed-by: NJohn Snow <jsnow@redhat.com>
    Acked-by: NPaolo Bonzini <pbonzini@redhat.com>
    Message-id: 1420566495-13284-12-git-send-email-peter@lekensteyn.nl
    Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: NKevin Wolf <kwolf@redhat.com>
    6b383c08
configure 143.4 KB