patch-2.2.14 linux/fs/filesystems.c
Next file: linux/fs/hfs/dir.c
Previous file: linux/fs/file_table.c
Back to the patch index
Back to the overall index
- Lines: 66
- Date:
Tue Jan 4 10:12:23 2000
- Orig file:
v2.2.13/linux/fs/filesystems.c
- Orig date:
Mon Aug 9 16:05:57 1999
diff -u --recursive --new-file v2.2.13/linux/fs/filesystems.c linux/fs/filesystems.c
@@ -37,6 +37,7 @@
#endif
#include <linux/lockd/bind.h>
#include <linux/lockd/xdr.h>
+#include <linux/lockd/syscall.h>
#include <linux/init.h>
#include <linux/nls.h>
@@ -159,28 +160,48 @@
#ifdef CONFIG_NFSD_MODULE
int (*do_nfsservctl)(int, void *, void *) = NULL;
#endif
+
+#ifdef CONFIG_LOCKD_MODULE
+int (*do_lockdctl)(int, void *, void *) = NULL;
+#endif
+
int
asmlinkage sys_nfsservctl(int cmd, void *argp, void *resp)
{
-#ifndef CONFIG_NFSD_MODULE
- return -ENOSYS;
-#else
int ret = -ENOSYS;
+ if (cmd >= NFSCTL_LOCKD) {
+#if defined(CONFIG_LOCKD) || defined(CONFIG_LOCKD_MODULE)
+ lock_kernel();
+#ifdef CONFIG_LOCKD
+ ret = lockdctl(cmd, argp, resp);
+#else
+ if (do_lockdctl)
+ ret = do_lockdctl(cmd, argp, resp);
+#ifdef CONFIG_KMOD
+ else if (request_module ("lockd") == 0) {
+ if (do_lockdctl)
+ ret = do_lockdctl(cmd, argp, resp);
+ }
+#endif
+#endif
+ unlock_kernel();
+#endif
+ return ret;
+ }
+
+#ifdef CONFIG_NFSD_MODULE
lock_kernel();
- if (do_nfsservctl) {
+ if (do_nfsservctl)
ret = do_nfsservctl(cmd, argp, resp);
- goto out;
- }
#ifdef CONFIG_KMOD
- if (request_module ("nfsd") == 0) {
+ else if (request_module ("nfsd") == 0) {
if (do_nfsservctl)
ret = do_nfsservctl(cmd, argp, resp);
}
#endif /* CONFIG_KMOD */
-out:
unlock_kernel();
- return ret;
#endif /* CONFIG_NFSD_MODULE */
+ return ret;
}
#endif /* CONFIG_NFSD */
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)