cifs: add SMB3 change notification support
[linux-2.6-microblaze.git] / fs / nsfs.c
index f75767b..b13bfd4 100644 (file)
--- a/fs/nsfs.c
+++ b/fs/nsfs.c
@@ -55,7 +55,7 @@ static void nsfs_evict(struct inode *inode)
        ns->ops->put(ns);
 }
 
-static void *__ns_get_path(struct path *path, struct ns_common *ns)
+static int __ns_get_path(struct path *path, struct ns_common *ns)
 {
        struct vfsmount *mnt = nsfs_mnt;
        struct dentry *dentry;
@@ -74,13 +74,13 @@ static void *__ns_get_path(struct path *path, struct ns_common *ns)
 got_it:
        path->mnt = mntget(mnt);
        path->dentry = dentry;
-       return NULL;
+       return 0;
 slow:
        rcu_read_unlock();
        inode = new_inode_pseudo(mnt->mnt_sb);
        if (!inode) {
                ns->ops->put(ns);
-               return ERR_PTR(-ENOMEM);
+               return -ENOMEM;
        }
        inode->i_ino = ns->inum;
        inode->i_mtime = inode->i_atime = inode->i_ctime = current_time(inode);
@@ -92,7 +92,7 @@ slow:
        dentry = d_alloc_anon(mnt->mnt_sb);
        if (!dentry) {
                iput(inode);
-               return ERR_PTR(-ENOMEM);
+               return -ENOMEM;
        }
        d_instantiate(dentry, inode);
        dentry->d_fsdata = (void *)ns->ops;
@@ -101,23 +101,22 @@ slow:
                d_delete(dentry);       /* make sure ->d_prune() does nothing */
                dput(dentry);
                cpu_relax();
-               return ERR_PTR(-EAGAIN);
+               return -EAGAIN;
        }
        goto got_it;
 }
 
-void *ns_get_path_cb(struct path *path, ns_get_path_helper_t *ns_get_cb,
+int ns_get_path_cb(struct path *path, ns_get_path_helper_t *ns_get_cb,
                     void *private_data)
 {
-       void *ret;
+       int ret;
 
        do {
                struct ns_common *ns = ns_get_cb(private_data);
                if (!ns)
-                       return ERR_PTR(-ENOENT);
-
+                       return -ENOENT;
                ret = __ns_get_path(path, ns);
-       } while (ret == ERR_PTR(-EAGAIN));
+       } while (ret == -EAGAIN);
 
        return ret;
 }
@@ -134,7 +133,7 @@ static struct ns_common *ns_get_path_task(void *private_data)
        return args->ns_ops->get(args->task);
 }
 
-void *ns_get_path(struct path *path, struct task_struct *task,
+int ns_get_path(struct path *path, struct task_struct *task,
                  const struct proc_ns_operations *ns_ops)
 {
        struct ns_get_path_task_args args = {
@@ -150,7 +149,7 @@ int open_related_ns(struct ns_common *ns,
 {
        struct path path = {};
        struct file *f;
-       void *err;
+       int err;
        int fd;
 
        fd = get_unused_fd_flags(O_CLOEXEC);
@@ -167,11 +166,11 @@ int open_related_ns(struct ns_common *ns,
                }
 
                err = __ns_get_path(&path, relative);
-       } while (err == ERR_PTR(-EAGAIN));
+       } while (err == -EAGAIN);
 
-       if (IS_ERR(err)) {
+       if (err) {
                put_unused_fd(fd);
-               return PTR_ERR(err);
+               return err;
        }
 
        f = dentry_open(&path, O_RDONLY, current_cred());