[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#666399: s390-dasd fails to work with >20 devices visible (mostly in LPAR mode)

Package: s390-dasd
Version: 0.0.27
Severity: important

s390-dasd has the following code snippet in dasd-config.c:

| static enum state_wanted get_channel (void)
| {
|         if (di_tree_size (channels) > 20)
|                 return get_channel_input ();
|         else if (di_tree_size (channels) > 0)
|                 return get_channel_select ();
|         return WANT_ERROR;
| }

I'm not sure about the rationale for this.  When removing the check, the
program segfaults upon hitting "Finish", despite listing the devices
correctly and allowing to configure them.  Sadly strace didn't help at all
and gdb was unable to generate traces.

If you've got a lot of devices visible, because you're in LPAR mode, you
cannot configure the disks because the state machine goes GET_CHANNEL ->
ENABLE -> FORMAT -> WRITE -> GET_CHANNEL and there's no way to exit the
GET_CHANNEL input field with a finished state.  So you're caught in an
endless loop instead.  An alternative to just showing the select widget all
the time would be to fix the state machine so that it's possible to exit with
sucess from the channel input when at least one device was brought online (or
is in configured).

Kind regards
Philipp Kern

Reply to: