Lines Matching refs:inode
43 int udf_write_fi(struct inode *inode, struct fileIdentDesc *cfi, in udf_write_fi() argument
56 if (UDF_I(inode)->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) in udf_write_fi()
132 mark_inode_dirty(inode); in udf_write_fi()
135 mark_buffer_dirty_inode(fibh->ebh, inode); in udf_write_fi()
136 mark_buffer_dirty_inode(fibh->sbh, inode); in udf_write_fi()
141 static struct fileIdentDesc *udf_find_entry(struct inode *dir, in udf_find_entry()
253 static struct dentry *udf_lookup(struct inode *dir, struct dentry *dentry, in udf_lookup()
256 struct inode *inode = NULL; in udf_lookup() local
272 inode = udf_iget(dir->i_sb, lb); in udf_lookup()
273 if (IS_ERR(inode)) in udf_lookup()
274 return inode; in udf_lookup()
286 inode = udf_iget(dir->i_sb, &loc); in udf_lookup()
287 if (IS_ERR(inode)) in udf_lookup()
288 return ERR_CAST(inode); in udf_lookup()
291 return d_splice_alias(inode, dentry); in udf_lookup()
294 static struct fileIdentDesc *udf_add_entry(struct inode *dir, in udf_add_entry()
539 static int udf_delete_entry(struct inode *inode, struct fileIdentDesc *fi, in udf_delete_entry() argument
545 if (UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_STRICT)) in udf_delete_entry()
548 return udf_write_fi(inode, cfi, fi, fibh, NULL, NULL); in udf_delete_entry()
551 static int udf_add_nondir(struct dentry *dentry, struct inode *inode) in udf_add_nondir() argument
553 struct udf_inode_info *iinfo = UDF_I(inode); in udf_add_nondir()
554 struct inode *dir = d_inode(dentry->d_parent); in udf_add_nondir()
561 inode_dec_link_count(inode); in udf_add_nondir()
562 unlock_new_inode(inode); in udf_add_nondir()
563 iput(inode); in udf_add_nondir()
566 cfi.icb.extLength = cpu_to_le32(inode->i_sb->s_blocksize); in udf_add_nondir()
576 unlock_new_inode(inode); in udf_add_nondir()
577 d_instantiate(dentry, inode); in udf_add_nondir()
582 static int udf_create(struct inode *dir, struct dentry *dentry, umode_t mode, in udf_create()
585 struct inode *inode = udf_new_inode(dir, mode); in udf_create() local
587 if (IS_ERR(inode)) in udf_create()
588 return PTR_ERR(inode); in udf_create()
590 if (UDF_I(inode)->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) in udf_create()
591 inode->i_data.a_ops = &udf_adinicb_aops; in udf_create()
593 inode->i_data.a_ops = &udf_aops; in udf_create()
594 inode->i_op = &udf_file_inode_operations; in udf_create()
595 inode->i_fop = &udf_file_operations; in udf_create()
596 mark_inode_dirty(inode); in udf_create()
598 return udf_add_nondir(dentry, inode); in udf_create()
601 static int udf_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode) in udf_tmpfile()
603 struct inode *inode = udf_new_inode(dir, mode); in udf_tmpfile() local
605 if (IS_ERR(inode)) in udf_tmpfile()
606 return PTR_ERR(inode); in udf_tmpfile()
608 if (UDF_I(inode)->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) in udf_tmpfile()
609 inode->i_data.a_ops = &udf_adinicb_aops; in udf_tmpfile()
611 inode->i_data.a_ops = &udf_aops; in udf_tmpfile()
612 inode->i_op = &udf_file_inode_operations; in udf_tmpfile()
613 inode->i_fop = &udf_file_operations; in udf_tmpfile()
614 mark_inode_dirty(inode); in udf_tmpfile()
615 d_tmpfile(dentry, inode); in udf_tmpfile()
616 unlock_new_inode(inode); in udf_tmpfile()
620 static int udf_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, in udf_mknod()
623 struct inode *inode; in udf_mknod() local
628 inode = udf_new_inode(dir, mode); in udf_mknod()
629 if (IS_ERR(inode)) in udf_mknod()
630 return PTR_ERR(inode); in udf_mknod()
632 init_special_inode(inode, mode, rdev); in udf_mknod()
633 return udf_add_nondir(dentry, inode); in udf_mknod()
636 static int udf_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) in udf_mkdir()
638 struct inode *inode; in udf_mkdir() local
645 inode = udf_new_inode(dir, S_IFDIR | mode); in udf_mkdir()
646 if (IS_ERR(inode)) in udf_mkdir()
647 return PTR_ERR(inode); in udf_mkdir()
649 iinfo = UDF_I(inode); in udf_mkdir()
650 inode->i_op = &udf_dir_inode_operations; in udf_mkdir()
651 inode->i_fop = &udf_dir_operations; in udf_mkdir()
652 fi = udf_add_entry(inode, NULL, &fibh, &cfi, &err); in udf_mkdir()
654 inode_dec_link_count(inode); in udf_mkdir()
655 unlock_new_inode(inode); in udf_mkdir()
656 iput(inode); in udf_mkdir()
659 set_nlink(inode, 2); in udf_mkdir()
660 cfi.icb.extLength = cpu_to_le32(inode->i_sb->s_blocksize); in udf_mkdir()
666 udf_write_fi(inode, &cfi, fi, &fibh, NULL, NULL); in udf_mkdir()
668 mark_inode_dirty(inode); in udf_mkdir()
672 clear_nlink(inode); in udf_mkdir()
673 mark_inode_dirty(inode); in udf_mkdir()
674 unlock_new_inode(inode); in udf_mkdir()
675 iput(inode); in udf_mkdir()
678 cfi.icb.extLength = cpu_to_le32(inode->i_sb->s_blocksize); in udf_mkdir()
687 unlock_new_inode(inode); in udf_mkdir()
688 d_instantiate(dentry, inode); in udf_mkdir()
698 static int empty_dir(struct inode *dir) in empty_dir()
767 static int udf_rmdir(struct inode *dir, struct dentry *dentry) in udf_rmdir()
770 struct inode *inode = d_inode(dentry); in udf_rmdir() local
782 if (udf_get_lb_pblock(dir->i_sb, &tloc, 0) != inode->i_ino) in udf_rmdir()
785 if (!empty_dir(inode)) in udf_rmdir()
790 if (inode->i_nlink != 2) in udf_rmdir()
791 udf_warn(inode->i_sb, "empty directory has nlink != 2 (%d)\n", in udf_rmdir()
792 inode->i_nlink); in udf_rmdir()
793 clear_nlink(inode); in udf_rmdir()
794 inode->i_size = 0; in udf_rmdir()
796 inode->i_ctime = dir->i_ctime = dir->i_mtime = in udf_rmdir()
809 static int udf_unlink(struct inode *dir, struct dentry *dentry) in udf_unlink()
812 struct inode *inode = d_inode(dentry); in udf_unlink() local
825 if (udf_get_lb_pblock(dir->i_sb, &tloc, 0) != inode->i_ino) in udf_unlink()
828 if (!inode->i_nlink) { in udf_unlink()
830 inode->i_ino, inode->i_nlink); in udf_unlink()
831 set_nlink(inode, 1); in udf_unlink()
838 inode_dec_link_count(inode); in udf_unlink()
839 inode->i_ctime = dir->i_ctime; in udf_unlink()
851 static int udf_symlink(struct inode *dir, struct dentry *dentry, in udf_symlink()
854 struct inode *inode = udf_new_inode(dir, S_IFLNK | S_IRWXUGO); in udf_symlink() local
867 if (IS_ERR(inode)) in udf_symlink()
868 return PTR_ERR(inode); in udf_symlink()
870 iinfo = UDF_I(inode); in udf_symlink()
878 inode->i_data.a_ops = &udf_symlink_aops; in udf_symlink()
879 inode->i_op = &udf_symlink_inode_operations; in udf_symlink()
885 block = udf_new_block(sb, inode, in udf_symlink()
891 epos.offset = udf_file_entry_alloc_offset(inode); in udf_symlink()
898 udf_add_aext(inode, &epos, &eloc, bsize, 0); in udf_symlink()
909 mark_buffer_dirty_inode(epos.bh, inode); in udf_symlink()
910 ea = epos.bh->b_data + udf_ext0_offset(inode); in udf_symlink()
914 eoffset = sb->s_blocksize - udf_ext0_offset(inode); in udf_symlink()
978 inode->i_size = elen; in udf_symlink()
980 iinfo->i_lenAlloc = inode->i_size; in udf_symlink()
982 udf_truncate_tail_extent(inode); in udf_symlink()
983 mark_inode_dirty(inode); in udf_symlink()
986 err = udf_add_nondir(dentry, inode); in udf_symlink()
993 inode_dec_link_count(inode); in udf_symlink()
994 unlock_new_inode(inode); in udf_symlink()
995 iput(inode); in udf_symlink()
999 static int udf_link(struct dentry *old_dentry, struct inode *dir, in udf_link()
1002 struct inode *inode = d_inode(old_dentry); in udf_link() local
1011 cfi.icb.extLength = cpu_to_le32(inode->i_sb->s_blocksize); in udf_link()
1012 cfi.icb.extLocation = cpu_to_lelb(UDF_I(inode)->i_location); in udf_link()
1013 if (UDF_SB(inode->i_sb)->s_lvid_bh) { in udf_link()
1015 cpu_to_le32(lvid_get_unique_id(inode->i_sb)); in udf_link()
1024 inc_nlink(inode); in udf_link()
1025 inode->i_ctime = current_fs_time(inode->i_sb); in udf_link()
1026 mark_inode_dirty(inode); in udf_link()
1029 ihold(inode); in udf_link()
1030 d_instantiate(dentry, inode); in udf_link()
1038 static int udf_rename(struct inode *old_dir, struct dentry *old_dentry, in udf_rename()
1039 struct inode *new_dir, struct dentry *new_dentry) in udf_rename()
1041 struct inode *old_inode = d_inode(old_dentry); in udf_rename()
1042 struct inode *new_inode = d_inode(new_dentry); in udf_rename()
1177 struct inode *inode = NULL; in udf_get_parent() local
1190 inode = udf_iget(d_inode(child)->i_sb, &tloc); in udf_get_parent()
1191 if (IS_ERR(inode)) in udf_get_parent()
1192 return ERR_CAST(inode); in udf_get_parent()
1194 return d_obtain_alias(inode); in udf_get_parent()
1201 struct inode *inode; in udf_nfs_get_inode() local
1209 inode = udf_iget(sb, &loc); in udf_nfs_get_inode()
1211 if (IS_ERR(inode)) in udf_nfs_get_inode()
1212 return ERR_CAST(inode); in udf_nfs_get_inode()
1214 if (generation && inode->i_generation != generation) { in udf_nfs_get_inode()
1215 iput(inode); in udf_nfs_get_inode()
1218 return d_obtain_alias(inode); in udf_nfs_get_inode()
1243 static int udf_encode_fh(struct inode *inode, __u32 *fh, int *lenp, in udf_encode_fh() argument
1244 struct inode *parent) in udf_encode_fh()
1247 struct kernel_lb_addr location = UDF_I(inode)->i_location; in udf_encode_fh()
1263 fid->udf.generation = inode->i_generation; in udf_encode_fh()
1269 fid->udf.parent_generation = inode->i_generation; in udf_encode_fh()