[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