Re: [systemd-devel] [PATCH] tty: Set correct tty name in 'active'sysfs attribute

From: David Herrmann
Date: Wed Feb 05 2014 - 09:05:21 EST


Hi

On Wed, Feb 5, 2014 at 2:53 PM, Peter Hurley <peter@xxxxxxxxxxxxxxxxxx> wrote:
> On 02/05/2014 07:53 AM, David Herrmann wrote:
>>
>> Hi
>>
>> On Wed, Feb 5, 2014 at 11:11 AM, Hannes Reinecke <hare@xxxxxxx> wrote:
>>>
>>> The 'active' sysfs attribute should refer to the currently
>>> active tty devices the console is running on, not the currently
>>> active console.
>>> The console structure doesn't refer to any device in sysfs,
>>> only the tty the console is running on has.
>>> So we need to print out the tty names in 'active', not
>>> the console names.
>>>
>>> Cc: Lennart Poettering <lennart@xxxxxxxxxxxxxx>
>>> Cc: Kay Sievers <kay@xxxxxxxx>
>>> Signed-off-by: Werner Fink <werner@xxxxxxx>
>>> Signed-off-by: Hannes Reinecke <hare@xxxxxxx>
>>> ---
>>> drivers/tty/tty_io.c | 14 ++++++++++++--
>>> 1 file changed, 12 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
>>> index c74a00a..17db8ca 100644
>>> --- a/drivers/tty/tty_io.c
>>> +++ b/drivers/tty/tty_io.c
>>> @@ -3545,9 +3545,19 @@ static ssize_t show_cons_active(struct device
>>> *dev,
>>> if (i >= ARRAY_SIZE(cs))
>>> break;
>>> }
>>> - while (i--)
>>> + while (i--) {
>>> + const struct tty_driver *driver;
>>> + const char *name = cs[i]->name;
>>> + int index = cs[i]->index;
>>> +
>>> + driver = cs[i]->device(cs[i], &index);
>>> + if (driver) {
>>> + index += driver->name_base;
>>> + name = driver->name;
>>> + }
>>> count += sprintf(buf + count, "%s%d%c",
>>> - cs[i]->name, cs[i]->index, i ? '
>>> ':'\n');
>>> + name, index, i ? ' ':'\n');
>>> + }
>>
>>
>> Nice catch and indeed, systemd already relies on these names to be
>> identical to their char-dev name. Fortunately, VTs and most serial
>> devices register the console with the same name as the TTY, so we're
>> fine.
>
>
> What device did this trip over?

I haven't seen one so far, but to me it's a coincident, not something
we should rely on.

> Also, this file is not private to systemd. Maybe these changes should
> be forked into a different sysfs attribute, "active_devices"?

What's the use-case to return the name of the console-driver? There is
no way for user-space to read active console-drivers anywhere so I
think returning the TTY makes more sense. We already have working
user-space that can spawn gettys on active consoles via this file. I
am open to change this to "active_devices" as the existing interface
was clearly not designed to return the device-names.

However, given the fact that both matched so far, I think changing the
existing interface to the only user I am aware of is better than
adding a new interface just to keep this unused attribute. But
obviously it's the maintainer's/your decision and you might know
user-space which requires the console-names instead of the tty-names.
So please let us know which way to go as we would like to see a
reliable way to match active consoles to TTY devices for automated
getty-startup.

Thanks
David
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/