Lines Matching refs:inode
43 * @dir: directory inode to search in
52 static int udf_fiiter_find_entry(struct inode *dir, const struct qstr *child,
107 static struct dentry *udf_lookup(struct inode *dir, struct dentry *dentry,
110 struct inode *inode = NULL;
127 inode = udf_iget(dir->i_sb, &loc);
128 if (IS_ERR(inode))
129 return ERR_CAST(inode);
132 return d_splice_alias(inode, dentry);
135 static int udf_expand_dir_adinicb(struct inode *inode, udf_pblk_t *block)
142 struct udf_inode_info *iinfo = UDF_I(inode);
147 if (UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_USE_SHORT_AD))
152 if (!inode->i_size) {
154 mark_inode_dirty(inode);
159 *block = udf_new_block(inode->i_sb, inode,
164 newblock = udf_get_pblock(inode->i_sb, *block,
169 dbh = sb_getblk(inode->i_sb, newblock);
173 memcpy(dbh->b_data, iinfo->i_data, inode->i_size);
174 memset(dbh->b_data + inode->i_size, 0,
175 inode->i_sb->s_blocksize - inode->i_size);
186 iinfo->i_lenExtents = inode->i_size;
189 epos.offset = udf_file_entry_alloc_offset(inode);
190 ret = udf_add_aext(inode, &epos, &eloc, inode->i_size, 0);
194 udf_free_blocks(inode->i_sb, inode, &eloc, 0, 1);
197 mark_inode_dirty(inode);
200 for (ret = udf_fiiter_init(&iter, inode, 0);
201 !ret && iter.pos < inode->i_size;
222 static int udf_fiiter_add_entry(struct inode *dir, struct dentry *dentry,
350 static int udf_add_nondir(struct dentry *dentry, struct inode *inode)
352 struct udf_inode_info *iinfo = UDF_I(inode);
353 struct inode *dir = d_inode(dentry->d_parent);
359 inode_dec_link_count(inode);
360 discard_new_inode(inode);
363 iter.fi.icb.extLength = cpu_to_le32(inode->i_sb->s_blocksize);
372 d_instantiate_new(dentry, inode);
377 static int udf_create(struct mnt_idmap *idmap, struct inode *dir,
380 struct inode *inode = udf_new_inode(dir, mode);
382 if (IS_ERR(inode))
383 return PTR_ERR(inode);
385 inode->i_data.a_ops = &udf_aops;
386 inode->i_op = &udf_file_inode_operations;
387 inode->i_fop = &udf_file_operations;
388 mark_inode_dirty(inode);
390 return udf_add_nondir(dentry, inode);
393 static int udf_tmpfile(struct mnt_idmap *idmap, struct inode *dir,
396 struct inode *inode = udf_new_inode(dir, mode);
398 if (IS_ERR(inode))
399 return PTR_ERR(inode);
401 inode->i_data.a_ops = &udf_aops;
402 inode->i_op = &udf_file_inode_operations;
403 inode->i_fop = &udf_file_operations;
404 mark_inode_dirty(inode);
405 d_tmpfile(file, inode);
406 unlock_new_inode(inode);
410 static int udf_mknod(struct mnt_idmap *idmap, struct inode *dir,
413 struct inode *inode;
418 inode = udf_new_inode(dir, mode);
419 if (IS_ERR(inode))
420 return PTR_ERR(inode);
422 init_special_inode(inode, mode, rdev);
423 return udf_add_nondir(dentry, inode);
426 static int udf_mkdir(struct mnt_idmap *idmap, struct inode *dir,
429 struct inode *inode;
435 inode = udf_new_inode(dir, S_IFDIR | mode);
436 if (IS_ERR(inode))
437 return PTR_ERR(inode);
439 iinfo = UDF_I(inode);
440 inode->i_op = &udf_dir_inode_operations;
441 inode->i_fop = &udf_dir_operations;
442 err = udf_fiiter_add_entry(inode, NULL, &iter);
444 clear_nlink(inode);
445 discard_new_inode(inode);
448 set_nlink(inode, 2);
449 iter.fi.icb.extLength = cpu_to_le32(inode->i_sb->s_blocksize);
457 mark_inode_dirty(inode);
461 clear_nlink(inode);
462 discard_new_inode(inode);
465 iter.fi.icb.extLength = cpu_to_le32(inode->i_sb->s_blocksize);
476 d_instantiate_new(dentry, inode);
481 static int empty_dir(struct inode *dir)
500 static int udf_rmdir(struct inode *dir, struct dentry *dentry)
503 struct inode *inode = d_inode(dentry);
513 if (udf_get_lb_pblock(dir->i_sb, &tloc, 0) != inode->i_ino)
516 if (!empty_dir(inode))
519 if (inode->i_nlink != 2)
520 udf_warn(inode->i_sb, "empty directory has nlink != 2 (%u)\n",
521 inode->i_nlink);
522 clear_nlink(inode);
523 inode->i_size = 0;
527 inode_set_ctime_current(inode));
536 static int udf_unlink(struct inode *dir, struct dentry *dentry)
539 struct inode *inode = d_inode(dentry);
549 if (udf_get_lb_pblock(dir->i_sb, &tloc, 0) != inode->i_ino)
552 if (!inode->i_nlink) {
554 inode->i_ino, inode->i_nlink);
555 set_nlink(inode, 1);
560 inode_dec_link_count(inode);
562 inode_set_ctime_to_ts(inode, inode_get_ctime(dir));
570 static int udf_symlink(struct mnt_idmap *idmap, struct inode *dir,
573 struct inode *inode = udf_new_inode(dir, S_IFLNK | 0777);
586 if (IS_ERR(inode))
587 return PTR_ERR(inode);
589 iinfo = UDF_I(inode);
597 inode->i_data.a_ops = &udf_symlink_aops;
598 inode->i_op = &udf_symlink_inode_operations;
599 inode_nohighmem(inode);
605 block = udf_new_block(sb, inode,
611 epos.offset = udf_file_entry_alloc_offset(inode);
618 err = udf_add_aext(inode, &epos, &eloc, bsize, 0);
621 udf_free_blocks(sb, inode, &eloc, 0, 1);
631 udf_free_blocks(sb, inode, &eloc, 0, 1);
638 mark_buffer_dirty_inode(epos.bh, inode);
639 ea = epos.bh->b_data + udf_ext0_offset(inode);
643 eoffset = sb->s_blocksize - udf_ext0_offset(inode);
708 inode->i_size = elen;
710 iinfo->i_lenAlloc = inode->i_size;
712 udf_truncate_tail_extent(inode);
713 mark_inode_dirty(inode);
716 err = udf_add_nondir(dentry, inode);
723 inode_dec_link_count(inode);
724 discard_new_inode(inode);
728 static int udf_link(struct dentry *old_dentry, struct inode *dir,
731 struct inode *inode = d_inode(old_dentry);
738 iter.fi.icb.extLength = cpu_to_le32(inode->i_sb->s_blocksize);
739 iter.fi.icb.extLocation = cpu_to_lelb(UDF_I(inode)->i_location);
740 if (UDF_SB(inode->i_sb)->s_lvid_bh) {
742 cpu_to_le32(lvid_get_unique_id(inode->i_sb));
747 inc_nlink(inode);
749 inode_set_ctime_current(inode);
750 mark_inode_dirty(inode);
753 ihold(inode);
754 d_instantiate(dentry, inode);
762 static int udf_rename(struct mnt_idmap *idmap, struct inode *old_dir,
763 struct dentry *old_dentry, struct inode *new_dir,
766 struct inode *old_inode = d_inode(old_dentry);
767 struct inode *new_inode = d_inode(new_dentry);
808 "directory (ino %lu) has parent entry pointing to another inode (%lu != %u)\n",
902 struct inode *inode = NULL;
912 inode = udf_iget(child->d_sb, &tloc);
913 if (IS_ERR(inode))
914 return ERR_CAST(inode);
916 return d_obtain_alias(inode);
923 struct inode *inode;
931 inode = udf_iget(sb, &loc);
933 if (IS_ERR(inode))
934 return ERR_CAST(inode);
936 if (generation && inode->i_generation != generation) {
937 iput(inode);
940 return d_obtain_alias(inode);
965 static int udf_encode_fh(struct inode *inode, __u32 *fh, int *lenp,
966 struct inode *parent)
969 struct kernel_lb_addr location = UDF_I(inode)->i_location;
985 fid->udf.generation = inode->i_generation;
991 fid->udf.parent_generation = inode->i_generation;