aboutsummaryrefslogtreecommitdiffstats
path: root/fs/f2fs/namei.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/f2fs/namei.c')
-rw-r--r--fs/f2fs/namei.c50
1 files changed, 24 insertions, 26 deletions
diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c
index 2a5359c990fc..29f73fdf958e 100644
--- a/fs/f2fs/namei.c
+++ b/fs/f2fs/namei.c
@@ -27,19 +27,19 @@ static struct inode *f2fs_new_inode(struct inode *dir, umode_t mode)
27 nid_t ino; 27 nid_t ino;
28 struct inode *inode; 28 struct inode *inode;
29 bool nid_free = false; 29 bool nid_free = false;
30 int err, ilock; 30 int err;
31 31
32 inode = new_inode(sb); 32 inode = new_inode(sb);
33 if (!inode) 33 if (!inode)
34 return ERR_PTR(-ENOMEM); 34 return ERR_PTR(-ENOMEM);
35 35
36 ilock = mutex_lock_op(sbi); 36 f2fs_lock_op(sbi);
37 if (!alloc_nid(sbi, &ino)) { 37 if (!alloc_nid(sbi, &ino)) {
38 mutex_unlock_op(sbi, ilock); 38 f2fs_unlock_op(sbi);
39 err = -ENOSPC; 39 err = -ENOSPC;
40 goto fail; 40 goto fail;
41 } 41 }
42 mutex_unlock_op(sbi, ilock); 42 f2fs_unlock_op(sbi);
43 43
44 inode->i_uid = current_fsuid(); 44 inode->i_uid = current_fsuid();
45 45
@@ -115,7 +115,7 @@ static int f2fs_create(struct inode *dir, struct dentry *dentry, umode_t mode,
115 struct f2fs_sb_info *sbi = F2FS_SB(sb); 115 struct f2fs_sb_info *sbi = F2FS_SB(sb);
116 struct inode *inode; 116 struct inode *inode;
117 nid_t ino = 0; 117 nid_t ino = 0;
118 int err, ilock; 118 int err;
119 119
120 f2fs_balance_fs(sbi); 120 f2fs_balance_fs(sbi);
121 121
@@ -131,9 +131,9 @@ static int f2fs_create(struct inode *dir, struct dentry *dentry, umode_t mode,
131 inode->i_mapping->a_ops = &f2fs_dblock_aops; 131 inode->i_mapping->a_ops = &f2fs_dblock_aops;
132 ino = inode->i_ino; 132 ino = inode->i_ino;
133 133
134 ilock = mutex_lock_op(sbi); 134 f2fs_lock_op(sbi);
135 err = f2fs_add_link(dentry, inode); 135 err = f2fs_add_link(dentry, inode);
136 mutex_unlock_op(sbi, ilock); 136 f2fs_unlock_op(sbi);
137 if (err) 137 if (err)
138 goto out; 138 goto out;
139 139
@@ -157,7 +157,7 @@ static int f2fs_link(struct dentry *old_dentry, struct inode *dir,
157 struct inode *inode = old_dentry->d_inode; 157 struct inode *inode = old_dentry->d_inode;
158 struct super_block *sb = dir->i_sb; 158 struct super_block *sb = dir->i_sb;
159 struct f2fs_sb_info *sbi = F2FS_SB(sb); 159 struct f2fs_sb_info *sbi = F2FS_SB(sb);
160 int err, ilock; 160 int err;
161 161
162 f2fs_balance_fs(sbi); 162 f2fs_balance_fs(sbi);
163 163
@@ -165,9 +165,9 @@ static int f2fs_link(struct dentry *old_dentry, struct inode *dir,
165 ihold(inode); 165 ihold(inode);
166 166
167 set_inode_flag(F2FS_I(inode), FI_INC_LINK); 167 set_inode_flag(F2FS_I(inode), FI_INC_LINK);
168 ilock = mutex_lock_op(sbi); 168 f2fs_lock_op(sbi);
169 err = f2fs_add_link(dentry, inode); 169 err = f2fs_add_link(dentry, inode);
170 mutex_unlock_op(sbi, ilock); 170 f2fs_unlock_op(sbi);
171 if (err) 171 if (err)
172 goto out; 172 goto out;
173 173
@@ -220,7 +220,6 @@ static int f2fs_unlink(struct inode *dir, struct dentry *dentry)
220 struct f2fs_dir_entry *de; 220 struct f2fs_dir_entry *de;
221 struct page *page; 221 struct page *page;
222 int err = -ENOENT; 222 int err = -ENOENT;
223 int ilock;
224 223
225 trace_f2fs_unlink_enter(dir, dentry); 224 trace_f2fs_unlink_enter(dir, dentry);
226 f2fs_balance_fs(sbi); 225 f2fs_balance_fs(sbi);
@@ -236,9 +235,9 @@ static int f2fs_unlink(struct inode *dir, struct dentry *dentry)
236 goto fail; 235 goto fail;
237 } 236 }
238 237
239 ilock = mutex_lock_op(sbi); 238 f2fs_lock_op(sbi);
240 f2fs_delete_entry(de, page, inode); 239 f2fs_delete_entry(de, page, inode);
241 mutex_unlock_op(sbi, ilock); 240 f2fs_unlock_op(sbi);
242 241
243 /* In order to evict this inode, we set it dirty */ 242 /* In order to evict this inode, we set it dirty */
244 mark_inode_dirty(inode); 243 mark_inode_dirty(inode);
@@ -254,7 +253,7 @@ static int f2fs_symlink(struct inode *dir, struct dentry *dentry,
254 struct f2fs_sb_info *sbi = F2FS_SB(sb); 253 struct f2fs_sb_info *sbi = F2FS_SB(sb);
255 struct inode *inode; 254 struct inode *inode;
256 size_t symlen = strlen(symname) + 1; 255 size_t symlen = strlen(symname) + 1;
257 int err, ilock; 256 int err;
258 257
259 f2fs_balance_fs(sbi); 258 f2fs_balance_fs(sbi);
260 259
@@ -265,9 +264,9 @@ static int f2fs_symlink(struct inode *dir, struct dentry *dentry,
265 inode->i_op = &f2fs_symlink_inode_operations; 264 inode->i_op = &f2fs_symlink_inode_operations;
266 inode->i_mapping->a_ops = &f2fs_dblock_aops; 265 inode->i_mapping->a_ops = &f2fs_dblock_aops;
267 266
268 ilock = mutex_lock_op(sbi); 267 f2fs_lock_op(sbi);
269 err = f2fs_add_link(dentry, inode); 268 err = f2fs_add_link(dentry, inode);
270 mutex_unlock_op(sbi, ilock); 269 f2fs_unlock_op(sbi);
271 if (err) 270 if (err)
272 goto out; 271 goto out;
273 272
@@ -290,7 +289,7 @@ static int f2fs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
290{ 289{
291 struct f2fs_sb_info *sbi = F2FS_SB(dir->i_sb); 290 struct f2fs_sb_info *sbi = F2FS_SB(dir->i_sb);
292 struct inode *inode; 291 struct inode *inode;
293 int err, ilock; 292 int err;
294 293
295 f2fs_balance_fs(sbi); 294 f2fs_balance_fs(sbi);
296 295
@@ -304,9 +303,9 @@ static int f2fs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
304 mapping_set_gfp_mask(inode->i_mapping, GFP_F2FS_ZERO); 303 mapping_set_gfp_mask(inode->i_mapping, GFP_F2FS_ZERO);
305 304
306 set_inode_flag(F2FS_I(inode), FI_INC_LINK); 305 set_inode_flag(F2FS_I(inode), FI_INC_LINK);
307 ilock = mutex_lock_op(sbi); 306 f2fs_lock_op(sbi);
308 err = f2fs_add_link(dentry, inode); 307 err = f2fs_add_link(dentry, inode);
309 mutex_unlock_op(sbi, ilock); 308 f2fs_unlock_op(sbi);
310 if (err) 309 if (err)
311 goto out_fail; 310 goto out_fail;
312 311
@@ -342,7 +341,6 @@ static int f2fs_mknod(struct inode *dir, struct dentry *dentry,
342 struct f2fs_sb_info *sbi = F2FS_SB(sb); 341 struct f2fs_sb_info *sbi = F2FS_SB(sb);
343 struct inode *inode; 342 struct inode *inode;
344 int err = 0; 343 int err = 0;
345 int ilock;
346 344
347 if (!new_valid_dev(rdev)) 345 if (!new_valid_dev(rdev))
348 return -EINVAL; 346 return -EINVAL;
@@ -356,9 +354,9 @@ static int f2fs_mknod(struct inode *dir, struct dentry *dentry,
356 init_special_inode(inode, inode->i_mode, rdev); 354 init_special_inode(inode, inode->i_mode, rdev);
357 inode->i_op = &f2fs_special_inode_operations; 355 inode->i_op = &f2fs_special_inode_operations;
358 356
359 ilock = mutex_lock_op(sbi); 357 f2fs_lock_op(sbi);
360 err = f2fs_add_link(dentry, inode); 358 err = f2fs_add_link(dentry, inode);
361 mutex_unlock_op(sbi, ilock); 359 f2fs_unlock_op(sbi);
362 if (err) 360 if (err)
363 goto out; 361 goto out;
364 362
@@ -387,7 +385,7 @@ static int f2fs_rename(struct inode *old_dir, struct dentry *old_dentry,
387 struct f2fs_dir_entry *old_dir_entry = NULL; 385 struct f2fs_dir_entry *old_dir_entry = NULL;
388 struct f2fs_dir_entry *old_entry; 386 struct f2fs_dir_entry *old_entry;
389 struct f2fs_dir_entry *new_entry; 387 struct f2fs_dir_entry *new_entry;
390 int err = -ENOENT, ilock = -1; 388 int err = -ENOENT;
391 389
392 f2fs_balance_fs(sbi); 390 f2fs_balance_fs(sbi);
393 391
@@ -402,7 +400,7 @@ static int f2fs_rename(struct inode *old_dir, struct dentry *old_dentry,
402 goto out_old; 400 goto out_old;
403 } 401 }
404 402
405 ilock = mutex_lock_op(sbi); 403 f2fs_lock_op(sbi);
406 404
407 if (new_inode) { 405 if (new_inode) {
408 406
@@ -467,7 +465,7 @@ static int f2fs_rename(struct inode *old_dir, struct dentry *old_dentry,
467 update_inode_page(old_dir); 465 update_inode_page(old_dir);
468 } 466 }
469 467
470 mutex_unlock_op(sbi, ilock); 468 f2fs_unlock_op(sbi);
471 return 0; 469 return 0;
472 470
473put_out_dir: 471put_out_dir:
@@ -477,7 +475,7 @@ out_dir:
477 kunmap(old_dir_page); 475 kunmap(old_dir_page);
478 f2fs_put_page(old_dir_page, 0); 476 f2fs_put_page(old_dir_page, 0);
479 } 477 }
480 mutex_unlock_op(sbi, ilock); 478 f2fs_unlock_op(sbi);
481out_old: 479out_old:
482 kunmap(old_page); 480 kunmap(old_page);
483 f2fs_put_page(old_page, 0); 481 f2fs_put_page(old_page, 0);