Merge tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso...
[linux-2.6-microblaze.git] / fs / ext4 / namei.c
index 1157621..686bf98 100644 (file)
@@ -2605,8 +2605,8 @@ static int ext4_add_nondir(handle_t *handle,
  * If the create succeeds, we fill in the inode information
  * with d_instantiate().
  */
-static int ext4_create(struct inode *dir, struct dentry *dentry, umode_t mode,
-                      bool excl)
+static int ext4_create(struct user_namespace *mnt_userns, struct inode *dir,
+                      struct dentry *dentry, umode_t mode, bool excl)
 {
        handle_t *handle;
        struct inode *inode;
@@ -2619,8 +2619,8 @@ static int ext4_create(struct inode *dir, struct dentry *dentry, umode_t mode,
        credits = (EXT4_DATA_TRANS_BLOCKS(dir->i_sb) +
                   EXT4_INDEX_EXTRA_TRANS_BLOCKS + 3);
 retry:
-       inode = ext4_new_inode_start_handle(dir, mode, &dentry->d_name, 0,
-                                           NULL, EXT4_HT_DIR, credits);
+       inode = ext4_new_inode_start_handle(mnt_userns, dir, mode, &dentry->d_name,
+                                           0, NULL, EXT4_HT_DIR, credits);
        handle = ext4_journal_current_handle();
        err = PTR_ERR(inode);
        if (!IS_ERR(inode)) {
@@ -2640,8 +2640,8 @@ retry:
        return err;
 }
 
-static int ext4_mknod(struct inode *dir, struct dentry *dentry,
-                     umode_t mode, dev_t rdev)
+static int ext4_mknod(struct user_namespace *mnt_userns, struct inode *dir,
+                     struct dentry *dentry, umode_t mode, dev_t rdev)
 {
        handle_t *handle;
        struct inode *inode;
@@ -2654,8 +2654,8 @@ static int ext4_mknod(struct inode *dir, struct dentry *dentry,
        credits = (EXT4_DATA_TRANS_BLOCKS(dir->i_sb) +
                   EXT4_INDEX_EXTRA_TRANS_BLOCKS + 3);
 retry:
-       inode = ext4_new_inode_start_handle(dir, mode, &dentry->d_name, 0,
-                                           NULL, EXT4_HT_DIR, credits);
+       inode = ext4_new_inode_start_handle(mnt_userns, dir, mode, &dentry->d_name,
+                                           0, NULL, EXT4_HT_DIR, credits);
        handle = ext4_journal_current_handle();
        err = PTR_ERR(inode);
        if (!IS_ERR(inode)) {
@@ -2674,7 +2674,8 @@ retry:
        return err;
 }
 
-static int ext4_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode)
+static int ext4_tmpfile(struct user_namespace *mnt_userns, struct inode *dir,
+                       struct dentry *dentry, umode_t mode)
 {
        handle_t *handle;
        struct inode *inode;
@@ -2685,7 +2686,7 @@ static int ext4_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode)
                return err;
 
 retry:
-       inode = ext4_new_inode_start_handle(dir, mode,
+       inode = ext4_new_inode_start_handle(mnt_userns, dir, mode,
                                            NULL, 0, NULL,
                                            EXT4_HT_DIR,
                        EXT4_MAXQUOTAS_INIT_BLOCKS(dir->i_sb) +
@@ -2783,7 +2784,8 @@ out:
        return err;
 }
 
-static int ext4_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
+static int ext4_mkdir(struct user_namespace *mnt_userns, struct inode *dir,
+                     struct dentry *dentry, umode_t mode)
 {
        handle_t *handle;
        struct inode *inode;
@@ -2799,7 +2801,7 @@ static int ext4_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
        credits = (EXT4_DATA_TRANS_BLOCKS(dir->i_sb) +
                   EXT4_INDEX_EXTRA_TRANS_BLOCKS + 3);
 retry:
-       inode = ext4_new_inode_start_handle(dir, S_IFDIR | mode,
+       inode = ext4_new_inode_start_handle(mnt_userns, dir, S_IFDIR | mode,
                                            &dentry->d_name,
                                            0, NULL, EXT4_HT_DIR, credits);
        handle = ext4_journal_current_handle();
@@ -3301,7 +3303,7 @@ out_trace:
        return retval;
 }
 
-static int ext4_symlink(struct inode *dir,
+static int ext4_symlink(struct user_namespace *mnt_userns, struct inode *dir,
                        struct dentry *dentry, const char *symname)
 {
        handle_t *handle;
@@ -3342,7 +3344,7 @@ static int ext4_symlink(struct inode *dir,
                          EXT4_INDEX_EXTRA_TRANS_BLOCKS + 3;
        }
 
-       inode = ext4_new_inode_start_handle(dir, S_IFLNK|S_IRWXUGO,
+       inode = ext4_new_inode_start_handle(mnt_userns, dir, S_IFLNK|S_IRWXUGO,
                                            &dentry->d_name, 0, NULL,
                                            EXT4_HT_DIR, credits);
        handle = ext4_journal_current_handle();
@@ -3671,7 +3673,8 @@ static void ext4_update_dir_count(handle_t *handle, struct ext4_renament *ent)
        }
 }
 
-static struct inode *ext4_whiteout_for_rename(struct ext4_renament *ent,
+static struct inode *ext4_whiteout_for_rename(struct user_namespace *mnt_userns,
+                                             struct ext4_renament *ent,
                                              int credits, handle_t **h)
 {
        struct inode *wh;
@@ -3685,7 +3688,8 @@ static struct inode *ext4_whiteout_for_rename(struct ext4_renament *ent,
        credits += (EXT4_MAXQUOTAS_TRANS_BLOCKS(ent->dir->i_sb) +
                    EXT4_XATTR_TRANS_BLOCKS + 4);
 retry:
-       wh = ext4_new_inode_start_handle(ent->dir, S_IFCHR | WHITEOUT_MODE,
+       wh = ext4_new_inode_start_handle(mnt_userns, ent->dir,
+                                        S_IFCHR | WHITEOUT_MODE,
                                         &ent->dentry->d_name, 0, NULL,
                                         EXT4_HT_DIR, credits);
 
@@ -3712,9 +3716,9 @@ retry:
  * while new_{dentry,inode) refers to the destination dentry/inode
  * This comes from rename(const char *oldpath, const char *newpath)
  */
-static int ext4_rename(struct inode *old_dir, struct dentry *old_dentry,
-                      struct inode *new_dir, struct dentry *new_dentry,
-                      unsigned int flags)
+static int ext4_rename(struct user_namespace *mnt_userns, struct inode *old_dir,
+                      struct dentry *old_dentry, struct inode *new_dir,
+                      struct dentry *new_dentry, unsigned int flags)
 {
        handle_t *handle = NULL;
        struct ext4_renament old = {
@@ -3798,7 +3802,7 @@ static int ext4_rename(struct inode *old_dir, struct dentry *old_dentry,
                        goto end_rename;
                }
        } else {
-               whiteout = ext4_whiteout_for_rename(&old, credits, &handle);
+               whiteout = ext4_whiteout_for_rename(mnt_userns, &old, credits, &handle);
                if (IS_ERR(whiteout)) {
                        retval = PTR_ERR(whiteout);
                        whiteout = NULL;
@@ -4094,7 +4098,8 @@ end_rename:
        return retval;
 }
 
-static int ext4_rename2(struct inode *old_dir, struct dentry *old_dentry,
+static int ext4_rename2(struct user_namespace *mnt_userns,
+                       struct inode *old_dir, struct dentry *old_dentry,
                        struct inode *new_dir, struct dentry *new_dentry,
                        unsigned int flags)
 {
@@ -4116,7 +4121,7 @@ static int ext4_rename2(struct inode *old_dir, struct dentry *old_dentry,
                                         new_dir, new_dentry);
        }
 
-       return ext4_rename(old_dir, old_dentry, new_dir, new_dentry, flags);
+       return ext4_rename(mnt_userns, old_dir, old_dentry, new_dir, new_dentry, flags);
 }
 
 /*