[dm-devel] [PATCH] dm snapshot: allow live exception store handover between tables

Mikulas Patocka mpatocka at redhat.com
Wed Nov 11 03:26:25 UTC 2009


> +	/*
> +	 * 'is_handover_destination' denotes another snapshot with the same
> +	 * cow block device (as identified with find_snapshot_using_cow)
> +	 * will hand over its exception store to this snapshot.
> +	 *
> +	 * 'is_handover_destination' is set in snapshot_ctr if an existing
> +	 * snapshot has the same cow device. The handover is performed,
> +	 * and 'is_handover_destination' is cleared, when either of the
> +	 * following occurs:
> +	 * - src (old) snapshot, that is handing over, is destructed
> +	 * - dest (new) snapshot, that is accepting the handover, is resumed
> +	 */
> +	int is_handover_destination;
> +
> +	/*
> +	 * reference to the other snapshot that will participate in the
> +	 * exception store handover; src references dest, dest references src
> +	 */
> +	struct dm_snapshot *handover_snap;

Hi

Please drop snapshot-linking through this "handover_snap" field, it will 
create real or possible problems with locking or with dangling pointers 
(i.e. are both properly locked? Which to lock first? If you destroy a 
snapshot, you must check if something links to it, etc. --- these problems 
could be solved, but if they can be avoided by dropping linking, it's 
better to avoid them).

When you are about to do a handover (Alasdair is arranging generic dm core 
do handover only un resume), just search for a possible handover candidate 
with find_snapshot_using_cow.

Mikulas




More information about the dm-devel mailing list