Commit 797a9d79 authored by Jeff Layton's avatar Jeff Layton Committed by J. Bruce Fields

nfsd: only register cld pipe notifier when CONFIG_NFSD_V4 is enabled

Otherwise, we get a warning or error similar to this when building with
CONFIG_NFSD_V4 disabled:

    ERROR: "nfsd4_cld_block" [fs/nfsd/nfsd.ko] undefined!

Fix this by wrapping the calls to rpc_pipefs_notifier_register and
..._unregister in another function and providing no-op replacements
when CONFIG_NFSD_V4 is disabled.
Reported-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent 4ca1f872
...@@ -31,5 +31,4 @@ struct nfsd_net { ...@@ -31,5 +31,4 @@ struct nfsd_net {
}; };
extern int nfsd_net_id; extern int nfsd_net_id;
extern struct notifier_block nfsd4_cld_block;
#endif /* __NFSD_NETNS_H__ */ #endif /* __NFSD_NETNS_H__ */
...@@ -1032,3 +1032,15 @@ rpc_pipefs_event(struct notifier_block *nb, unsigned long event, void *ptr) ...@@ -1032,3 +1032,15 @@ rpc_pipefs_event(struct notifier_block *nb, unsigned long event, void *ptr)
struct notifier_block nfsd4_cld_block = { struct notifier_block nfsd4_cld_block = {
.notifier_call = rpc_pipefs_event, .notifier_call = rpc_pipefs_event,
}; };
int
register_cld_notifier(void)
{
return rpc_pipefs_notifier_register(&nfsd4_cld_block);
}
void
unregister_cld_notifier(void)
{
rpc_pipefs_notifier_unregister(&nfsd4_cld_block);
}
...@@ -1137,7 +1137,7 @@ static int __init init_nfsd(void) ...@@ -1137,7 +1137,7 @@ static int __init init_nfsd(void)
int retval; int retval;
printk(KERN_INFO "Installing knfsd (copyright (C) 1996 okir@monad.swb.de).\n"); printk(KERN_INFO "Installing knfsd (copyright (C) 1996 okir@monad.swb.de).\n");
retval = rpc_pipefs_notifier_register(&nfsd4_cld_block); retval = register_cld_notifier();
if (retval) if (retval)
return retval; return retval;
retval = register_pernet_subsys(&nfsd_net_ops); retval = register_pernet_subsys(&nfsd_net_ops);
...@@ -1186,7 +1186,7 @@ static int __init init_nfsd(void) ...@@ -1186,7 +1186,7 @@ static int __init init_nfsd(void)
out_unregister_pernet: out_unregister_pernet:
unregister_pernet_subsys(&nfsd_net_ops); unregister_pernet_subsys(&nfsd_net_ops);
out_unregister_notifier: out_unregister_notifier:
rpc_pipefs_notifier_unregister(&nfsd4_cld_block); unregister_cld_notifier();
return retval; return retval;
} }
...@@ -1203,7 +1203,7 @@ static void __exit exit_nfsd(void) ...@@ -1203,7 +1203,7 @@ static void __exit exit_nfsd(void)
nfsd_fault_inject_cleanup(); nfsd_fault_inject_cleanup();
unregister_filesystem(&nfsd_fs_type); unregister_filesystem(&nfsd_fs_type);
unregister_pernet_subsys(&nfsd_net_ops); unregister_pernet_subsys(&nfsd_net_ops);
rpc_pipefs_notifier_unregister(&nfsd4_cld_block); unregister_cld_notifier();
} }
MODULE_AUTHOR("Olaf Kirch <okir@monad.swb.de>"); MODULE_AUTHOR("Olaf Kirch <okir@monad.swb.de>");
......
...@@ -364,12 +364,17 @@ static inline u32 nfsd_suppattrs2(u32 minorversion) ...@@ -364,12 +364,17 @@ static inline u32 nfsd_suppattrs2(u32 minorversion)
NFSD_WRITEABLE_ATTRS_WORD2 NFSD_WRITEABLE_ATTRS_WORD2
extern int nfsd4_is_junction(struct dentry *dentry); extern int nfsd4_is_junction(struct dentry *dentry);
#else extern int register_cld_notifier(void);
extern void unregister_cld_notifier(void);
#else /* CONFIG_NFSD_V4 */
static inline int nfsd4_is_junction(struct dentry *dentry) static inline int nfsd4_is_junction(struct dentry *dentry)
{ {
return 0; return 0;
} }
#define register_cld_notifier() 0
#define unregister_cld_notifier() do { } while(0)
#endif /* CONFIG_NFSD_V4 */ #endif /* CONFIG_NFSD_V4 */
#endif /* LINUX_NFSD_NFSD_H */ #endif /* LINUX_NFSD_NFSD_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment