VServer 1.9.2 (patch-2.6.8.1-vs1.9.2.diff)
[linux-2.6.git] / fs / xfs / linux-2.6 / xfs_file.c
index aaa74d2..e8e02f5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000-2003 Silicon Graphics, Inc.  All Rights Reserved.
+ * Copyright (c) 2000-2004 Silicon Graphics, Inc.  All Rights Reserved.
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of version 2 of the GNU General Public License as
@@ -53,6 +53,7 @@
 #include "xfs_rw.h"
 
 #include <linux/dcache.h>
+#include <linux/smp_lock.h>
 
 static struct vm_operations_struct linvfs_file_vm_ops;
 
@@ -440,9 +441,10 @@ linvfs_ioctl(
        int             error;
        vnode_t         *vp = LINVFS_GET_VP(inode);
 
-       ASSERT(vp);
+       unlock_kernel();
        VOP_IOCTL(vp, inode, filp, 0, cmd, arg, error);
        VMODIFY(vp);
+       lock_kernel();
 
        /* NOTE:  some of the ioctl's return positive #'s as a
         *        byte count indicating success, such as
@@ -463,9 +465,11 @@ linvfs_ioctl_invis(
        int             error;
        vnode_t         *vp = LINVFS_GET_VP(inode);
 
+       unlock_kernel();
        ASSERT(vp);
        VOP_IOCTL(vp, inode, filp, IO_INVIS, cmd, arg, error);
        VMODIFY(vp);
+       lock_kernel();
 
        /* NOTE:  some of the ioctl's return positive #'s as a
         *        byte count indicating success, such as