* [PATCH] tty: Set correct tty name in 'active' sysfs attribute @ 2014-02-05 10:11 Hannes Reinecke 2014-02-05 12:53 ` [systemd-devel] " David Herrmann 2014-02-05 16:38 ` Greg KH 0 siblings, 2 replies; 7+ messages in thread From: Hannes Reinecke @ 2014-02-05 10:11 UTC (permalink / raw) To: systemd-devel Cc: linux-kernel, Hannes Reinecke, Lennart Poettering, Kay Sievers, Werner Fink 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@poettering.net> Cc: Kay Sievers <kay@vrfy.org> Signed-off-by: Werner Fink <werner@suse.de> Signed-off-by: Hannes Reinecke <hare@suse.de> --- 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'); + } console_unlock(); return count; -- 1.7.12.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [systemd-devel] [PATCH] tty: Set correct tty name in 'active' sysfs attribute 2014-02-05 10:11 [PATCH] tty: Set correct tty name in 'active' sysfs attribute Hannes Reinecke @ 2014-02-05 12:53 ` David Herrmann 2014-02-05 13:53 ` Peter Hurley 2014-02-06 15:46 ` Hannes Reinecke 2014-02-05 16:38 ` Greg KH 1 sibling, 2 replies; 7+ messages in thread From: David Herrmann @ 2014-02-05 12:53 UTC (permalink / raw) To: Hannes Reinecke; +Cc: systemd Mailing List, Kay Sievers, linux-kernel Hi On Wed, Feb 5, 2014 at 11:11 AM, Hannes Reinecke <hare@suse.de> 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@poettering.net> > Cc: Kay Sievers <kay@vrfy.org> > Signed-off-by: Werner Fink <werner@suse.de> > Signed-off-by: Hannes Reinecke <hare@suse.de> > --- > 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. Two minor nitpicks: 1) Could you use tty_line_name() instead of sprintf()? It's in the same file and avoids duplicating the name_base logic. 2) Does it make sense to print the console-name if ->device() returns NULL? Seems weird if we print console-names and tty-names in the same attribute. It's unlikely that it causes problems, but there might be conflicts. Thanks David > console_unlock(); > > return count; > -- > 1.7.12.4 > > _______________________________________________ > systemd-devel mailing list > systemd-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/systemd-devel ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [systemd-devel] [PATCH] tty: Set correct tty name in 'active' sysfs attribute 2014-02-05 12:53 ` [systemd-devel] " David Herrmann @ 2014-02-05 13:53 ` Peter Hurley 2014-02-05 14:05 ` David Herrmann 2014-02-06 15:46 ` Hannes Reinecke 1 sibling, 1 reply; 7+ messages in thread From: Peter Hurley @ 2014-02-05 13:53 UTC (permalink / raw) To: David Herrmann, Hannes Reinecke Cc: systemd Mailing List, Kay Sievers, linux-kernel On 02/05/2014 07:53 AM, David Herrmann wrote: > Hi > > On Wed, Feb 5, 2014 at 11:11 AM, Hannes Reinecke <hare@suse.de> 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@poettering.net> >> Cc: Kay Sievers <kay@vrfy.org> >> Signed-off-by: Werner Fink <werner@suse.de> >> Signed-off-by: Hannes Reinecke <hare@suse.de> >> --- >> 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? Also, this file is not private to systemd. Maybe these changes should be forked into a different sysfs attribute, "active_devices"? Regards, Peter Hurley ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [systemd-devel] [PATCH] tty: Set correct tty name in 'active' sysfs attribute 2014-02-05 13:53 ` Peter Hurley @ 2014-02-05 14:05 ` David Herrmann 2014-02-05 14:19 ` Peter Hurley 0 siblings, 1 reply; 7+ messages in thread From: David Herrmann @ 2014-02-05 14:05 UTC (permalink / raw) To: Peter Hurley Cc: Hannes Reinecke, systemd Mailing List, Kay Sievers, linux-kernel Hi On Wed, Feb 5, 2014 at 2:53 PM, Peter Hurley <peter@hurleysoftware.com> wrote: > On 02/05/2014 07:53 AM, David Herrmann wrote: >> >> Hi >> >> On Wed, Feb 5, 2014 at 11:11 AM, Hannes Reinecke <hare@suse.de> 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@poettering.net> >>> Cc: Kay Sievers <kay@vrfy.org> >>> Signed-off-by: Werner Fink <werner@suse.de> >>> Signed-off-by: Hannes Reinecke <hare@suse.de> >>> --- >>> 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 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [systemd-devel] [PATCH] tty: Set correct tty name in 'active' sysfs attribute 2014-02-05 14:05 ` David Herrmann @ 2014-02-05 14:19 ` Peter Hurley 0 siblings, 0 replies; 7+ messages in thread From: Peter Hurley @ 2014-02-05 14:19 UTC (permalink / raw) To: David Herrmann Cc: Hannes Reinecke, systemd Mailing List, Kay Sievers, linux-kernel, Greg Kroah-Hartman, Jiri Slaby This patch won't get very far if not addressed to the actual maintainers [ +cc Greg Kroah-Hartman, Jiri Slaby] On 02/05/2014 09:05 AM, David Herrmann wrote: > Hi > > On Wed, Feb 5, 2014 at 2:53 PM, Peter Hurley <peter@hurleysoftware.com> wrote: >> On 02/05/2014 07:53 AM, David Herrmann wrote: >>> >>> Hi >>> >>> On Wed, Feb 5, 2014 at 11:11 AM, Hannes Reinecke <hare@suse.de> 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@poettering.net> >>>> Cc: Kay Sievers <kay@vrfy.org> >>>> Signed-off-by: Werner Fink <werner@suse.de> >>>> Signed-off-by: Hannes Reinecke <hare@suse.de> >>>> --- >>>> 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. Sure, I get it. Just wanted to point out the obvious right up front so that if it turns out there is another userspace dependency and this gets rewound, possibly across future -stable kernels, the fallout could get ugly. Regards, Peter Hurley PS - The "active" attribute won't be unused; old systemd's will still depend on it, yes? ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [systemd-devel] [PATCH] tty: Set correct tty name in 'active' sysfs attribute 2014-02-05 12:53 ` [systemd-devel] " David Herrmann 2014-02-05 13:53 ` Peter Hurley @ 2014-02-06 15:46 ` Hannes Reinecke 1 sibling, 0 replies; 7+ messages in thread From: Hannes Reinecke @ 2014-02-06 15:46 UTC (permalink / raw) To: David Herrmann; +Cc: systemd Mailing List, Kay Sievers, linux-kernel On 02/05/2014 01:53 PM, David Herrmann wrote: > Hi > > On Wed, Feb 5, 2014 at 11:11 AM, Hannes Reinecke <hare@suse.de> 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@poettering.net> >> Cc: Kay Sievers <kay@vrfy.org> >> Signed-off-by: Werner Fink <werner@suse.de> >> Signed-off-by: Hannes Reinecke <hare@suse.de> >> --- >> 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. > Two minor nitpicks: > 1) Could you use tty_line_name() instead of sprintf()? It's in the > same file and avoids duplicating the name_base logic. Ok. Not that it makes the patch nicer, but hey. > 2) Does it make sense to print the console-name if ->device() returns > NULL? Seems weird if we print console-names and tty-names in the same > attribute. It's unlikely that it causes problems, but there might be > conflicts. > This is basically a fallback; this is the old behaviour, which still might be called for when coming across a tty which just has a stub for the ->device callback. It's not that the '->device' callback is used that frequently, so I wouldn't be surprised here. Meanwhile I've sent a new patch, reviews are welcome there. Cheers, Hannes -- Dr. Hannes Reinecke zSeries & Storage hare@suse.de +49 911 74053 688 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: J. Hawn, J. Guild, F. Imendörffer, HRB 16746 (AG Nürnberg) ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [systemd-devel] [PATCH] tty: Set correct tty name in 'active' sysfs attribute 2014-02-05 10:11 [PATCH] tty: Set correct tty name in 'active' sysfs attribute Hannes Reinecke 2014-02-05 12:53 ` [systemd-devel] " David Herrmann @ 2014-02-05 16:38 ` Greg KH 1 sibling, 0 replies; 7+ messages in thread From: Greg KH @ 2014-02-05 16:38 UTC (permalink / raw) To: Hannes Reinecke; +Cc: systemd-devel, Kay Sievers, linux-kernel On Wed, Feb 05, 2014 at 11:11:46AM +0100, Hannes Reinecke 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@poettering.net> > Cc: Kay Sievers <kay@vrfy.org> > Signed-off-by: Werner Fink <werner@suse.de> > Signed-off-by: Hannes Reinecke <hare@suse.de> > --- > drivers/tty/tty_io.c | 14 ++++++++++++-- > 1 file changed, 12 insertions(+), 2 deletions(-) Would have been nice to actually cc: the tty maintainer(s) :( scripts/get_maintainer.pl is your friend... greg k-h ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2014-02-06 15:46 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-02-05 10:11 [PATCH] tty: Set correct tty name in 'active' sysfs attribute Hannes Reinecke 2014-02-05 12:53 ` [systemd-devel] " David Herrmann 2014-02-05 13:53 ` Peter Hurley 2014-02-05 14:05 ` David Herrmann 2014-02-05 14:19 ` Peter Hurley 2014-02-06 15:46 ` Hannes Reinecke 2014-02-05 16:38 ` Greg KH
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox