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: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:
Jeff Layton 2012-03-29 07:52:49 -04:00 committed by J. Bruce Fields
parent 4ca1f872cd
commit 797a9d797f
4 changed files with 21 additions and 5 deletions

View File

@ -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__ */

View File

@ -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);
}

View File

@ -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)
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)
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>");

View File

@ -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 */