Mailinglist Archive: yast-devel (59 mails)

< Previous Next >
[yast-devel] storage-ng and cache invalidation
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: yast-devel+unsubscribe@xxxxxxxxxxxx
To contact the owner, e-mail: yast-devel+owner@xxxxxxxxxxxx

< Previous Next >
Follow Ups