[dm-devel] snapshot of mirror (was: possible regression by the barrier patch in 2.6.30-rc2)
Mikulas Patocka
mpatocka at redhat.com
Fri Nov 6 02:42:13 UTC 2009
> Anyway, suspend unconditionally purges all I/Os from target drivers. All
> that this "noflush" flag does is that it allows the I/O to be held and
> requeued for new dm table incarnation, if the target requests it with
> DM_MAPIO_REQUEUE (dm-raid1 and dm-multipath do it). If no target returns
> DM_MAPIO_REQUEUE, then "flush" and "noflush" suspend is equivalent.
Hmm, I think it makes snapshot-of-mirrors implementation impossible.
If we create the first snapshot or delete the last snapshot, we must
inevitably suspend the underlying origin device. If we do a "flush"
suspend and mirror log or leg fails at the same time, the i/o would be
incorrectly returned with -EIO. If we do a "noflush" suspend, we couldn't
synchronize the filesystem on snapshot creation and we couldn't get the
I/Os out of origin target (because they would be queued in the underlying
-real device).
Mirrors must to be self-sufficient (i.e. handle errors on their own
without queuing i/os and needing immediate action of dmeventd) to enable
snapshots-of-mirrors work. Jon, will your log duplication work meet this
requirement?
Mikulas
More information about the dm-devel
mailing list