mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 19:00:25 +00:00
![Aurelien Aptel](/assets/img/avatar_default.png)
This commit doesn't change the logic of SWN. Add dummy implementation of SWN functions when SWN is disabled instead of using ifdef sections. The dummy functions get optimized out, this leads to clearer code and compile time type-checking regardless of config options with no runtime penalty. Leave the simple ifdefs section as-is. A single bitfield (bool foo:1) on its own will use up one int. Move tcon->use_witness out of ifdefs with the other tcon bitfields. Signed-off-by: Aurelien Aptel <aaptel@suse.com> Reviewed-by: Samuel Cabrero <scabrero@suse.de> Signed-off-by: Steve French <stfrench@microsoft.com>
52 lines
1.4 KiB
C
52 lines
1.4 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Witness Service client for CIFS
|
|
*
|
|
* Copyright (c) 2020 Samuel Cabrero <scabrero@suse.de>
|
|
*/
|
|
|
|
#ifndef _CIFS_SWN_H
|
|
#define _CIFS_SWN_H
|
|
#include "cifsglob.h"
|
|
|
|
struct cifs_tcon;
|
|
struct sk_buff;
|
|
struct genl_info;
|
|
|
|
#ifdef CONFIG_CIFS_SWN_UPCALL
|
|
extern int cifs_swn_register(struct cifs_tcon *tcon);
|
|
|
|
extern int cifs_swn_unregister(struct cifs_tcon *tcon);
|
|
|
|
extern int cifs_swn_notify(struct sk_buff *skb, struct genl_info *info);
|
|
|
|
extern void cifs_swn_dump(struct seq_file *m);
|
|
|
|
extern void cifs_swn_check(void);
|
|
|
|
static inline bool cifs_swn_set_server_dstaddr(struct TCP_Server_Info *server)
|
|
{
|
|
if (server->use_swn_dstaddr) {
|
|
server->dstaddr = server->swn_dstaddr;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
static inline void cifs_swn_reset_server_dstaddr(struct TCP_Server_Info *server)
|
|
{
|
|
server->use_swn_dstaddr = false;
|
|
}
|
|
|
|
#else
|
|
|
|
static inline int cifs_swn_register(struct cifs_tcon *tcon) { return 0; }
|
|
static inline int cifs_swn_unregister(struct cifs_tcon *tcon) { return 0; }
|
|
static inline int cifs_swn_notify(struct sk_buff *s, struct genl_info *i) { return 0; }
|
|
static inline void cifs_swn_dump(struct seq_file *m) {}
|
|
static inline void cifs_swn_check(void) {}
|
|
static inline bool cifs_swn_set_server_dstaddr(struct TCP_Server_Info *server) { return false; }
|
|
static inline void cifs_swn_reset_server_dstaddr(struct TCP_Server_Info *server) {}
|
|
|
|
#endif /* CONFIG_CIFS_SWN_UPCALL */
|
|
#endif /* _CIFS_SWN_H */
|