Commit 1b2eff62 authored by Stefan Hajnoczi's avatar Stefan Hajnoczi Committed by Kevin Wolf
Browse files

qemu-iotests: add qcow2.py set-feature-bit command



This new command sets feature bits in the image file header:

  qcow2.py set-feature-bit incompatible|compatible|autoclear <bit>

The bit number must be in the range [0, 64).

Signed-off-by: default avatarStefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
parent 8b9ef60d
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -181,10 +181,33 @@ def cmd_del_header_ext(fd, magic):

    h.update(fd)

def cmd_set_feature_bit(fd, group, bit):
    try:
        bit = int(bit, 0)
        if bit < 0 or bit >= 64:
            raise ValueError
    except:
        print "'%s' is not a valid bit number in range [0, 64)" % bit
        sys.exit(1)

    h = QcowHeader(fd)
    if group == 'incompatible':
        h.incompatible_features |= 1 << bit
    elif group == 'compatible':
        h.compatible_features |= 1 << bit
    elif group == 'autoclear':
        h.autoclear_features |= 1 << bit
    else:
        print "'%s' is not a valid group, try 'incompatible', 'compatible', or 'autoclear'" % group
        sys.exit(1)

    h.update(fd)

cmds = [
    [ 'dump-header',    cmd_dump_header,    0, 'Dump image header and header extensions' ],
    [ 'add-header-ext', cmd_add_header_ext, 2, 'Add a header extension' ],
    [ 'del-header-ext', cmd_del_header_ext, 1, 'Delete a header extension' ],
    [ 'set-feature-bit', cmd_set_feature_bit, 2, 'Set a feature bit'],
]

def main(filename, cmd, args):