2023-03-19 09:27:45

by 李扬韬

[permalink] [raw]
Subject: [PATCH v2, RESEND 01/10] kobject: introduce kobject_del_and_put()

There are plenty of using kobject_del() and kobject_put() together
in the kernel tree. This patch wraps these two calls in a single helper.

Signed-off-by: Yangtao Li <[email protected]>
---
v2:
-add kobject_del_and_put() users
resend patchset to gregkh and Rafael
include/linux/kobject.h | 1 +
lib/kobject.c | 17 +++++++++++++++--
2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/include/linux/kobject.h b/include/linux/kobject.h
index bdab370a24f4..782d4bd119f8 100644
--- a/include/linux/kobject.h
+++ b/include/linux/kobject.h
@@ -111,6 +111,7 @@ extern struct kobject *kobject_get(struct kobject *kobj);
extern struct kobject * __must_check kobject_get_unless_zero(
struct kobject *kobj);
extern void kobject_put(struct kobject *kobj);
+extern void kobject_del_and_put(struct kobject *kobj);

extern const void *kobject_namespace(const struct kobject *kobj);
extern void kobject_get_ownership(const struct kobject *kobj,
diff --git a/lib/kobject.c b/lib/kobject.c
index 6e2f0bee3560..8c0293e37214 100644
--- a/lib/kobject.c
+++ b/lib/kobject.c
@@ -731,6 +731,20 @@ void kobject_put(struct kobject *kobj)
}
EXPORT_SYMBOL(kobject_put);

+/**
+ * kobject_del_and_put() - Delete kobject.
+ * @kobj: object.
+ *
+ * Unlink kobject from hierarchy and decrement the refcount.
+ * If refcount is 0, call kobject_cleanup().
+ */
+void kobject_del_and_put(struct kobject *kobj)
+{
+ kobject_del(kobj);
+ kobject_put(kobj);
+}
+EXPORT_SYMBOL_GPL(kobject_del_and_put);
+
static void dynamic_kobj_release(struct kobject *kobj)
{
pr_debug("kobject: (%p): %s\n", kobj, __func__);
@@ -874,8 +888,7 @@ void kset_unregister(struct kset *k)
{
if (!k)
return;
- kobject_del(&k->kobj);
- kobject_put(&k->kobj);
+ kobject_del_and_put(&k->kobj);
}
EXPORT_SYMBOL(kset_unregister);

--
2.35.1



2023-03-19 09:27:47

by 李扬韬

[permalink] [raw]
Subject: [PATCH v2, RESEND 03/10] erofs: convert to kobject_del_and_put()

Use kobject_del_and_put() to simplify code.

Cc: Greg Kroah-Hartman <[email protected]>
Cc: "Rafael J. Wysocki" <[email protected]>
Signed-off-by: Yangtao Li <[email protected]>
---
fs/erofs/sysfs.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/fs/erofs/sysfs.c b/fs/erofs/sysfs.c
index 435e515c0792..9ed7d6552155 100644
--- a/fs/erofs/sysfs.c
+++ b/fs/erofs/sysfs.c
@@ -241,8 +241,7 @@ void erofs_unregister_sysfs(struct super_block *sb)
struct erofs_sb_info *sbi = EROFS_SB(sb);

if (sbi->s_kobj.state_in_sysfs) {
- kobject_del(&sbi->s_kobj);
- kobject_put(&sbi->s_kobj);
+ kobject_del_and_put(&sbi->s_kobj);
wait_for_completion(&sbi->s_kobj_unregister);
}
}
--
2.35.1


2023-03-19 09:27:50

by 李扬韬

[permalink] [raw]
Subject: [PATCH v2, RESEND 04/10] zonefs: convert to kobject_del_and_put()

Use kobject_del_and_put() to simplify code.

Cc: Greg Kroah-Hartman <[email protected]>
Cc: "Rafael J. Wysocki" <[email protected]>
Signed-off-by: Yangtao Li <[email protected]>
---
fs/zonefs/sysfs.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/fs/zonefs/sysfs.c b/fs/zonefs/sysfs.c
index 8ccb65c2b419..5e117188fbb5 100644
--- a/fs/zonefs/sysfs.c
+++ b/fs/zonefs/sysfs.c
@@ -113,8 +113,7 @@ void zonefs_sysfs_unregister(struct super_block *sb)
if (!sbi || !sbi->s_sysfs_registered)
return;

- kobject_del(&sbi->s_kobj);
- kobject_put(&sbi->s_kobj);
+ kobject_del_and_put(&sbi->s_kobj);
wait_for_completion(&sbi->s_kobj_unregister);
}

--
2.35.1


2023-03-19 09:27:55

by 李扬韬

[permalink] [raw]
Subject: [PATCH v2, RESEND 05/10] ubifs: convert to kobject_del_and_put()

Use kobject_del_and_put() to simplify code.

Cc: Greg Kroah-Hartman <[email protected]>
Cc: "Rafael J. Wysocki" <[email protected]>
Signed-off-by: Yangtao Li <[email protected]>
---
fs/ubifs/sysfs.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/fs/ubifs/sysfs.c b/fs/ubifs/sysfs.c
index 1c958148bb87..9571718e61a9 100644
--- a/fs/ubifs/sysfs.c
+++ b/fs/ubifs/sysfs.c
@@ -130,8 +130,7 @@ int ubifs_sysfs_register(struct ubifs_info *c)

void ubifs_sysfs_unregister(struct ubifs_info *c)
{
- kobject_del(&c->kobj);
- kobject_put(&c->kobj);
+ kobject_del_and_put(&c->kobj);
wait_for_completion(&c->kobj_unregister);

kfree(c->stats);
--
2.35.1


2023-03-19 09:27:59

by 李扬韬

[permalink] [raw]
Subject: [PATCH v2, RESEND 06/10] btrfs: convert to kobject_del_and_put()

Use kobject_del_and_put() to simplify code.

Cc: Greg Kroah-Hartman <[email protected]>
Cc: "Rafael J. Wysocki" <[email protected]>
Signed-off-by: Yangtao Li <[email protected]>
---
fs/btrfs/block-group.c | 5 +----
fs/btrfs/sysfs.c | 38 ++++++++++++--------------------------
2 files changed, 13 insertions(+), 30 deletions(-)

diff --git a/fs/btrfs/block-group.c b/fs/btrfs/block-group.c
index 5fc670c27f86..a2876235c6dc 100644
--- a/fs/btrfs/block-group.c
+++ b/fs/btrfs/block-group.c
@@ -1125,10 +1125,7 @@ int btrfs_remove_block_group(struct btrfs_trans_handle *trans,
}
up_write(&block_group->space_info->groups_sem);
clear_incompat_bg_bits(fs_info, block_group->flags);
- if (kobj) {
- kobject_del(kobj);
- kobject_put(kobj);
- }
+ kobject_del_and_put(kobj);

if (block_group->cached == BTRFS_CACHE_STARTED)
btrfs_wait_block_group_cache_done(block_group);
diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c
index 37fc58a7f27e..49b837561135 100644
--- a/fs/btrfs/sysfs.c
+++ b/fs/btrfs/sysfs.c
@@ -1390,20 +1390,17 @@ static int addrm_unknown_feature_attrs(struct btrfs_fs_info *fs_info, bool add)
static void __btrfs_sysfs_remove_fsid(struct btrfs_fs_devices *fs_devs)
{
if (fs_devs->devinfo_kobj) {
- kobject_del(fs_devs->devinfo_kobj);
- kobject_put(fs_devs->devinfo_kobj);
+ kobject_del_and_put(fs_devs->devinfo_kobj);
fs_devs->devinfo_kobj = NULL;
}

if (fs_devs->devices_kobj) {
- kobject_del(fs_devs->devices_kobj);
- kobject_put(fs_devs->devices_kobj);
+ kobject_del_and_put(fs_devs->devices_kobj);
fs_devs->devices_kobj = NULL;
}

if (fs_devs->fsid_kobj.state_initialized) {
- kobject_del(&fs_devs->fsid_kobj);
- kobject_put(&fs_devs->fsid_kobj);
+ kobject_del_and_put(&fs_devs->fsid_kobj);
wait_for_completion(&fs_devs->kobj_unregister);
}
}
@@ -1445,19 +1442,16 @@ void btrfs_sysfs_remove_mounted(struct btrfs_fs_info *fs_info)

if (fs_info->space_info_kobj) {
sysfs_remove_files(fs_info->space_info_kobj, allocation_attrs);
- kobject_del(fs_info->space_info_kobj);
- kobject_put(fs_info->space_info_kobj);
+ kobject_del_and_put(fs_info->space_info_kobj);
}
if (fs_info->discard_kobj) {
sysfs_remove_files(fs_info->discard_kobj, discard_attrs);
- kobject_del(fs_info->discard_kobj);
- kobject_put(fs_info->discard_kobj);
+ kobject_del_and_put(fs_info->discard_kobj);
}
#ifdef CONFIG_BTRFS_DEBUG
if (fs_info->debug_kobj) {
sysfs_remove_files(fs_info->debug_kobj, btrfs_debug_mount_attrs);
- kobject_del(fs_info->debug_kobj);
- kobject_put(fs_info->debug_kobj);
+ kobject_del_and_put(fs_info->debug_kobj);
}
#endif
addrm_unknown_feature_attrs(fs_info, false);
@@ -1620,13 +1614,9 @@ void btrfs_sysfs_remove_space_info(struct btrfs_space_info *space_info)

kobj = space_info->block_group_kobjs[i];
space_info->block_group_kobjs[i] = NULL;
- if (kobj) {
- kobject_del(kobj);
- kobject_put(kobj);
- }
+ kobject_del_and_put(kobj);
}
- kobject_del(&space_info->kobj);
- kobject_put(&space_info->kobj);
+ kobject_del_and_put(&space_info->kobj);
}

static const char *alloc_name(u64 flags)
@@ -1681,8 +1671,7 @@ void btrfs_sysfs_remove_device(struct btrfs_device *device)
sysfs_remove_link(devices_kobj, bdev_kobj(device->bdev)->name);

if (device->devid_kobj.state_initialized) {
- kobject_del(&device->devid_kobj);
- kobject_put(&device->devid_kobj);
+ kobject_del_and_put(&device->devid_kobj);
wait_for_completion(&device->kobj_unregister);
}
}
@@ -2255,8 +2244,7 @@ void btrfs_sysfs_del_qgroups(struct btrfs_fs_info *fs_info)
&fs_info->qgroup_tree, node)
btrfs_sysfs_del_one_qgroup(fs_info, qgroup);
if (fs_info->qgroups_kobj) {
- kobject_del(fs_info->qgroups_kobj);
- kobject_put(fs_info->qgroups_kobj);
+ kobject_del_and_put(fs_info->qgroups_kobj);
fs_info->qgroups_kobj = NULL;
}
}
@@ -2304,10 +2292,8 @@ void btrfs_sysfs_del_one_qgroup(struct btrfs_fs_info *fs_info,
if (test_bit(BTRFS_FS_STATE_DUMMY_FS_INFO, &fs_info->fs_state))
return;

- if (qgroup->kobj.state_initialized) {
- kobject_del(&qgroup->kobj);
- kobject_put(&qgroup->kobj);
- }
+ if (qgroup->kobj.state_initialized)
+ kobject_del_and_put(&qgroup->kobj);
}

/*
--
2.35.1


2023-03-19 09:28:03

by 李扬韬

[permalink] [raw]
Subject: [PATCH v2, RESEND 08/10] ocfs2: convert to kobject_del_and_put()

Use kobject_del_and_put() to simplify code.

Cc: Greg Kroah-Hartman <[email protected]>
Cc: "Rafael J. Wysocki" <[email protected]>
Signed-off-by: Yangtao Li <[email protected]>
---
fs/ocfs2/filecheck.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/fs/ocfs2/filecheck.c b/fs/ocfs2/filecheck.c
index 1ad7106741f8..fb9cf601245b 100644
--- a/fs/ocfs2/filecheck.c
+++ b/fs/ocfs2/filecheck.c
@@ -198,8 +198,7 @@ void ocfs2_filecheck_remove_sysfs(struct ocfs2_super *osb)
if (!osb->osb_fc_ent.fs_fcheck)
return;

- kobject_del(&osb->osb_fc_ent.fs_kobj);
- kobject_put(&osb->osb_fc_ent.fs_kobj);
+ kobject_del_and_put(&osb->osb_fc_ent.fs_kobj);
wait_for_completion(&osb->osb_fc_ent.fs_kobj_unregister);
ocfs2_filecheck_sysfs_free(&osb->osb_fc_ent);
}
--
2.35.1


2023-03-19 09:28:09

by 李扬韬

[permalink] [raw]
Subject: [PATCH v2, RESEND 07/10] xfs: convert to kobject_del_and_put()

Use kobject_del_and_put() to simplify code.

Cc: Greg Kroah-Hartman <[email protected]>
Cc: "Rafael J. Wysocki" <[email protected]>
Signed-off-by: Yangtao Li <[email protected]>
---
fs/xfs/xfs_sysfs.h | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/fs/xfs/xfs_sysfs.h b/fs/xfs/xfs_sysfs.h
index 148893ebfdef..e2ff063e2c29 100644
--- a/fs/xfs/xfs_sysfs.h
+++ b/fs/xfs/xfs_sysfs.h
@@ -48,8 +48,7 @@ static inline void
xfs_sysfs_del(
struct xfs_kobj *kobj)
{
- kobject_del(&kobj->kobject);
- kobject_put(&kobj->kobject);
+ kobject_del_and_put(&kobj->kobject);
wait_for_completion(&kobj->complete);
}

--
2.35.1


2023-03-19 09:28:15

by 李扬韬

[permalink] [raw]
Subject: [PATCH v2, RESEND 09/10] nfs: convert to kobject_del_and_put()

Use kobject_del_and_put() to simplify code.

Cc: Greg Kroah-Hartman <[email protected]>
Cc: "Rafael J. Wysocki" <[email protected]>
Signed-off-by: Yangtao Li <[email protected]>
---
fs/nfs/sysfs.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/fs/nfs/sysfs.c b/fs/nfs/sysfs.c
index 0cbcd2dfa732..a6072be5fa5a 100644
--- a/fs/nfs/sysfs.c
+++ b/fs/nfs/sysfs.c
@@ -185,8 +185,7 @@ void nfs_netns_sysfs_destroy(struct nfs_net *netns)

if (clp) {
kobject_uevent(&clp->kobject, KOBJ_REMOVE);
- kobject_del(&clp->kobject);
- kobject_put(&clp->kobject);
+ kobject_del_and_put(&clp->kobject);
netns->nfs_client = NULL;
}
}
--
2.35.1


2023-03-19 09:28:20

by 李扬韬

[permalink] [raw]
Subject: [PATCH v2, RESEND 10/10] nilfs2: convert to kobject_del_and_put()

Use kobject_del_and_put() to simplify code.

Cc: Greg Kroah-Hartman <[email protected]>
Cc: "Rafael J. Wysocki" <[email protected]>
Signed-off-by: Yangtao Li <[email protected]>
---
fs/nilfs2/sysfs.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/fs/nilfs2/sysfs.c b/fs/nilfs2/sysfs.c
index 379d22e28ed6..150965d58ca5 100644
--- a/fs/nilfs2/sysfs.c
+++ b/fs/nilfs2/sysfs.c
@@ -1042,8 +1042,7 @@ void nilfs_sysfs_delete_device_group(struct the_nilfs *nilfs)
nilfs_sysfs_delete_segments_group(nilfs);
nilfs_sysfs_delete_superblock_group(nilfs);
nilfs_sysfs_delete_segctor_group(nilfs);
- kobject_del(&nilfs->ns_dev_kobj);
- kobject_put(&nilfs->ns_dev_kobj);
+ kobject_del_and_put(&nilfs->ns_dev_kobj);
kfree(nilfs->ns_dev_subgroups);
}

--
2.35.1


2023-03-19 21:42:55

by Damien Le Moal

[permalink] [raw]
Subject: Re: [PATCH v2, RESEND 04/10] zonefs: convert to kobject_del_and_put()

On 3/19/23 18:26, Yangtao Li wrote:
> Use kobject_del_and_put() to simplify code.
>
> Cc: Greg Kroah-Hartman <[email protected]>
> Cc: "Rafael J. Wysocki" <[email protected]>
> Signed-off-by: Yangtao Li <[email protected]>
> ---
> fs/zonefs/sysfs.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/fs/zonefs/sysfs.c b/fs/zonefs/sysfs.c
> index 8ccb65c2b419..5e117188fbb5 100644
> --- a/fs/zonefs/sysfs.c
> +++ b/fs/zonefs/sysfs.c
> @@ -113,8 +113,7 @@ void zonefs_sysfs_unregister(struct super_block *sb)
> if (!sbi || !sbi->s_sysfs_registered)
> return;
>
> - kobject_del(&sbi->s_kobj);
> - kobject_put(&sbi->s_kobj);
> + kobject_del_and_put(&sbi->s_kobj);
> wait_for_completion(&sbi->s_kobj_unregister);

There is no function kobject_del_and_put() in rc3. I guess it is introduced by
this series but since you did not send everything, it is impossible to review.
Please always send the full patch series so that reviewers have all the context
that is needed to review/ack.

> }
>

--
Damien Le Moal
Western Digital Research


2023-03-20 02:56:14

by Zhihao Cheng

[permalink] [raw]
Subject: Re: [PATCH v2, RESEND 05/10] ubifs: convert to kobject_del_and_put()

Hi Yangtao,
> Use kobject_del_and_put() to simplify code.
>
> Cc: Greg Kroah-Hartman <[email protected]>
> Cc: "Rafael J. Wysocki" <[email protected]>
> Signed-off-by: Yangtao Li <[email protected]>
> ---
> fs/ubifs/sysfs.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/fs/ubifs/sysfs.c b/fs/ubifs/sysfs.c
> index 1c958148bb87..9571718e61a9 100644
> --- a/fs/ubifs/sysfs.c
> +++ b/fs/ubifs/sysfs.c
> @@ -130,8 +130,7 @@ int ubifs_sysfs_register(struct ubifs_info *c)
>
> void ubifs_sysfs_unregister(struct ubifs_info *c)
> {
> - kobject_del(&c->kobj);
> - kobject_put(&c->kobj);
> + kobject_del_and_put(&c->kobj);
> wait_for_completion(&c->kobj_unregister);
>
> kfree(c->stats);
>

Maybe you can send the entire patchset to linux-mtd next time, I can
only see patch 5 from the maillist. After confirming from other
website(https://www.spinics.net/lists/kernel/msg4727274.html) I see you
instroduced the implementation of kobject_del_and_put().

I have no objections if other modules can accept the kobject_del_and_put().

2023-03-20 03:35:04

by 李扬韬

[permalink] [raw]
Subject: Re: [PATCH v2, RESEND 01/10] kobject: introduce kobject_del_and_put()

Hi all,

Out of consideration for minimizing disruption, I did not send the
patchset to everyone. However, it seems that my consideration was
unnecessary, so I CC'd everyone on the first patch. If you would
like to see the entire patchset, you can access it at this address.

https://lore.kernel.org/lkml/[email protected]/

Thx,
Yangtao

2023-03-20 03:35:19

by Joseph Qi

[permalink] [raw]
Subject: Re: [PATCH v2, RESEND 08/10] ocfs2: convert to kobject_del_and_put()



On 3/19/23 5:26 PM, Yangtao Li wrote:
> Use kobject_del_and_put() to simplify code.
>
> Cc: Greg Kroah-Hartman <[email protected]>
> Cc: "Rafael J. Wysocki" <[email protected]>
> Signed-off-by: Yangtao Li <[email protected]>
> ---
> fs/ocfs2/filecheck.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/fs/ocfs2/filecheck.c b/fs/ocfs2/filecheck.c
> index 1ad7106741f8..fb9cf601245b 100644
> --- a/fs/ocfs2/filecheck.c
> +++ b/fs/ocfs2/filecheck.c
> @@ -198,8 +198,7 @@ void ocfs2_filecheck_remove_sysfs(struct ocfs2_super *osb)
> if (!osb->osb_fc_ent.fs_fcheck)
> return;
>
> - kobject_del(&osb->osb_fc_ent.fs_kobj);
> - kobject_put(&osb->osb_fc_ent.fs_kobj);
> + kobject_del_and_put(&osb->osb_fc_ent.fs_kobj);
> wait_for_completion(&osb->osb_fc_ent.fs_kobj_unregister);
> ocfs2_filecheck_sysfs_free(&osb->osb_fc_ent);
> }

Can't find any implementation of kobject_del_and_put() in mainline.
So I guess you've introduced it at the beginning of this series? Since I
can only see this one:(
So it depends on kobject lib. If kobject lib accepts this helper, it's
fine to me.

Thanks,
Joseph

2023-03-20 04:09:09

by Damien Le Moal

[permalink] [raw]
Subject: Re: [PATCH v2, RESEND 01/10] kobject: introduce kobject_del_and_put()

On 3/20/23 12:34, Yangtao Li wrote:
> Hi all,
>
> Out of consideration for minimizing disruption, I did not send the
> patchset to everyone. However, it seems that my consideration was
> unnecessary, so I CC'd everyone on the first patch. If you would
> like to see the entire patchset, you can access it at this address.
>
> https://lore.kernel.org/lkml/[email protected]/

Hard to comment on patches with this. It is only 10 patches. So send everything
please.

>
> Thx,
> Yangtao

--
Damien Le Moal
Western Digital Research


2023-03-20 07:12:12

by 李扬韬

[permalink] [raw]
Subject: Re: [PATCH v2, RESEND 01/10] kobject: introduce kobject_del_and_put()

Hi filesystem maintainers,

> Hard to comment on patches with this. It is only 10 patches. So send everything please.

If you are interested in the entire patchset besides Damien,
please let me know. I'll resend the email later to cc more people.

Thx,
Yangtao

2023-03-20 07:26:18

by Damien Le Moal

[permalink] [raw]
Subject: Re: [PATCH v2, RESEND 01/10] kobject: introduce kobject_del_and_put()

On 3/20/23 16:11, Yangtao Li wrote:
> Hi filesystem maintainers,
>
>> Hard to comment on patches with this. It is only 10 patches. So send everything please.
>
> If you are interested in the entire patchset besides Damien,
> please let me know. I'll resend the email later to cc more people.

Yes, I said I am interested, twice already. It is IMPOSSIBLE to review a patch
without the context of other patches before/after said patch. So if you want a
review/ack for zonefs, then send the entire series.

>
> Thx,
> Yangtao

--
Damien Le Moal
Western Digital Research


2023-03-20 15:02:29

by Darrick J. Wong

[permalink] [raw]
Subject: Re: [PATCH v2, RESEND 07/10] xfs: convert to kobject_del_and_put()

On Sun, Mar 19, 2023 at 05:26:38PM +0800, Yangtao Li wrote:
> Use kobject_del_and_put() to simplify code.
>
> Cc: Greg Kroah-Hartman <[email protected]>
> Cc: "Rafael J. Wysocki" <[email protected]>
> Signed-off-by: Yangtao Li <[email protected]>

Looks good to me,
Acked-by: Darrick J. Wong <[email protected]>

--D

> ---
> fs/xfs/xfs_sysfs.h | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/fs/xfs/xfs_sysfs.h b/fs/xfs/xfs_sysfs.h
> index 148893ebfdef..e2ff063e2c29 100644
> --- a/fs/xfs/xfs_sysfs.h
> +++ b/fs/xfs/xfs_sysfs.h
> @@ -48,8 +48,7 @@ static inline void
> xfs_sysfs_del(
> struct xfs_kobj *kobj)
> {
> - kobject_del(&kobj->kobject);
> - kobject_put(&kobj->kobject);
> + kobject_del_and_put(&kobj->kobject);
> wait_for_completion(&kobj->complete);
> }
>
> --
> 2.35.1
>

2023-03-20 16:12:03

by David Sterba

[permalink] [raw]
Subject: Re: [PATCH v2, RESEND 06/10] btrfs: convert to kobject_del_and_put()

On Sun, Mar 19, 2023 at 05:26:37PM +0800, Yangtao Li wrote:
> Use kobject_del_and_put() to simplify code.
>
> Cc: Greg Kroah-Hartman <[email protected]>
> Cc: "Rafael J. Wysocki" <[email protected]>
> Signed-off-by: Yangtao Li <[email protected]>

Acked-by: David Sterba <[email protected]>