Hi,
The hci_sysfs uses work queue to finish the sysfs add/del fuction.
But when the same device connection failed, if another connection of
same device come in before the delete work finish, sysfs will warn
about duplicate filename creating.Sep 19 12:30:27 darkstar kernel: sysfs: duplicate filename
'acl00194FDB6C71' can not be created
Sep 19 12:30:27 darkstar kernel: WARNING: at fs/sysfs/dir.c:433 sysfs_add_one()
Sep 19 12:30:27 darkstar kernel: [<c01c3ad0>] sysfs_add_one+0xa0/0xe0
Sep 19 12:30:27 darkstar kernel: [<c01c3e38>] create_dir+0x48/0xb0
Sep 19 12:30:27 darkstar kernel: [<c0178df5>] __slab_alloc+0x205/0x250
Sep 19 12:30:27 darkstar kernel: [<c01c3ee9>] sysfs_create_dir+0x29/0x50
Sep 19 12:30:27 darkstar kernel: [<c024cf5b>] create_dir+0x1b/0x50
Sep 19 12:30:27 darkstar kernel: [<c024d226>] kobject_add+0x46/0x150
Sep 19 12:30:27 darkstar kernel: [<c024d404>] kobject_set_name+0x84/0xf0
Sep 19 12:30:27 darkstar kernel: [<c02b7035>] device_add+0x95/0x350
Sep 19 12:30:27 darkstar kernel: [<f88aec60>] add_conn+0x0/0x90 [bluetooth]
Sep 19 12:30:27 darkstar kernel: [<f88aec6f>] add_conn+0xf/0x90 [bluetooth]
Sep 19 12:30:27 darkstar kernel: [<c01663d0>] vmstat_update+0x0/0x30
Sep 19 12:30:27 darkstar kernel: [<c013bdfe>] run_workqueue+0x5e/0x110
Sep 19 12:30:27 darkstar kernel: [<c013bf5c>] worker_thread+0xac/0x100
Sep 19 12:30:27 darkstar kernel: [<c0140340>] autoremove_wake_function+0x0/0x50
Sep 19 12:30:27 darkstar kernel: [<c0140340>] autoremove_wake_function+0x0/0x50
Sep 19 12:30:27 darkstar kernel: [<c013beb0>] worker_thread+0x0/0x100
Sep 19 12:30:27 darkstar kernel: [<c013fd49>] kthread+0x59/0xa0
Sep 19 12:30:27 darkstar kernel: [<c013fcf0>] kthread+0x0/0xa0
Sep 19 12:30:27 darkstar kernel: [<c0104fb3>] kernel_thread_helper+0x7/0x14
Sep 19 12:30:27 darkstar kernel: =======================
Sep 19 12:30:27 darkstar kernel: kobject_add failed for...
which kernel are we talking about. This problem should not exist
anymore. However the usage of a work queue is unavoidable.Regards
Marcel
-
Recently, I encounted this issue again:
Oct 26 16:57:00 darkstar kernel: sysfs: duplicate filename
'acl00194FA4E517' can not be created
Oct 26 16:57:00 darkstar kernel: WARNING: at fs/sysfs/dir.c:424 sysfs_add_one()
Oct 26 16:57:00 darkstar kernel: [<c01c0120>] sysfs_add_one+0xa0/0xe0
Oct 26 16:57:00 darkstar kernel: [<c01c0d7b>] sysfs_create_link+0x9b/0x140
Oct 26 16:57:00 darkstar kernel: [<c01c1671>] create_files+0x31/0x60
Oct 26 16:57:00 darkstar kernel: [<c02b537b>] bus_add_device+0x5b/0xf0
Oct 26 16:57:00 darkstar kernel: [<c02b391c>] device_add+0x11c/0x350
Oct 26 16:57:00 darkstar kernel: [<f8879410>] add_conn+0x0/0x90 [bluetooth]
Oct 26 16:57:00 darkstar kernel: [<f887941f>] add_conn+0xf/0x90 [bluetooth]
Oct 26 16:57:00 darkstar kernel: [<c013baee>] run_workqueue+0x5e/0x110
Oct 26 16:57:00 darkstar kernel: [<c013bc4c>] worker_thread+0xac/0x100
Oct 26 16:57:00 darkstar kernel: [<c0140000>] autoremove_wake_function+0x0/0x50
Oct 26 16:57:00 darkstar kernel: [<c0140000>] autoremove_wake_function+0x0/0x50
Oct 26 16:57:00 darkstar kernel: [<c013bba0>] worker_thread+0x0/0x100
Oct 26 16:57:00 darkstar kernel: [<c013fa39>] kthread+0x59/0xa0
Oct 26 16:57:00 darkstar kernel: [<c013f9e0>] kthread+0x0/0xa0
Oct 26 16:57:00 darkstar kernel: [<c0104f83>] kernel_thread_helper+0x7/0x14
Oct 26 16:57:00 darkstar kernel: =======================
Oct 26 16:57:00 darkstar kernel: add_conn: Failed to register connection deviceSeems same problem as before. This time, I just used several rfcomm
connections.
I think if we can add an atomic variable 'going_away' like this:
in hci_conn_del_sysfs:
before INIT_WORK;
atomic_set(&going_away, 1)in del_conn:
after deleting completed
atomic_set(&going_away, 0)in add_conn:
busy waiting the going_away
while (atomic_read(&going_away))
cpu_relax()Regards
-
| Michal Piotrowski | Re: 2.6.23-rc3-mm1 |
| Tarkan Erimer | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
| Fred Tyler | Slow, persistent memory leak in 2.6.20 |
| Roland Dreier | Re: Integration of SCST in the mainstream Linux kernel |
git: | |
| David Miller | [GIT]: Networking |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Gerrit Renker | [PATCH 27/37] dccp: Integration of dynamic feature activation - part 2 (server side) |
| Antonio Almeida | HTB accuracy for high speed |
