[PATCH 00/18] SWN: Decouple witness registrations and tcons
Samuel Cabrero <[email protected]>
| Newsgroups | org.kernel.vger.linux-cifs |
|---|---|
| Message-ID | <[email protected]> |
This patches removes the cached tcon pointers from the witness registrations. First patch in the serie reverts the current approach based on snapshots that fixes a race while processing a received notification. This patchset implements a different approach based on reference counting and fixes other races that could occur with concurrent register/unregister/notification processing. The witness registration stores now all required information to issue register/unregister DCERPC calls (like auth info and target address), and when a notification is received it applies it to all matching witness-enabled tcons. Each witness registration has its own task to enforce the registration in case the userspace daemon is started after mounting the share, instead of overload the echo task for this purpose. Samuel Cabrero (18): Revert "smb: client: resolve SWN tcon from live registrations" smb:client: Adjust witness notification request smb:client: Rename variable to match the rest of the code smb:client: Split idr remove and release functions smb:client: Add a specific task to refresh witness registrations smb:client: Store the tcon dstaddr in the witness registration smb:client: Fix printf format string smb:client: Save memory allocations smb:client: Use the correct return code smb:client: Improve tcon matching logic smb:client: Pass the tcon to cifs_swn_send_register_message smb:client: Pass the tcon to notification handlers smb:client: Introduce swn_notification struct smb:client: Cache auth info smb:client: Do not store the tcon reference, find a matching one smb:client: Simplify registration creation smb:client: Improve registration network and share names handling smb:client: Avoid witness re-register if the address did not change fs/smb/client/cifs_swn.c | 1179 ++++++++++++++++++++++---------------- fs/smb/client/cifs_swn.h | 3 - fs/smb/client/connect.c | 3 - fs/smb/client/trace.h | 4 +- 4 files changed, 682 insertions(+), 507 deletions(-) -- 2.54.0