aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ext4/namei.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ext4/namei.c')
-rw-r--r--fs/ext4/namei.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
index 17a17e10dd60..20f55c2e7571 100644
--- a/fs/ext4/namei.c
+++ b/fs/ext4/namei.c
@@ -1766,6 +1766,8 @@ static int ext4_create(struct inode *dir, struct dentry *dentry, int mode,
1766 struct inode *inode; 1766 struct inode *inode;
1767 int err, retries = 0; 1767 int err, retries = 0;
1768 1768
1769 vfs_dq_init(dir);
1770
1769retry: 1771retry:
1770 handle = ext4_journal_start(dir, EXT4_DATA_TRANS_BLOCKS(dir->i_sb) + 1772 handle = ext4_journal_start(dir, EXT4_DATA_TRANS_BLOCKS(dir->i_sb) +
1771 EXT4_INDEX_EXTRA_TRANS_BLOCKS + 3 + 1773 EXT4_INDEX_EXTRA_TRANS_BLOCKS + 3 +
@@ -1800,6 +1802,8 @@ static int ext4_mknod(struct inode *dir, struct dentry *dentry,
1800 if (!new_valid_dev(rdev)) 1802 if (!new_valid_dev(rdev))
1801 return -EINVAL; 1803 return -EINVAL;
1802 1804
1805 vfs_dq_init(dir);
1806
1803retry: 1807retry:
1804 handle = ext4_journal_start(dir, EXT4_DATA_TRANS_BLOCKS(dir->i_sb) + 1808 handle = ext4_journal_start(dir, EXT4_DATA_TRANS_BLOCKS(dir->i_sb) +
1805 EXT4_INDEX_EXTRA_TRANS_BLOCKS + 3 + 1809 EXT4_INDEX_EXTRA_TRANS_BLOCKS + 3 +
@@ -1837,6 +1841,8 @@ static int ext4_mkdir(struct inode *dir, struct dentry *dentry, int mode)
1837 if (EXT4_DIR_LINK_MAX(dir)) 1841 if (EXT4_DIR_LINK_MAX(dir))
1838 return -EMLINK; 1842 return -EMLINK;
1839 1843
1844 vfs_dq_init(dir);
1845
1840retry: 1846retry:
1841 handle = ext4_journal_start(dir, EXT4_DATA_TRANS_BLOCKS(dir->i_sb) + 1847 handle = ext4_journal_start(dir, EXT4_DATA_TRANS_BLOCKS(dir->i_sb) +
1842 EXT4_INDEX_EXTRA_TRANS_BLOCKS + 3 + 1848 EXT4_INDEX_EXTRA_TRANS_BLOCKS + 3 +
@@ -2136,7 +2142,9 @@ static int ext4_rmdir(struct inode *dir, struct dentry *dentry)
2136 2142
2137 /* Initialize quotas before so that eventual writes go in 2143 /* Initialize quotas before so that eventual writes go in
2138 * separate transaction */ 2144 * separate transaction */
2145 vfs_dq_init(dir);
2139 vfs_dq_init(dentry->d_inode); 2146 vfs_dq_init(dentry->d_inode);
2147
2140 handle = ext4_journal_start(dir, EXT4_DELETE_TRANS_BLOCKS(dir->i_sb)); 2148 handle = ext4_journal_start(dir, EXT4_DELETE_TRANS_BLOCKS(dir->i_sb));
2141 if (IS_ERR(handle)) 2149 if (IS_ERR(handle))
2142 return PTR_ERR(handle); 2150 return PTR_ERR(handle);
@@ -2195,7 +2203,9 @@ static int ext4_unlink(struct inode *dir, struct dentry *dentry)
2195 2203
2196 /* Initialize quotas before so that eventual writes go 2204 /* Initialize quotas before so that eventual writes go
2197 * in separate transaction */ 2205 * in separate transaction */
2206 vfs_dq_init(dir);
2198 vfs_dq_init(dentry->d_inode); 2207 vfs_dq_init(dentry->d_inode);
2208
2199 handle = ext4_journal_start(dir, EXT4_DELETE_TRANS_BLOCKS(dir->i_sb)); 2209 handle = ext4_journal_start(dir, EXT4_DELETE_TRANS_BLOCKS(dir->i_sb));
2200 if (IS_ERR(handle)) 2210 if (IS_ERR(handle))
2201 return PTR_ERR(handle); 2211 return PTR_ERR(handle);
@@ -2250,6 +2260,8 @@ static int ext4_symlink(struct inode *dir,
2250 if (l > dir->i_sb->s_blocksize) 2260 if (l > dir->i_sb->s_blocksize)
2251 return -ENAMETOOLONG; 2261 return -ENAMETOOLONG;
2252 2262
2263 vfs_dq_init(dir);
2264
2253retry: 2265retry:
2254 handle = ext4_journal_start(dir, EXT4_DATA_TRANS_BLOCKS(dir->i_sb) + 2266 handle = ext4_journal_start(dir, EXT4_DATA_TRANS_BLOCKS(dir->i_sb) +
2255 EXT4_INDEX_EXTRA_TRANS_BLOCKS + 5 + 2267 EXT4_INDEX_EXTRA_TRANS_BLOCKS + 5 +
@@ -2308,6 +2320,8 @@ static int ext4_link(struct dentry *old_dentry,
2308 if (inode->i_nlink >= EXT4_LINK_MAX) 2320 if (inode->i_nlink >= EXT4_LINK_MAX)
2309 return -EMLINK; 2321 return -EMLINK;
2310 2322
2323 vfs_dq_init(dir);
2324
2311 /* 2325 /*
2312 * Return -ENOENT if we've raced with unlink and i_nlink is 0. Doing 2326 * Return -ENOENT if we've raced with unlink and i_nlink is 0. Doing
2313 * otherwise has the potential to corrupt the orphan inode list. 2327 * otherwise has the potential to corrupt the orphan inode list.
@@ -2358,6 +2372,9 @@ static int ext4_rename(struct inode *old_dir, struct dentry *old_dentry,
2358 struct ext4_dir_entry_2 *old_de, *new_de; 2372 struct ext4_dir_entry_2 *old_de, *new_de;
2359 int retval, force_da_alloc = 0; 2373 int retval, force_da_alloc = 0;
2360 2374
2375 vfs_dq_init(old_dir);
2376 vfs_dq_init(new_dir);
2377
2361 old_bh = new_bh = dir_bh = NULL; 2378 old_bh = new_bh = dir_bh = NULL;
2362 2379
2363 /* Initialize quotas before so that eventual writes go 2380 /* Initialize quotas before so that eventual writes go