[PATCH] knfsd: nfsd4: simplify migration op check
[sfrench/cifs-2.6.git] / fs / inotify_user.c
index 845dc79a4e9c3caa33b7d72aeee5e5bd7ea81a31..55f6da55b7c0ec36f8e76307c512999570103e4e 100644 (file)
@@ -34,8 +34,8 @@
 
 #include <asm/ioctls.h>
 
-static kmem_cache_t *watch_cachep __read_mostly;
-static kmem_cache_t *event_cachep __read_mostly;
+static struct kmem_cache *watch_cachep __read_mostly;
+static struct kmem_cache *event_cachep __read_mostly;
 
 static struct vfsmount *inotify_mnt __read_mostly;
 
@@ -187,7 +187,7 @@ static struct inotify_kernel_event * kernel_event(s32 wd, u32 mask, u32 cookie,
 {
        struct inotify_kernel_event *kevent;
 
-       kevent = kmem_cache_alloc(event_cachep, GFP_KERNEL);
+       kevent = kmem_cache_alloc(event_cachep, GFP_NOFS);
        if (unlikely(!kevent))
                return NULL;
 
@@ -253,7 +253,8 @@ inotify_dev_get_event(struct inotify_device *dev)
  * Can sleep (calls kernel_event()).
  */
 static void inotify_dev_queue_event(struct inotify_watch *w, u32 wd, u32 mask,
-                                   u32 cookie, const char *name)
+                                   u32 cookie, const char *name,
+                                   struct inode *ignored)
 {
        struct inotify_user_watch *watch;
        struct inotify_device *dev;
@@ -379,6 +380,7 @@ static int create_watch(struct inotify_device *dev, struct inode *inode,
 
        atomic_inc(&dev->user->inotify_watches);
 
+       inotify_init_watch(&watch->wdata);
        ret = inotify_add_watch(dev->ih, &watch->wdata, inode, mask);
        if (ret < 0)
                free_inotify_user_watch(&watch->wdata);
@@ -568,9 +570,9 @@ asmlinkage long sys_inotify_init(void)
        dev->ih = ih;
 
        filp->f_op = &inotify_fops;
-       filp->f_vfsmnt = mntget(inotify_mnt);
-       filp->f_dentry = dget(inotify_mnt->mnt_root);
-       filp->f_mapping = filp->f_dentry->d_inode->i_mapping;
+       filp->f_path.mnt = mntget(inotify_mnt);
+       filp->f_path.dentry = dget(inotify_mnt->mnt_root);
+       filp->f_mapping = filp->f_path.dentry->d_inode->i_mapping;
        filp->f_mode = FMODE_READ;
        filp->f_flags = O_RDONLY;
        filp->private_data = dev;
@@ -670,11 +672,11 @@ out:
        return ret;
 }
 
-static struct super_block *
+static int
 inotify_get_sb(struct file_system_type *fs_type, int flags,
-              const char *dev_name, void *data)
+              const char *dev_name, void *data, struct vfsmount *mnt)
 {
-    return get_sb_pseudo(fs_type, "inotify", NULL, 0xBAD1DEA);
+       return get_sb_pseudo(fs_type, "inotify", NULL, 0xBAD1DEA, mnt);
 }
 
 static struct file_system_type inotify_fs_type = {