namei.c (5f029c045c948b6cb8ccfda614e73240c4a8363b) | namei.c (9b1bb01c8ae7e308486996f18216bd260258e076) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * fs/f2fs/namei.c 4 * 5 * Copyright (c) 2012 Samsung Electronics Co., Ltd. 6 * http://www.samsung.com/ 7 */ 8#include <linux/fs.h> --- 405 unchanged lines hidden (view full) --- 414 return err; 415} 416 417struct dentry *f2fs_get_parent(struct dentry *child) 418{ 419 struct qstr dotdot = QSTR_INIT("..", 2); 420 struct page *page; 421 unsigned long ino = f2fs_inode_by_name(d_inode(child), &dotdot, &page); | 1// SPDX-License-Identifier: GPL-2.0 2/* 3 * fs/f2fs/namei.c 4 * 5 * Copyright (c) 2012 Samsung Electronics Co., Ltd. 6 * http://www.samsung.com/ 7 */ 8#include <linux/fs.h> --- 405 unchanged lines hidden (view full) --- 414 return err; 415} 416 417struct dentry *f2fs_get_parent(struct dentry *child) 418{ 419 struct qstr dotdot = QSTR_INIT("..", 2); 420 struct page *page; 421 unsigned long ino = f2fs_inode_by_name(d_inode(child), &dotdot, &page); |
422 | |
423 if (!ino) { 424 if (IS_ERR(page)) 425 return ERR_CAST(page); 426 return ERR_PTR(-ENOENT); 427 } 428 return d_obtain_alias(f2fs_iget(child->d_sb, ino)); 429} 430 --- 193 unchanged lines hidden (view full) --- 624 return err; 625} 626 627static const char *f2fs_get_link(struct dentry *dentry, 628 struct inode *inode, 629 struct delayed_call *done) 630{ 631 const char *link = page_get_link(dentry, inode, done); | 422 if (!ino) { 423 if (IS_ERR(page)) 424 return ERR_CAST(page); 425 return ERR_PTR(-ENOENT); 426 } 427 return d_obtain_alias(f2fs_iget(child->d_sb, ino)); 428} 429 --- 193 unchanged lines hidden (view full) --- 623 return err; 624} 625 626static const char *f2fs_get_link(struct dentry *dentry, 627 struct inode *inode, 628 struct delayed_call *done) 629{ 630 const char *link = page_get_link(dentry, inode, done); |
632 | |
633 if (!IS_ERR(link) && !*link) { 634 /* this is broken symlink case */ 635 do_delayed_call(done); 636 clear_delayed_call(done); 637 link = ERR_PTR(-ENOENT); 638 } 639 return link; 640} --- 122 unchanged lines hidden (view full) --- 763 clear_inode_flag(inode, FI_INC_LINK); 764 f2fs_handle_failed_inode(inode); 765 return err; 766} 767 768static int f2fs_rmdir(struct inode *dir, struct dentry *dentry) 769{ 770 struct inode *inode = d_inode(dentry); | 631 if (!IS_ERR(link) && !*link) { 632 /* this is broken symlink case */ 633 do_delayed_call(done); 634 clear_delayed_call(done); 635 link = ERR_PTR(-ENOENT); 636 } 637 return link; 638} --- 122 unchanged lines hidden (view full) --- 761 clear_inode_flag(inode, FI_INC_LINK); 762 f2fs_handle_failed_inode(inode); 763 return err; 764} 765 766static int f2fs_rmdir(struct inode *dir, struct dentry *dentry) 767{ 768 struct inode *inode = d_inode(dentry); |
771 | |
772 if (f2fs_empty_dir(inode)) 773 return f2fs_unlink(dir, dentry); 774 return -ENOTEMPTY; 775} 776 777static int f2fs_mknod(struct user_namespace *mnt_userns, struct inode *dir, 778 struct dentry *dentry, umode_t mode, dev_t rdev) 779{ --- 545 unchanged lines hidden (view full) --- 1325 .rename = f2fs_rename2, 1326 .tmpfile = f2fs_tmpfile, 1327 .getattr = f2fs_getattr, 1328 .setattr = f2fs_setattr, 1329 .get_acl = f2fs_get_acl, 1330 .set_acl = f2fs_set_acl, 1331 .listxattr = f2fs_listxattr, 1332 .fiemap = f2fs_fiemap, | 769 if (f2fs_empty_dir(inode)) 770 return f2fs_unlink(dir, dentry); 771 return -ENOTEMPTY; 772} 773 774static int f2fs_mknod(struct user_namespace *mnt_userns, struct inode *dir, 775 struct dentry *dentry, umode_t mode, dev_t rdev) 776{ --- 545 unchanged lines hidden (view full) --- 1322 .rename = f2fs_rename2, 1323 .tmpfile = f2fs_tmpfile, 1324 .getattr = f2fs_getattr, 1325 .setattr = f2fs_setattr, 1326 .get_acl = f2fs_get_acl, 1327 .set_acl = f2fs_set_acl, 1328 .listxattr = f2fs_listxattr, 1329 .fiemap = f2fs_fiemap, |
1330 .fileattr_get = f2fs_fileattr_get, 1331 .fileattr_set = f2fs_fileattr_set, |
|
1333}; 1334 1335const struct inode_operations f2fs_symlink_inode_operations = { 1336 .get_link = f2fs_get_link, 1337 .getattr = f2fs_getattr, 1338 .setattr = f2fs_setattr, 1339 .listxattr = f2fs_listxattr, 1340}; 1341 1342const struct inode_operations f2fs_special_inode_operations = { 1343 .getattr = f2fs_getattr, 1344 .setattr = f2fs_setattr, 1345 .get_acl = f2fs_get_acl, 1346 .set_acl = f2fs_set_acl, 1347 .listxattr = f2fs_listxattr, 1348}; | 1332}; 1333 1334const struct inode_operations f2fs_symlink_inode_operations = { 1335 .get_link = f2fs_get_link, 1336 .getattr = f2fs_getattr, 1337 .setattr = f2fs_setattr, 1338 .listxattr = f2fs_listxattr, 1339}; 1340 1341const struct inode_operations f2fs_special_inode_operations = { 1342 .getattr = f2fs_getattr, 1343 .setattr = f2fs_setattr, 1344 .get_acl = f2fs_get_acl, 1345 .set_acl = f2fs_set_acl, 1346 .listxattr = f2fs_listxattr, 1347}; |