[lvm-devel] [PATCH] Fix RHBZ 754198 (multiple dmeventd snapshot extensions)
Petr Rockai
prockai at redhat.com
Fri Nov 18 19:46:44 UTC 2011
Zdenek Kabelac <zkabelac at redhat.com> writes:
> The formula above should be placed inside lvresize
> (_adjust_policy_params()).
And still completely besides the point.
>> The problem:
>>
>> - to check whether anything needs to happen, lvextend needs to be
>> executed (this is *expensive*, even if it decides no action needs to
>> happen)
>>
>> - if nothing needed to happen, we don't need to call lvextend until the
>> utilisation has grown; *but* we don't know whether anything happened
>> (without ENO_ACTION_NEEDED that is)
>
> But you still call dmeventd_lvm2_run() - which is the most expensive
> operation here - so I do not exactly see what do you actually safe here
> i.e. if the resize will not happen because according to policy it's not
> yet needed - then I do not see any difference ?
Well, what can I say. I have already tried to explain how this works
(twice?), and it's also quite obvious from the code. Well, once more: we
do *not* call dmeventd_lvm2_run *if* the last lvconvert decided that
nothing needs to be done *and* the snapshot utilisation did not change
(more than 5%).
To implement that, we need to: 1) know that snapshot utilisation grew
(we know this already in the existing code) and 2) that lvconvert did
not change anything. We don't know 2 and wrongly assume that nothing
changes, ever (that's the bug).
Were we to assume every time that lvconvert might have changed
something, we would have to call it *every time* (every 10 seconds).
Is it clear now?
--
id' Ash = Ash; id' Dust = Dust; id' _ = undefined
More information about the lvm-devel
mailing list