diff options
Diffstat (limited to 'fs/udf/namei.c')
-rw-r--r-- | fs/udf/namei.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/fs/udf/namei.c b/fs/udf/namei.c index f1dce848ef96..4639e137222f 100644 --- a/fs/udf/namei.c +++ b/fs/udf/namei.c | |||
@@ -577,8 +577,7 @@ static int udf_create(struct inode *dir, struct dentry *dentry, int mode, | |||
577 | 577 | ||
578 | fi = udf_add_entry(dir, dentry, &fibh, &cfi, &err); | 578 | fi = udf_add_entry(dir, dentry, &fibh, &cfi, &err); |
579 | if (!fi) { | 579 | if (!fi) { |
580 | inode->i_nlink--; | 580 | inode_dec_link_count(inode); |
581 | mark_inode_dirty(inode); | ||
582 | iput(inode); | 581 | iput(inode); |
583 | return err; | 582 | return err; |
584 | } | 583 | } |
@@ -618,8 +617,7 @@ static int udf_mknod(struct inode *dir, struct dentry *dentry, int mode, | |||
618 | init_special_inode(inode, mode, rdev); | 617 | init_special_inode(inode, mode, rdev); |
619 | fi = udf_add_entry(dir, dentry, &fibh, &cfi, &err); | 618 | fi = udf_add_entry(dir, dentry, &fibh, &cfi, &err); |
620 | if (!fi) { | 619 | if (!fi) { |
621 | inode->i_nlink--; | 620 | inode_dec_link_count(inode); |
622 | mark_inode_dirty(inode); | ||
623 | iput(inode); | 621 | iput(inode); |
624 | return err; | 622 | return err; |
625 | } | 623 | } |
@@ -665,12 +663,11 @@ static int udf_mkdir(struct inode *dir, struct dentry *dentry, int mode) | |||
665 | inode->i_fop = &udf_dir_operations; | 663 | inode->i_fop = &udf_dir_operations; |
666 | fi = udf_add_entry(inode, NULL, &fibh, &cfi, &err); | 664 | fi = udf_add_entry(inode, NULL, &fibh, &cfi, &err); |
667 | if (!fi) { | 665 | if (!fi) { |
668 | inode->i_nlink--; | 666 | inode_dec_link_count(inode); |
669 | mark_inode_dirty(inode); | ||
670 | iput(inode); | 667 | iput(inode); |
671 | goto out; | 668 | goto out; |
672 | } | 669 | } |
673 | inode->i_nlink = 2; | 670 | set_nlink(inode, 2); |
674 | cfi.icb.extLength = cpu_to_le32(inode->i_sb->s_blocksize); | 671 | cfi.icb.extLength = cpu_to_le32(inode->i_sb->s_blocksize); |
675 | cfi.icb.extLocation = cpu_to_lelb(dinfo->i_location); | 672 | cfi.icb.extLocation = cpu_to_lelb(dinfo->i_location); |
676 | *(__le32 *)((struct allocDescImpUse *)cfi.icb.impUse)->impUse = | 673 | *(__le32 *)((struct allocDescImpUse *)cfi.icb.impUse)->impUse = |
@@ -683,7 +680,7 @@ static int udf_mkdir(struct inode *dir, struct dentry *dentry, int mode) | |||
683 | 680 | ||
684 | fi = udf_add_entry(dir, dentry, &fibh, &cfi, &err); | 681 | fi = udf_add_entry(dir, dentry, &fibh, &cfi, &err); |
685 | if (!fi) { | 682 | if (!fi) { |
686 | inode->i_nlink = 0; | 683 | clear_nlink(inode); |
687 | mark_inode_dirty(inode); | 684 | mark_inode_dirty(inode); |
688 | iput(inode); | 685 | iput(inode); |
689 | goto out; | 686 | goto out; |
@@ -799,9 +796,8 @@ static int udf_rmdir(struct inode *dir, struct dentry *dentry) | |||
799 | if (retval) | 796 | if (retval) |
800 | goto end_rmdir; | 797 | goto end_rmdir; |
801 | if (inode->i_nlink != 2) | 798 | if (inode->i_nlink != 2) |
802 | udf_warning(inode->i_sb, "udf_rmdir", | 799 | udf_warn(inode->i_sb, "empty directory has nlink != 2 (%d)\n", |
803 | "empty directory has nlink != 2 (%d)", | 800 | inode->i_nlink); |
804 | inode->i_nlink); | ||
805 | clear_nlink(inode); | 801 | clear_nlink(inode); |
806 | inode->i_size = 0; | 802 | inode->i_size = 0; |
807 | inode_dec_link_count(dir); | 803 | inode_dec_link_count(dir); |
@@ -840,7 +836,7 @@ static int udf_unlink(struct inode *dir, struct dentry *dentry) | |||
840 | if (!inode->i_nlink) { | 836 | if (!inode->i_nlink) { |
841 | udf_debug("Deleting nonexistent file (%lu), %d\n", | 837 | udf_debug("Deleting nonexistent file (%lu), %d\n", |
842 | inode->i_ino, inode->i_nlink); | 838 | inode->i_ino, inode->i_nlink); |
843 | inode->i_nlink = 1; | 839 | set_nlink(inode, 1); |
844 | } | 840 | } |
845 | retval = udf_delete_entry(dir, fi, &fibh, &cfi); | 841 | retval = udf_delete_entry(dir, fi, &fibh, &cfi); |
846 | if (retval) | 842 | if (retval) |