OSDN Git Service

qcow2: Switch L1 table in a single sequence
authorMax Reitz <mreitz@redhat.com>
Mon, 30 Sep 2013 15:57:21 +0000 (17:57 +0200)
committerStefan Hajnoczi <stefanha@redhat.com>
Wed, 2 Oct 2013 13:38:29 +0000 (15:38 +0200)
commitfda74f826baec78d685e5a87fd8a95bfb7bb2243
tree372fd757e632a438e57ea4088f00845f3ed64e5f
parent5641bf405608cc89578fafed8ec689a19046285a
qcow2: Switch L1 table in a single sequence

Switching the L1 table in memory should be an atomic operation, as far
as possible. Calling qcow2_free_clusters on the old L1 table on disk is
not a good idea when the old L1 table is no longer valid and the address
to the new one hasn't yet been written into the corresponding
BDRVQcowState field. To be more specific, this can lead to segfaults due
to qcow2_check_metadata_overlap trying to access the L1 table during the
free operation.

Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
block/qcow2-cluster.c