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};