#
b38bc9c2 |
| 21-May-2021 |
Alexander Aring <aahringo@redhat.com> |
fs: dlm: fix srcu read lock usage
This patch holds the srcu connection read lock in cases where we lookup the connections and accessing it. We don't hold the srcu lock in workers function where the
fs: dlm: fix srcu read lock usage
This patch holds the srcu connection read lock in cases where we lookup the connections and accessing it. We don't hold the srcu lock in workers function where the scheduled worker is part of the connection itself. The connection should not be freed if any worker is scheduled or pending.
Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
show more ...
|
#
2df6b762 |
| 21-May-2021 |
Alexander Aring <aahringo@redhat.com> |
fs: dlm: add dlm macros for ratelimit log
This patch add ratelimit macro to dlm subsystem and will set the connecting log message to ratelimit. In non blocking connecting cases it will print out thi
fs: dlm: add dlm macros for ratelimit log
This patch add ratelimit macro to dlm subsystem and will set the connecting log message to ratelimit. In non blocking connecting cases it will print out this message a lot.
Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
show more ...
|
Revision tags: v5.4.119, v5.10.36, v5.10.35, v5.10.34, v5.4.116, v5.10.33, v5.12, v5.10.32, v5.10.31, v5.10.30, v5.10.27 |
|
#
2fd8db2d |
| 27-Mar-2021 |
Yang Yingliang <yangyingliang@huawei.com> |
fs: dlm: fix missing unlock on error in accept_from_sock()
Add the missing unlock before return from accept_from_sock() in the error handling case.
Fixes: 6cde210a9758 ("fs: dlm: add helper for ini
fs: dlm: fix missing unlock on error in accept_from_sock()
Add the missing unlock before return from accept_from_sock() in the error handling case.
Fixes: 6cde210a9758 ("fs: dlm: add helper for init connection") Reported-by: Hulk Robot <hulkci@huawei.com> Signed-off-by: Yang Yingliang <yangyingliang@huawei.com> Signed-off-by: David Teigland <teigland@redhat.com>
show more ...
|
Revision tags: v5.10.26, v5.10.25, v5.10.24, v5.10.23, v5.10.22, v5.10.21, v5.10.20 |
|
#
9d232469 |
| 01-Mar-2021 |
Alexander Aring <aahringo@redhat.com> |
fs: dlm: add shutdown hook
This patch fixes issues which occurs when dlm lowcomms synchronize their workqueues but dlm application layer already released the lockspace. In such cases messages like:
fs: dlm: add shutdown hook
This patch fixes issues which occurs when dlm lowcomms synchronize their workqueues but dlm application layer already released the lockspace. In such cases messages like:
dlm: gfs2: release_lockspace final free dlm: invalid lockspace 3841231384 from 1 cmd 1 type 11
are printed on the kernel log. This patch is solving this issue by introducing a new "shutdown" hook before calling "stop" hook when the lockspace is going to be released finally. This should pretend any dlm messages sitting in the workqueues during or after lockspace removal.
It's necessary to call dlm_scand_stop() as I instrumented dlm_lowcomms_get_buffer() code to report a warning after it's called after dlm_midcomms_shutdown() functionality, see below:
WARNING: CPU: 1 PID: 3794 at fs/dlm/midcomms.c:1003 dlm_midcomms_get_buffer+0x167/0x180 Modules linked in: joydev iTCO_wdt intel_pmc_bxt iTCO_vendor_support drm_ttm_helper ttm pcspkr serio_raw i2c_i801 i2c_smbus drm_kms_helper virtio_scsi lpc_ich virtio_balloon virtio_console xhci_pci xhci_pci_renesas cec qemu_fw_cfg drm [last unloaded: qxl] CPU: 1 PID: 3794 Comm: dlm_scand Tainted: G W 5.11.0+ #26 Hardware name: Red Hat KVM/RHEL-AV, BIOS 1.13.0-2.module+el8.3.0+7353+9de0a3cc 04/01/2014 RIP: 0010:dlm_midcomms_get_buffer+0x167/0x180 Code: 5d 41 5c 41 5d 41 5e 41 5f c3 0f 0b 45 31 e4 5b 5d 4c 89 e0 41 5c 41 5d 41 5e 41 5f c3 4c 89 e7 45 31 e4 e8 3b f1 ec ff eb 86 <0f> 0b 4c 89 e7 45 31 e4 e8 2c f1 ec ff e9 74 ff ff ff 0f 1f 80 00 RSP: 0018:ffffa81503f8fe60 EFLAGS: 00010202 RAX: 0000000000000008 RBX: ffff8f969827f200 RCX: 0000000000000001 RDX: 0000000000000000 RSI: ffffffffad1e89a0 RDI: ffff8f96a5294160 RBP: 0000000000000001 R08: 0000000000000000 R09: ffff8f96a250bc60 R10: 00000000000045d3 R11: 0000000000000000 R12: ffff8f96a250bc60 R13: ffffa81503f8fec8 R14: 0000000000000070 R15: 0000000000000c40 FS: 0000000000000000(0000) GS:ffff8f96fbc00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 000055aa3351c000 CR3: 000000010bf22000 CR4: 00000000000006e0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: dlm_scan_rsbs+0x420/0x670 ? dlm_uevent+0x20/0x20 dlm_scand+0xbf/0xe0 kthread+0x13a/0x150 ? __kthread_bind_mask+0x60/0x60 ret_from_fork+0x22/0x30
To synchronize all dlm scand messages we stop it right before shutdown hook.
Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
show more ...
|
#
eec054b5 |
| 01-Mar-2021 |
Alexander Aring <aahringo@redhat.com> |
fs: dlm: flush swork on shutdown
This patch fixes the flushing of send work before shutdown. The function cancel_work_sync() is not the right workqueue functionality to use here as it would cancel t
fs: dlm: flush swork on shutdown
This patch fixes the flushing of send work before shutdown. The function cancel_work_sync() is not the right workqueue functionality to use here as it would cancel the work if the work queues itself. In cases of EAGAIN in send() for dlm message we need to be sure that everything is send out before. The function flush_work() will ensure that every send work is be done inclusive in EAGAIN cases.
Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
show more ...
|
#
f0747ebf |
| 01-Mar-2021 |
Alexander Aring <aahringo@redhat.com> |
fs: dlm: simplify writequeue handling
This patch cleans up the current dlm sending allocator handling by using some named macros, list functionality and removes some goto statements.
Signed-off-by:
fs: dlm: simplify writequeue handling
This patch cleans up the current dlm sending allocator handling by using some named macros, list functionality and removes some goto statements.
Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
show more ...
|
#
e1a7cbce |
| 01-Mar-2021 |
Alexander Aring <aahringo@redhat.com> |
fs: dlm: use GFP_ZERO for page buffer
This patch uses GFP_ZERO for allocate a page for the internal dlm sending buffer allocator instead of calling memset zero after every allocation. An already all
fs: dlm: use GFP_ZERO for page buffer
This patch uses GFP_ZERO for allocate a page for the internal dlm sending buffer allocator instead of calling memset zero after every allocation. An already allocated space will never be reused again.
Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
show more ...
|
#
c45674fb |
| 01-Mar-2021 |
Alexander Aring <aahringo@redhat.com> |
fs: dlm: change allocation limits
While running tcpkill I experienced invalid header length values while receiving to check that a node doesn't try to send a invalid dlm message we also check on app
fs: dlm: change allocation limits
While running tcpkill I experienced invalid header length values while receiving to check that a node doesn't try to send a invalid dlm message we also check on applications minimum allocation limit. Also use DEFAULT_BUFFER_SIZE as maximum allocation limit. The define LOWCOMMS_MAX_TX_BUFFER_LEN is to calculate maximum buffer limits on application layer, future midcomms layer will subtract their needs from this define.
Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
show more ...
|
#
51746163 |
| 01-Mar-2021 |
Alexander Aring <aahringo@redhat.com> |
fs: dlm: add check if dlm is currently running
This patch adds checks for dlm config attributes regarding to protocol parameters as it makes only sense to change them when dlm is not running. It als
fs: dlm: add check if dlm is currently running
This patch adds checks for dlm config attributes regarding to protocol parameters as it makes only sense to change them when dlm is not running. It also adds a check for valid protocol specifiers and return invalid argument if they are not supported.
Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
show more ...
|
#
e9a470ac |
| 01-Mar-2021 |
Alexander Aring <aahringo@redhat.com> |
fs: dlm: set subclass for othercon sock_mutex
This patch sets the lockdep subclass for the othercon socket mutex. In various places the connection socket mutex is held while locking the othercon soc
fs: dlm: set subclass for othercon sock_mutex
This patch sets the lockdep subclass for the othercon socket mutex. In various places the connection socket mutex is held while locking the othercon socket mutex. This patch will remove lockdep warnings when such case occurs.
Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
show more ...
|
#
b30a624f |
| 01-Mar-2021 |
Alexander Aring <aahringo@redhat.com> |
fs: dlm: set connected bit after accept
This patch sets the CF_CONNECTED bit when dlm accepts a connection from another node. If we don't set this bit, next time if the connection socket gets writab
fs: dlm: set connected bit after accept
This patch sets the CF_CONNECTED bit when dlm accepts a connection from another node. If we don't set this bit, next time if the connection socket gets writable it will assume an event that the connection is successfully connected. However that is only the case when the connection did a connect.
Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
show more ...
|
#
e125fbeb |
| 01-Mar-2021 |
Alexander Aring <aahringo@redhat.com> |
fs: dlm: fix mark setting deadlock
This patch fixes an deadlock issue when dlm_lowcomms_close() is called. When dlm_lowcomms_close() is called the clusters_root.subsys.su_mutex is held to remove con
fs: dlm: fix mark setting deadlock
This patch fixes an deadlock issue when dlm_lowcomms_close() is called. When dlm_lowcomms_close() is called the clusters_root.subsys.su_mutex is held to remove configfs items. At this time we flushing (e.g. cancel_work_sync()) the workers of send and recv workqueue. Due the fact that we accessing configfs items (mark values), these workers will lock clusters_root.subsys.su_mutex as well which are already hold by dlm_lowcomms_close() and ends in a deadlock situation.
[67170.703046] ====================================================== [67170.703965] WARNING: possible circular locking dependency detected [67170.704758] 5.11.0-rc4+ #22 Tainted: G W [67170.705433] ------------------------------------------------------ [67170.706228] dlm_controld/280 is trying to acquire lock: [67170.706915] ffff9f2f475a6948 ((wq_completion)dlm_recv){+.+.}-{0:0}, at: __flush_work+0x203/0x4c0 [67170.708026] but task is already holding lock: [67170.708758] ffffffffa132f878 (&clusters_root.subsys.su_mutex){+.+.}-{3:3}, at: configfs_rmdir+0x29b/0x310 [67170.710016] which lock already depends on the new lock.
The new behaviour adds the mark value to the node address configuration which doesn't require to held the clusters_root.subsys.su_mutex by accessing mark values in a separate datastructure. However the mark values can be set now only after a node address was set which is the case when the user is using dlm_controld.
Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
show more ...
|
Revision tags: v5.10.19, v5.4.101, v5.10.18, v5.10.17, v5.11, v5.10.16, v5.10.15, v5.10.14, v5.10 |
|
#
4f19d071 |
| 02-Nov-2020 |
Alexander Aring <aahringo@redhat.com> |
fs: dlm: check on existing node address
This patch checks if we add twice the same address to a per node address array. This should never be the case and we report -EEXIST to the user space.
Signed
fs: dlm: check on existing node address
This patch checks if we add twice the same address to a per node address array. This should never be the case and we report -EEXIST to the user space.
Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
show more ...
|
#
40c6b83e |
| 02-Nov-2020 |
Alexander Aring <aahringo@redhat.com> |
fs: dlm: constify addr_compare
This patch just constify some function parameter which should be have a read access only.
Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Te
fs: dlm: constify addr_compare
This patch just constify some function parameter which should be have a read access only.
Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
show more ...
|
#
1a26bfaf |
| 02-Nov-2020 |
Alexander Aring <aahringo@redhat.com> |
fs: dlm: fix check for multi-homed hosts
This patch will use the runtime array size dlm_local_count variable to check the actual size of the dlm_local_addr array. There exists currently a cleanup bu
fs: dlm: fix check for multi-homed hosts
This patch will use the runtime array size dlm_local_count variable to check the actual size of the dlm_local_addr array. There exists currently a cleanup bug, because the tcp_listen_for_all() functionality might check on a dangled pointer.
Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
show more ...
|
#
d11ccd45 |
| 02-Nov-2020 |
Alexander Aring <aahringo@redhat.com> |
fs: dlm: listen socket out of connection hash
This patch introduces a own connection structure for the listen socket handling instead of handling the listen socket as normal connection structure in
fs: dlm: listen socket out of connection hash
This patch introduces a own connection structure for the listen socket handling instead of handling the listen socket as normal connection structure in the connection hash. We can remove some nodeid equals zero validation checks, because this nodeid should not exists anymore inside the node hash. This patch also removes the sock mutex in accept_from_sock() function because this function can't occur in another parallel context if it's scheduled on only one workqueue.
Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
show more ...
|
#
13004e8a |
| 02-Nov-2020 |
Alexander Aring <aahringo@redhat.com> |
fs: dlm: refactor sctp sock parameter
This patch refactors sctp_bind_addrs() to work with a socket parameter instead of a connection parameter.
Signed-off-by: Alexander Aring <aahringo@redhat.com>
fs: dlm: refactor sctp sock parameter
This patch refactors sctp_bind_addrs() to work with a socket parameter instead of a connection parameter.
Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
show more ...
|
#
42873c90 |
| 02-Nov-2020 |
Alexander Aring <aahringo@redhat.com> |
fs: dlm: move shutdown action to node creation
This patch move the assignment for the shutdown action callback to the node creation functionality.
Signed-off-by: Alexander Aring <aahringo@redhat.co
fs: dlm: move shutdown action to node creation
This patch move the assignment for the shutdown action callback to the node creation functionality.
Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
show more ...
|
#
0672c3c2 |
| 02-Nov-2020 |
Alexander Aring <aahringo@redhat.com> |
fs: dlm: move connect callback in node creation
This patch moves the assignment for the connect callback to the node creation instead of assign some dummy functionality. The assignment which connect
fs: dlm: move connect callback in node creation
This patch moves the assignment for the connect callback to the node creation instead of assign some dummy functionality. The assignment which connect functionality will be used will be detected according to the configfs setting.
Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
show more ...
|
#
6cde210a |
| 02-Nov-2020 |
Alexander Aring <aahringo@redhat.com> |
fs: dlm: add helper for init connection
This patch will move the connection structure initialization into an own function. This avoids cases to update the othercon initialization.
Signed-off-by: Al
fs: dlm: add helper for init connection
This patch will move the connection structure initialization into an own function. This avoids cases to update the othercon initialization.
Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
show more ...
|
#
19633c7e |
| 02-Nov-2020 |
Alexander Aring <aahringo@redhat.com> |
fs: dlm: handle non blocked connect event
The manpage of connect shows that in non blocked mode a writeability indicates successful connection event. This patch is handling this event inside the wri
fs: dlm: handle non blocked connect event
The manpage of connect shows that in non blocked mode a writeability indicates successful connection event. This patch is handling this event inside the writeability callback. In case of SCTP we use blocking connect functionality which indicates a successful connect when the function returns with a successful return value.
Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
show more ...
|
#
53a5edaa |
| 02-Nov-2020 |
Alexander Aring <aahringo@redhat.com> |
fs: dlm: flush othercon at close
This patch ensures we also flush the othercon writequeue when a lowcomms close occurs.
Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Tei
fs: dlm: flush othercon at close
This patch ensures we also flush the othercon writequeue when a lowcomms close occurs.
Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
show more ...
|
#
692f51c8 |
| 02-Nov-2020 |
Alexander Aring <aahringo@redhat.com> |
fs: dlm: add get buffer error handling
This patch adds an error handling to the get buffer functionality if the user is requesting a buffer length which is more than possible of the internal buffer
fs: dlm: add get buffer error handling
This patch adds an error handling to the get buffer functionality if the user is requesting a buffer length which is more than possible of the internal buffer allocator. This should never happen because specific handling decided by compile time, but will warn if somebody forget about to handle this limitation right.
Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
show more ...
|
#
5cbec208 |
| 02-Nov-2020 |
Alexander Aring <aahringo@redhat.com> |
fs: dlm: fix proper srcu api call
This patch will use call_srcu() instead of call_rcu() because the related datastructure resource are handled under srcu context. I assume the current code is fine a
fs: dlm: fix proper srcu api call
This patch will use call_srcu() instead of call_rcu() because the related datastructure resource are handled under srcu context. I assume the current code is fine anyway since free_conn() must be called when the related resource are not in use otherwise. However it will correct the overall handling in a srcu context.
Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
show more ...
|
#
7425fe57 |
| 21-May-2021 |
Alexander Aring <aahringo@redhat.com> |
fs: dlm: cancel work sync othercon
[ Upstream commit c6aa00e3d20c2767ba3f57b64eb862572b9744b3 ]
These rx tx flags arguments are for signaling close_connection() from which worker they are called. O
fs: dlm: cancel work sync othercon
[ Upstream commit c6aa00e3d20c2767ba3f57b64eb862572b9744b3 ]
These rx tx flags arguments are for signaling close_connection() from which worker they are called. Obviously the receive worker cannot cancel itself and vice versa for swork. For the othercon the receive worker should only be used, however to avoid deadlocks we should pass the same flags as the original close_connection() was called.
Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
show more ...
|