This is a note to let you know that I've just added the patch titled aoe: register default groups with device_add_disk() to the 4.19-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: aoe-register-default-groups-with-device_add_disk.patch and it can be found in the queue-4.19 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From foo@baz Sun Mar 7 04:13:19 PM CET 2021 From: Jeffle Xu <jefflexu@xxxxxxxxxxxxxxxxx> Date: Tue, 23 Feb 2021 17:28:57 +0800 Subject: aoe: register default groups with device_add_disk() To: gregkh@xxxxxxxxxxxxxxxxxxx, sashal@xxxxxxxxxx Cc: stable@xxxxxxxxxxxxxxx, joseph.qi@xxxxxxxxxxxxxxxxx, jefflexu@xxxxxxxxxxxxxxxxx, hare@xxxxxxxx Message-ID: <20210223092859.17033-5-jefflexu@xxxxxxxxxxxxxxxxx> From: Hannes Reinecke <hare@xxxxxxx> commit 95cf7809bf9169fec4e4b7bb24b8069d8f354f96 upstream. Register default sysfs groups during device_add_disk() to avoid a race condition with udev during startup. Signed-off-by: Hannes Reinecke <hare@xxxxxxxx> Reviewed-by: Christoph Hellwig <hch@xxxxxx> Acked-by: Ed L. Cachin <ed.cashin@xxxxxxx> Reviewed-by: Bart Van Assche <bart.vanassche@xxxxxxx> Signed-off-by: Jens Axboe <axboe@xxxxxxxxx> Signed-off-by: Jeffle Xu <jefflexu@xxxxxxxxxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/block/aoe/aoe.h | 1 - drivers/block/aoe/aoeblk.c | 21 +++++++-------------- drivers/block/aoe/aoedev.c | 1 - 3 files changed, 7 insertions(+), 16 deletions(-) --- a/drivers/block/aoe/aoe.h +++ b/drivers/block/aoe/aoe.h @@ -201,7 +201,6 @@ int aoeblk_init(void); void aoeblk_exit(void); void aoeblk_gdalloc(void *); void aoedisk_rm_debugfs(struct aoedev *d); -void aoedisk_rm_sysfs(struct aoedev *d); int aoechr_init(void); void aoechr_exit(void); --- a/drivers/block/aoe/aoeblk.c +++ b/drivers/block/aoe/aoeblk.c @@ -177,10 +177,15 @@ static struct attribute *aoe_attrs[] = { NULL, }; -static const struct attribute_group attr_group = { +static const struct attribute_group aoe_attr_group = { .attrs = aoe_attrs, }; +static const struct attribute_group *aoe_attr_groups[] = { + &aoe_attr_group, + NULL, +}; + static const struct file_operations aoe_debugfs_fops = { .open = aoe_debugfs_open, .read = seq_read, @@ -220,17 +225,6 @@ aoedisk_rm_debugfs(struct aoedev *d) } static int -aoedisk_add_sysfs(struct aoedev *d) -{ - return sysfs_create_group(&disk_to_dev(d->gd)->kobj, &attr_group); -} -void -aoedisk_rm_sysfs(struct aoedev *d) -{ - sysfs_remove_group(&disk_to_dev(d->gd)->kobj, &attr_group); -} - -static int aoeblk_open(struct block_device *bdev, fmode_t mode) { struct aoedev *d = bdev->bd_disk->private_data; @@ -417,8 +411,7 @@ aoeblk_gdalloc(void *vp) spin_unlock_irqrestore(&d->lock, flags); - add_disk(gd); - aoedisk_add_sysfs(d); + device_add_disk(NULL, gd, aoe_attr_groups); aoedisk_add_debugfs(d); spin_lock_irqsave(&d->lock, flags); --- a/drivers/block/aoe/aoedev.c +++ b/drivers/block/aoe/aoedev.c @@ -275,7 +275,6 @@ freedev(struct aoedev *d) del_timer_sync(&d->timer); if (d->gd) { aoedisk_rm_debugfs(d); - aoedisk_rm_sysfs(d); del_gendisk(d->gd); put_disk(d->gd); blk_cleanup_queue(d->blkq); Patches currently in stable-queue which might be from jefflexu@xxxxxxxxxxxxxxxxx are queue-4.19/zram-register-default-groups-with-device_add_disk.patch queue-4.19/block-genhd-add-groups-argument-to-device_add_disk.patch queue-4.19/revert-zram-close-udev-startup-race-condition-as-default-groups.patch queue-4.19/virtio-blk-modernize-sysfs-attribute-creation.patch queue-4.19/nvme-register-ns_id-attributes-as-default-sysfs-groups.patch queue-4.19/aoe-register-default-groups-with-device_add_disk.patch