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()
160 static struct fileIdentDesc *udf_find_entry(struct inode *dir, in udf_find_entry()
286 static struct dentry *udf_lookup(struct inode *dir, struct dentry *dentry, in udf_lookup()
289 struct inode *inode = NULL; in udf_lookup() local
306 inode = udf_iget(dir->i_sb, lb); in udf_lookup()
307 if (IS_ERR(inode)) in udf_lookup()
308 return inode; in udf_lookup()
324 inode = udf_iget(dir->i_sb, &loc); in udf_lookup()
325 if (IS_ERR(inode)) in udf_lookup()
326 return ERR_CAST(inode); in udf_lookup()
329 return d_splice_alias(inode, dentry); in udf_lookup()
332 static struct fileIdentDesc *udf_add_entry(struct inode *dir, in udf_add_entry()
577 static int udf_delete_entry(struct inode *inode, struct fileIdentDesc *fi, in udf_delete_entry() argument
583 if (UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_STRICT)) in udf_delete_entry()
586 return udf_write_fi(inode, cfi, fi, fibh, NULL, NULL); in udf_delete_entry()
589 static int udf_add_nondir(struct dentry *dentry, struct inode *inode) in udf_add_nondir() argument
591 struct udf_inode_info *iinfo = UDF_I(inode); in udf_add_nondir()
592 struct inode *dir = d_inode(dentry->d_parent); in udf_add_nondir()
599 inode_dec_link_count(inode); in udf_add_nondir()
600 unlock_new_inode(inode); in udf_add_nondir()
601 iput(inode); in udf_add_nondir()
604 cfi.icb.extLength = cpu_to_le32(inode->i_sb->s_blocksize); in udf_add_nondir()
614 unlock_new_inode(inode); in udf_add_nondir()
615 d_instantiate(dentry, inode); in udf_add_nondir()
620 static int udf_create(struct inode *dir, struct dentry *dentry, umode_t mode, in udf_create()
623 struct inode *inode = udf_new_inode(dir, mode); in udf_create() local
625 if (IS_ERR(inode)) in udf_create()
626 return PTR_ERR(inode); in udf_create()
628 if (UDF_I(inode)->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) in udf_create()
629 inode->i_data.a_ops = &udf_adinicb_aops; in udf_create()
631 inode->i_data.a_ops = &udf_aops; in udf_create()
632 inode->i_op = &udf_file_inode_operations; in udf_create()
633 inode->i_fop = &udf_file_operations; in udf_create()
634 mark_inode_dirty(inode); in udf_create()
636 return udf_add_nondir(dentry, inode); in udf_create()
639 static int udf_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode) in udf_tmpfile()
641 struct inode *inode = udf_new_inode(dir, mode); in udf_tmpfile() local
643 if (IS_ERR(inode)) in udf_tmpfile()
644 return PTR_ERR(inode); in udf_tmpfile()
646 if (UDF_I(inode)->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) in udf_tmpfile()
647 inode->i_data.a_ops = &udf_adinicb_aops; in udf_tmpfile()
649 inode->i_data.a_ops = &udf_aops; in udf_tmpfile()
650 inode->i_op = &udf_file_inode_operations; in udf_tmpfile()
651 inode->i_fop = &udf_file_operations; in udf_tmpfile()
652 mark_inode_dirty(inode); in udf_tmpfile()
653 d_tmpfile(dentry, inode); in udf_tmpfile()
654 unlock_new_inode(inode); in udf_tmpfile()
658 static int udf_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, in udf_mknod()
661 struct inode *inode; in udf_mknod() local
666 inode = udf_new_inode(dir, mode); in udf_mknod()
667 if (IS_ERR(inode)) in udf_mknod()
668 return PTR_ERR(inode); in udf_mknod()
670 init_special_inode(inode, mode, rdev); in udf_mknod()
671 return udf_add_nondir(dentry, inode); in udf_mknod()
674 static int udf_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) in udf_mkdir()
676 struct inode *inode; in udf_mkdir() local
683 inode = udf_new_inode(dir, S_IFDIR | mode); in udf_mkdir()
684 if (IS_ERR(inode)) in udf_mkdir()
685 return PTR_ERR(inode); in udf_mkdir()
687 iinfo = UDF_I(inode); in udf_mkdir()
688 inode->i_op = &udf_dir_inode_operations; in udf_mkdir()
689 inode->i_fop = &udf_dir_operations; in udf_mkdir()
690 fi = udf_add_entry(inode, NULL, &fibh, &cfi, &err); in udf_mkdir()
692 inode_dec_link_count(inode); in udf_mkdir()
693 unlock_new_inode(inode); in udf_mkdir()
694 iput(inode); in udf_mkdir()
697 set_nlink(inode, 2); in udf_mkdir()
698 cfi.icb.extLength = cpu_to_le32(inode->i_sb->s_blocksize); in udf_mkdir()
704 udf_write_fi(inode, &cfi, fi, &fibh, NULL, NULL); in udf_mkdir()
706 mark_inode_dirty(inode); in udf_mkdir()
710 clear_nlink(inode); in udf_mkdir()
711 mark_inode_dirty(inode); in udf_mkdir()
712 unlock_new_inode(inode); in udf_mkdir()
713 iput(inode); in udf_mkdir()
716 cfi.icb.extLength = cpu_to_le32(inode->i_sb->s_blocksize); in udf_mkdir()
725 unlock_new_inode(inode); in udf_mkdir()
726 d_instantiate(dentry, inode); in udf_mkdir()
736 static int empty_dir(struct inode *dir) in empty_dir()
805 static int udf_rmdir(struct inode *dir, struct dentry *dentry) in udf_rmdir()
808 struct inode *inode = d_inode(dentry); in udf_rmdir() local
823 if (udf_get_lb_pblock(dir->i_sb, &tloc, 0) != inode->i_ino) in udf_rmdir()
826 if (!empty_dir(inode)) in udf_rmdir()
831 if (inode->i_nlink != 2) in udf_rmdir()
832 udf_warn(inode->i_sb, "empty directory has nlink != 2 (%d)\n", in udf_rmdir()
833 inode->i_nlink); in udf_rmdir()
834 clear_nlink(inode); in udf_rmdir()
835 inode->i_size = 0; in udf_rmdir()
837 inode->i_ctime = dir->i_ctime = dir->i_mtime = in udf_rmdir()
850 static int udf_unlink(struct inode *dir, struct dentry *dentry) in udf_unlink()
853 struct inode *inode = d_inode(dentry); in udf_unlink() local
870 if (udf_get_lb_pblock(dir->i_sb, &tloc, 0) != inode->i_ino) in udf_unlink()
873 if (!inode->i_nlink) { in udf_unlink()
875 inode->i_ino, inode->i_nlink); in udf_unlink()
876 set_nlink(inode, 1); in udf_unlink()
883 inode_dec_link_count(inode); in udf_unlink()
884 inode->i_ctime = dir->i_ctime; in udf_unlink()
896 static int udf_symlink(struct inode *dir, struct dentry *dentry, in udf_symlink()
899 struct inode *inode = udf_new_inode(dir, S_IFLNK | S_IRWXUGO); in udf_symlink() local
912 if (IS_ERR(inode)) in udf_symlink()
913 return PTR_ERR(inode); in udf_symlink()
915 iinfo = UDF_I(inode); in udf_symlink()
923 inode->i_data.a_ops = &udf_symlink_aops; in udf_symlink()
924 inode->i_op = &udf_symlink_inode_operations; in udf_symlink()
930 block = udf_new_block(sb, inode, in udf_symlink()
936 epos.offset = udf_file_entry_alloc_offset(inode); in udf_symlink()
943 udf_add_aext(inode, &epos, &eloc, bsize, 0); in udf_symlink()
954 mark_buffer_dirty_inode(epos.bh, inode); in udf_symlink()
955 ea = epos.bh->b_data + udf_ext0_offset(inode); in udf_symlink()
959 eoffset = sb->s_blocksize - udf_ext0_offset(inode); in udf_symlink()
1023 inode->i_size = elen; in udf_symlink()
1025 iinfo->i_lenAlloc = inode->i_size; in udf_symlink()
1027 udf_truncate_tail_extent(inode); in udf_symlink()
1028 mark_inode_dirty(inode); in udf_symlink()
1031 err = udf_add_nondir(dentry, inode); in udf_symlink()
1038 inode_dec_link_count(inode); in udf_symlink()
1039 unlock_new_inode(inode); in udf_symlink()
1040 iput(inode); in udf_symlink()
1044 static int udf_link(struct dentry *old_dentry, struct inode *dir, in udf_link()
1047 struct inode *inode = d_inode(old_dentry); in udf_link() local
1056 cfi.icb.extLength = cpu_to_le32(inode->i_sb->s_blocksize); in udf_link()
1057 cfi.icb.extLocation = cpu_to_lelb(UDF_I(inode)->i_location); in udf_link()
1058 if (UDF_SB(inode->i_sb)->s_lvid_bh) { in udf_link()
1060 cpu_to_le32(lvid_get_unique_id(inode->i_sb)); in udf_link()
1069 inc_nlink(inode); in udf_link()
1070 inode->i_ctime = current_fs_time(inode->i_sb); in udf_link()
1071 mark_inode_dirty(inode); in udf_link()
1074 ihold(inode); in udf_link()
1075 d_instantiate(dentry, inode); in udf_link()
1083 static int udf_rename(struct inode *old_dir, struct dentry *old_dentry, in udf_rename()
1084 struct inode *new_dir, struct dentry *new_dentry) in udf_rename()
1086 struct inode *old_inode = d_inode(old_dentry); in udf_rename()
1087 struct inode *new_inode = d_inode(new_dentry); in udf_rename()
1228 struct inode *inode = NULL; in udf_get_parent() local
1241 inode = udf_iget(d_inode(child)->i_sb, &tloc); in udf_get_parent()
1242 if (IS_ERR(inode)) in udf_get_parent()
1243 return ERR_CAST(inode); in udf_get_parent()
1245 return d_obtain_alias(inode); in udf_get_parent()
1252 struct inode *inode; in udf_nfs_get_inode() local
1260 inode = udf_iget(sb, &loc); in udf_nfs_get_inode()
1262 if (IS_ERR(inode)) in udf_nfs_get_inode()
1263 return ERR_CAST(inode); in udf_nfs_get_inode()
1265 if (generation && inode->i_generation != generation) { in udf_nfs_get_inode()
1266 iput(inode); in udf_nfs_get_inode()
1269 return d_obtain_alias(inode); in udf_nfs_get_inode()
1294 static int udf_encode_fh(struct inode *inode, __u32 *fh, int *lenp, in udf_encode_fh() argument
1295 struct inode *parent) in udf_encode_fh()
1298 struct kernel_lb_addr location = UDF_I(inode)->i_location; in udf_encode_fh()
1314 fid->udf.generation = inode->i_generation; in udf_encode_fh()
1320 fid->udf.parent_generation = inode->i_generation; in udf_encode_fh()