Good morning,
I am currently working on cache invalidation problem in CaaSP (bsc#1035746). 
From top-level view, bootloader store some storage devices in cache due to 
performance reasons ( in past we get bug report from real that with 1k disks, 
installation took more then 8 hours just to display bootloader proposal ) and 
what is problem is bug in invalidating that cache when bootloader storage 
changed. ( so it is true that chace invalidation is one of two hard things :) 
[1] )

In CaaSP and for master I will solve it using Storage.GetTargetChangeTime where 
I compare it and if different I invalidate cache.

Now lets get to storage-ng. I try to port this fix there. So my first question 
is, what is similar equivalent in storage-ng which allows me to see if there is 
change in storage, so bootloader proposal is no longer valid?

When I try to reproduce it on the latest storage-ng iso, I found even more 
annoying behavior, that when you go to installation summary and then go back to 
storage proposal and modify it ( I use guided setup with lvm ) and then go back 
to installation summary, it crashes badly ( segfault ). You can try it on your 
own with recent enough storage-ng DVD.

In general my suspicion is that cache is not just no longer valid for root 
device, but because bootloader store storage objects, it is no longer valids. 
And here is my second question, what is recommended way to debug such issues ( 
so find where invalid object is hold ) ? I reproduce issue using plane 
libstorage-ng [2], so I try to debug this minimal case. I use gdb and valgrind. 
I see there that it is destroyed when device graph is destroyed. But I do not 
find method how to find where in ruby lives object that cause segfault. Any 
ideas how to recognize it? Ideally way that works also when issue happen on 
user side.

Also I have to say, that from user POV, segfault and ruby exception is very 
very different. When I get ruby exception, I see popup saying what is a 
problem. I can continue. I was asked to report bug. And the most important 
part, I can get logs as environment still lives! When I get segfault, I get 
quick black screen followed by red area on blue which mention Error occured 
during installation without any details and what is more important: I do not 
find way how to get any logs, at least y2signal log will be useful!! So my user 
experience is very different, as in first case I see reason, I am asked to 
write bug report and I also can get logs when error happen. In second case I 
get only generic error and cannot get logs, so if this happen in openQA we also 
have problem to get it and we have to reproduce it ourself. We probably need to 
enhance a bit linuxrc to handle this more nicely and at least allow to get logs 
from segfaulted installation.

Thanks for help with any of the question or any feedback.
Josef

[1] https://martinfowler.com/bliki/TwoHardThings.html
[2] https://gist.github.com/jreidinger/b37ae595b3c3d8519453cd3c9fc0f198
-- 
To unsubscribe, e-mail: [email protected]
To contact the owner, e-mail: [email protected]

Reply via email to