On 2/21/25 2:52 PM, Breno Leitao wrote: > Add configfs interface to enable/disable the taskname sysdata feature. > This adds the following functionality: > > The implementation follows the same pattern as the existing CPU number > feature, ensuring consistent behavior and error handling across sysdata > features. > > Signed-off-by: Breno Leitao <leitao@xxxxxxxxxx> > --- > drivers/net/netconsole.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 50 insertions(+) > > diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c > index 1b109f46512ffb7628c6b34c6efdfc301376dd53..5a29144ae37ee7b487b1a252b0f2ce8574f9cefa 100644 > --- a/drivers/net/netconsole.c > +++ b/drivers/net/netconsole.c > @@ -426,6 +426,20 @@ static ssize_t sysdata_cpu_nr_enabled_show(struct config_item *item, char *buf) > return sysfs_emit(buf, "%d\n", cpu_nr_enabled); > } > > +/* configfs helper to display if taskname sysdata feature is enabled */ > +static ssize_t sysdata_taskname_enabled_show(struct config_item *item, > + char *buf) > +{ > + struct netconsole_target *nt = to_target(item->ci_parent); > + bool taskname_enabled; > + > + mutex_lock(&dynamic_netconsole_mutex); > + taskname_enabled = !!(nt->sysdata_fields & SYSDATA_TASKNAME); > + mutex_unlock(&dynamic_netconsole_mutex); > + > + return sysfs_emit(buf, "%d\n", taskname_enabled); > +} > + > /* > * This one is special -- targets created through the configfs interface > * are not enabled (and the corresponding netpoll activated) by default. > @@ -841,6 +855,40 @@ static void disable_sysdata_feature(struct netconsole_target *nt, > nt->extradata_complete[nt->userdata_length] = 0; > } > > +static ssize_t sysdata_taskname_enabled_store(struct config_item *item, > + const char *buf, size_t count) > +{ > + struct netconsole_target *nt = to_target(item->ci_parent); > + bool taskname_enabled, curr; > + ssize_t ret; > + > + ret = kstrtobool(buf, &taskname_enabled); > + if (ret) > + return ret; > + > + mutex_lock(&dynamic_netconsole_mutex); > + curr = nt->sysdata_fields & SYSDATA_TASKNAME; Minor nit: curr = !!(nt->sysdata_fields & SYSDATA_TASKNAME); would be preferable, and more robust if later on other SYSDATA_ bits are added, 'moving down' SYSDATA_TASKNAME definition. Also it would be more consistent with previous usage in `sysdata_taskname_enabled_show()` Cheers, Paolo