From: Greg KH <gregkh@linuxfoundation.org>
To: Ian Pilcher <arequipeno@gmail.com>
Cc: axboe@kernel.dk, pavel@ucw.cz, linux-leds@vger.kernel.org,
linux-block@vger.kernel.org, linux-kernel@vger.kernel.org,
kabel@kernel.org
Subject: Re: [PATCH v2 11/15] leds: trigger: blkdev: Enable linking block devices to LEDs
Date: Fri, 10 Sep 2021 08:48:57 +0200 [thread overview]
Message-ID: <YTr/2bflThomjHqL@kroah.com> (raw)
In-Reply-To: <20210909222513.2184795-12-arequipeno@gmail.com>
On Thu, Sep 09, 2021 at 05:25:09PM -0500, Ian Pilcher wrote:
> Add /sys/class/leds/<led>/link_device sysfs attribute
>
> If this is the first LED associated with the device, create the
> /sys/block/<disk>/blkdev_leds directory. Otherwise, increment its
> reference count.
>
> Create symlinks in /sys/class/leds/<led>/block_devices and
> /sys/block/<disk>/blkdev_leds
>
> If this the first device associated with *any* LED, schedule delayed work
> to periodically check associated devices and blink LEDs
>
> Signed-off-by: Ian Pilcher <arequipeno@gmail.com>
> ---
> drivers/leds/trigger/ledtrig-blkdev.c | 160 ++++++++++++++++++++++++++
> 1 file changed, 160 insertions(+)
>
> diff --git a/drivers/leds/trigger/ledtrig-blkdev.c b/drivers/leds/trigger/ledtrig-blkdev.c
> index 6f78a9515976..26509837f037 100644
> --- a/drivers/leds/trigger/ledtrig-blkdev.c
> +++ b/drivers/leds/trigger/ledtrig-blkdev.c
> @@ -71,6 +71,9 @@ static unsigned int ledtrig_blkdev_interval;
> static void blkdev_process(struct work_struct *const work);
> static DECLARE_DELAYED_WORK(ledtrig_blkdev_work, blkdev_process);
>
> +/* Total number of device-to-LED associations */
> +static unsigned int ledtrig_blkdev_count;
> +
>
> /*
> *
> @@ -220,6 +223,162 @@ static int blkdev_activate(struct led_classdev *const led_dev)
> }
>
>
> +/*
> + *
> + * link_device sysfs attribute - assocate a block device with this LED
> + *
> + */
> +
> +/* Gets or allocs & initializes the blkdev disk for a gendisk */
> +static int blkdev_get_disk(struct gendisk *const gd)
> +{
> + struct ledtrig_blkdev_disk *disk;
> + struct kobject *dir;
> +
> + if (gd->ledtrig != NULL) {
> + kobject_get(gd->ledtrig->dir);
When do you decrement this kobject?
> + return 0;
> + }
> +
> + disk = kmalloc(sizeof(*disk), GFP_KERNEL);
> + if (disk == NULL)
> + return -ENOMEM;
> +
> + dir = kobject_create_and_add("linked_leds", &disk_to_dev(gd)->kobj);
> + if (dir == NULL) {
> + kfree(disk);
> + return -ENOMEM;
> + }
> +
> + INIT_HLIST_HEAD(&disk->leds);
> + disk->gd = gd;
> + disk->dir = dir;
> + disk->read_ios = 0;
> + disk->write_ios = 0;
> +
> + gd->ledtrig = disk;
> +
> + return 0;
> +}
> +
> +static void blkdev_put_disk(struct ledtrig_blkdev_disk *const disk)
> +{
> + kobject_put(disk->dir);
> +
> + if (hlist_empty(&disk->leds)) {
> + disk->gd->ledtrig = NULL;
> + kfree(disk);
This should happen in the kobject release function, not here, right?
Did you try this out with removable block devices yet?
thanks,
greg k-h
next prev parent reply other threads:[~2021-09-10 6:49 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-09 22:24 [PATCH v2 00/15] Introduce block device LED trigger Ian Pilcher
2021-09-09 22:24 ` [PATCH v2 01/15] docs: Add block device (blkdev) LED trigger documentation Ian Pilcher
2021-09-09 22:25 ` [PATCH v2 02/15] leds: trigger: blkdev: Add build infrastructure Ian Pilcher
2021-09-10 1:32 ` Marek Behún
2021-09-09 22:25 ` [PATCH v2 03/15] leds: trigger: blkdev: Add functions needed by block changes Ian Pilcher
2021-09-09 22:25 ` [PATCH v2 04/15] block: Add block device LED trigger integrations Ian Pilcher
2021-09-09 23:27 ` Chaitanya Kulkarni
2021-09-10 1:23 ` Marek Behún
2021-09-10 15:00 ` Ian Pilcher
2021-09-10 1:38 ` Marek Behún
2021-09-09 22:25 ` [PATCH v2 05/15] leds: trigger: blkdev: Complete functions called by block subsys Ian Pilcher
2021-09-09 22:25 ` [PATCH v2 06/15] leds: trigger: blkdev: Add function to get gendisk by name Ian Pilcher
2021-09-10 6:45 ` Greg KH
2021-09-10 15:17 ` Ian Pilcher
2021-09-10 15:23 ` Greg KH
2021-09-10 16:28 ` Ian Pilcher
2021-09-09 22:25 ` [PATCH v2 07/15] leds: trigger: blkdev: Add constants and types Ian Pilcher
2021-09-09 22:25 ` [PATCH v2 08/15] leds: trigger: blkdev: Add stub LED trigger structure Ian Pilcher
2021-09-09 22:25 ` [PATCH v2 09/15] leds: trigger: blkdev: Check devices for activity and blink LEDs Ian Pilcher
2021-09-10 1:48 ` Marek Behún
2021-09-10 2:17 ` Marek Behún
2021-09-10 15:09 ` Ian Pilcher
2021-09-10 15:12 ` Marek Behún
2021-09-10 21:23 ` Ian Pilcher
2021-09-09 22:25 ` [PATCH v2 10/15] leds: trigger: blkdev: Add LED trigger activate function Ian Pilcher
2021-09-10 6:47 ` Greg KH
2021-09-10 16:10 ` Ian Pilcher
2021-09-09 22:25 ` [PATCH v2 11/15] leds: trigger: blkdev: Enable linking block devices to LEDs Ian Pilcher
2021-09-10 6:48 ` Greg KH [this message]
2021-09-10 16:25 ` Ian Pilcher
2021-09-09 22:25 ` [PATCH v2 12/15] leds: trigger: blkdev: Enable unlinking block devices from LEDs Ian Pilcher
2021-09-09 22:25 ` [PATCH v2 13/15] leds: trigger: blkdev: Add LED trigger deactivate function Ian Pilcher
2021-09-09 22:25 ` [PATCH v2 14/15] leds: trigger: blkdev: Add remaining sysfs attributes Ian Pilcher
2021-09-09 22:25 ` [PATCH v2 15/15] leds: trigger: blkdev: Add disk cleanup and init/exit functions Ian Pilcher
2021-09-10 2:09 ` [PATCH v2 00/15] Introduce block device LED trigger Marek Behún
2021-09-10 14:04 ` Ian Pilcher
-- strict thread matches above, loose matches on Subject: below --
2021-09-12 7:44 [PATCH v2 12/15] leds: trigger: blkdev: Enable unlinking block devices from LEDs kernel test robot
2021-09-14 9:58 ` Dan Carpenter
2021-09-14 9:58 ` Dan Carpenter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YTr/2bflThomjHqL@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=arequipeno@gmail.com \
--cc=axboe@kernel.dk \
--cc=kabel@kernel.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-leds@vger.kernel.org \
--cc=pavel@ucw.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.