From: Zdenek Kabelac <zkabelac@redhat.com>
To: lvm-devel@redhat.com
Subject: [PATCH 02/13] Replicator: add libdm support
Date: Fri, 09 Oct 2009 14:42:36 +0200 [thread overview]
Message-ID: <4ACF2FBC.2000100@redhat.com> (raw)
In-Reply-To: <874oqa9q7t.fsf@twilight.int.mornfall.net.>
Dne 8.10.2009 11:42, Petr Rockai napsal(a):
> Hi,
>
> Alasdair G Kergon <agk@redhat.com> writes:
>> On Mon, Oct 05, 2009 at 04:00:29PM +0200, Zdenek Kabelac wrote:
>>> int dm_tree_suspend_children(struct dm_tree_node *dnode,
>>> - const char *uuid_prefix,
>>> - size_t uuid_prefix_len);
>>> + const char *uuid_prefix,
>>> + size_t uuid_prefix_len,
>>> + int priority);
>>
>> We can't change the published interface like that.
>>
>> If there really is no alternative to this parameter then you need to introduce
>> a new function instead.
> I have discussed this in person with Zden?k, and it seems that the main reason
> for this is to allow more atomic suspension of complete replicator.
>
> The normal semantics of DM tree operations is that suspension of a node is done
> after all its children are suspended. For replicator, it would be beneficial to
> suspend the parent first (to stop the IO stream from the client side) and only
> afterwards start suspending the inferior nodes.
>
> In practice, this constitutes only a very slight increase in risk of tripping a
> "synchronicity" threshold -- by the amount of data that arrives to the
> replicator head in the time frame between a leg is suspended and the replicator
> as a whole is suspended -- if this extra data exceeds the amount of free space
> in the replicator log, this could trip an extra resync that would be
> costly. But it should be stressed, that in these situations, this was already
> quite likely to happen, and the outlined problem only increases the chance of
> this happening by a small margin.
>
> In other words, I think it is not worth worrying about just yet. At the point
> when a dmeventd-style leg dropping is implemented for replicator, this may
> become a more pressing problem, but I think the solution should be deferred
> until the work on that aspect has begun -- at that time, we ought to have a
> clearer picture of the problem area, so it may turn out that a better solution
> exists that would not require similar incompatible (and arguably risky) changes
> to the libdm core.
The orginal primary idea for my suspend_children patch was the intent to keep
logic inverse to prioritized activation - so what is activated last gets
suspended first - but it seems to be a problematic concept.
So this is my second attempt to suspend the replicator control node before
deactivation of the replicator's head.
I think we need to be able to distinguish from the situation when we want to
simply cut off one of replicator's head - and gracefully shutdown whole
replicator.
So I've introduced new variable along the old activation_priority and I use it
as a sign (similar to noflush,skipfs) and before deactivation of node I simply
check whether that node is connected with flagged replicator control node. In
that case the node is suspend in front of deactivation.
This patch should have no influence on other targets.
Zdenek
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: 0008-Replicator-solution-for-suspend-deactivate.patch
URL: <http://listman.redhat.com/archives/lvm-devel/attachments/20091009/4a8de653/attachment.ksh>
next prev parent reply other threads:[~2009-10-09 12:42 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-05 14:00 [PATCH 01/13] Replicator: export out_ function for modules Zdenek Kabelac
2009-10-05 14:00 ` [PATCH 02/13] Replicator: add libdm support Zdenek Kabelac
2009-10-05 14:00 ` [PATCH 03/13] Replicator: add lvm support Zdenek Kabelac
2009-10-05 14:00 ` [PATCH 04/13] Replicator: new variable in generated file Zdenek Kabelac
2009-10-05 14:00 ` [PATCH 05/13] Replicator: use dm_tree_suspend_children Zdenek Kabelac
2009-10-05 14:00 ` [PATCH 06/13] Replicator: extend _lv_each_dependency() rep. deps Zdenek Kabelac
2009-10-05 14:00 ` [PATCH 07/13] Replicator: update _create_partial_dtree() Zdenek Kabelac
2009-10-05 14:00 ` [PATCH 08/13] Replicator: add replicator/_dev to dtree Zdenek Kabelac
2009-10-05 14:00 ` [PATCH 09/13] Replicator: do not remove of replicators' LVs Zdenek Kabelac
2009-10-05 14:00 ` [PATCH 10/13] Replicator: activate change for vgchange Zdenek Kabelac
2009-10-05 14:00 ` [PATCH 11/13] Replicator: add new options for replicator Zdenek Kabelac
2009-10-05 14:00 ` [PATCH 12/13] Replicator: update copyright dates Zdenek Kabelac
2009-10-05 14:00 ` [PATCH 13/13] Replicator: update of generated configure file Zdenek Kabelac
2009-10-07 15:07 ` [PATCH 03/13] Replicator: add lvm support Alasdair G Kergon
2009-10-08 8:56 ` Zdenek Kabelac
2009-10-07 14:39 ` [PATCH 02/13] Replicator: add libdm support Alasdair G Kergon
2009-10-08 9:42 ` Petr Rockai
2009-10-09 12:42 ` Zdenek Kabelac [this message]
2009-10-08 9:32 ` Petr Rockai
2009-10-07 15:05 ` [PATCH 01/13] Replicator: export out_ function for modules Alasdair G Kergon
2009-10-08 11:02 ` Zdenek Kabelac
2009-10-09 12:47 ` Zdenek Kabelac
2009-10-09 12:59 ` Alasdair G Kergon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4ACF2FBC.2000100@redhat.com \
--to=zkabelac@redhat.com \
--cc=lvm-devel@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.