Lines Matching refs:dir
160 static struct fileIdentDesc *udf_find_entry(struct inode *dir, in udf_find_entry() argument
177 struct udf_inode_info *dinfo = UDF_I(dir); in udf_find_entry()
180 struct super_block *sb = dir->i_sb; in udf_find_entry()
182 size = udf_ext0_offset(dir) + dir->i_size; in udf_find_entry()
183 f_pos = udf_ext0_offset(dir); in udf_find_entry()
188 if (inode_bmap(dir, f_pos >> sb->s_blocksize_bits, &epos, in udf_find_entry()
217 fi = udf_fileident_read(dir, &f_pos, fibh, cfi, &epos, &eloc, in udf_find_entry()
286 static struct dentry *udf_lookup(struct inode *dir, struct dentry *dentry, in udf_lookup() argument
306 inode = udf_iget(dir->i_sb, lb); in udf_lookup()
312 fi = udf_find_entry(dir, &dentry->d_name, &fibh, &cfi); in udf_lookup()
324 inode = udf_iget(dir->i_sb, &loc); in udf_lookup()
332 static struct fileIdentDesc *udf_add_entry(struct inode *dir, in udf_add_entry() argument
337 struct super_block *sb = dir->i_sb; in udf_add_entry()
342 loff_t size = udf_ext0_offset(dir) + dir->i_size; in udf_add_entry()
377 f_pos = udf_ext0_offset(dir); in udf_add_entry()
379 fibh->soffset = fibh->eoffset = f_pos & (dir->i_sb->s_blocksize - 1); in udf_add_entry()
380 dinfo = UDF_I(dir); in udf_add_entry()
382 if (inode_bmap(dir, f_pos >> dir->i_sb->s_blocksize_bits, &epos, in udf_add_entry()
384 block = udf_get_lb_pblock(dir->i_sb, in udf_add_entry()
389 block = udf_get_lb_pblock(dir->i_sb, &eloc, offset); in udf_add_entry()
390 if ((++offset << dir->i_sb->s_blocksize_bits) < elen) { in udf_add_entry()
398 fibh->sbh = fibh->ebh = udf_tread(dir->i_sb, block); in udf_add_entry()
408 fi = udf_fileident_read(dir, &f_pos, fibh, cfi, &epos, &eloc, in udf_add_entry()
427 if (!udf_write_fi(dir, cfi, fi, fibh, NULL, in udf_add_entry()
445 fibh->soffset -= udf_ext0_offset(dir); in udf_add_entry()
446 fibh->eoffset -= udf_ext0_offset(dir); in udf_add_entry()
447 f_pos -= udf_ext0_offset(dir); in udf_add_entry()
452 udf_expand_dir_adinicb(dir, &block, err); in udf_add_entry()
456 epos.offset = udf_file_entry_alloc_offset(dir); in udf_add_entry()
458 udf_current_aext(dir, &epos, &eloc, &elen, 1); in udf_add_entry()
475 udf_ext0_offset(dir) + in udf_add_entry()
480 dir->i_sb->s_blocksize_bits); in udf_add_entry()
491 udf_write_aext(dir, &epos, &eloc, elen, 1); in udf_add_entry()
503 dir->i_sb->s_blocksize_bits); in udf_add_entry()
504 fibh->ebh = udf_bread(dir, in udf_add_entry()
505 f_pos >> dir->i_sb->s_blocksize_bits, 1, err); in udf_add_entry()
512 epos.offset = udf_file_entry_alloc_offset(dir); in udf_add_entry()
516 while (udf_next_aext(dir, &epos, &eloc, &elen, 1) == in udf_add_entry()
520 dir->i_sb->s_blocksize_bits); in udf_add_entry()
541 if (!udf_write_fi(dir, cfi, fi, fibh, NULL, name)) { in udf_add_entry()
542 dir->i_size += nfidlen; in udf_add_entry()
547 while (udf_next_aext(dir, &epos, &eloc, &elen, 1) == in udf_add_entry()
550 elen -= dinfo->i_lenExtents - dir->i_size; in udf_add_entry()
555 udf_write_aext(dir, &epos, &eloc, elen, 1); in udf_add_entry()
556 dinfo->i_lenExtents = dir->i_size; in udf_add_entry()
559 mark_inode_dirty(dir); in udf_add_entry()
592 struct inode *dir = d_inode(dentry->d_parent); in udf_add_nondir() local
597 fi = udf_add_entry(dir, dentry, &fibh, &cfi, &err); in udf_add_nondir()
608 udf_write_fi(dir, &cfi, fi, &fibh, NULL, NULL); in udf_add_nondir()
609 dir->i_ctime = dir->i_mtime = current_fs_time(dir->i_sb); in udf_add_nondir()
610 mark_inode_dirty(dir); in udf_add_nondir()
620 static int udf_create(struct inode *dir, struct dentry *dentry, umode_t mode, in udf_create() argument
623 struct inode *inode = udf_new_inode(dir, mode); in udf_create()
639 static int udf_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode) in udf_tmpfile() argument
641 struct inode *inode = udf_new_inode(dir, mode); in udf_tmpfile()
658 static int udf_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, in udf_mknod() argument
666 inode = udf_new_inode(dir, mode); in udf_mknod()
674 static int udf_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) in udf_mkdir() argument
680 struct udf_inode_info *dinfo = UDF_I(dir); in udf_mkdir()
683 inode = udf_new_inode(dir, S_IFDIR | mode); in udf_mkdir()
708 fi = udf_add_entry(dir, dentry, &fibh, &cfi, &err); in udf_mkdir()
721 udf_write_fi(dir, &cfi, fi, &fibh, NULL, NULL); in udf_mkdir()
722 inc_nlink(dir); in udf_mkdir()
723 dir->i_ctime = dir->i_mtime = current_fs_time(dir->i_sb); in udf_mkdir()
724 mark_inode_dirty(dir); in udf_mkdir()
736 static int empty_dir(struct inode *dir) in empty_dir() argument
741 loff_t size = udf_ext0_offset(dir) + dir->i_size; in empty_dir()
747 struct udf_inode_info *dinfo = UDF_I(dir); in empty_dir()
749 f_pos = udf_ext0_offset(dir); in empty_dir()
750 fibh.soffset = fibh.eoffset = f_pos & (dir->i_sb->s_blocksize - 1); in empty_dir()
754 else if (inode_bmap(dir, f_pos >> dir->i_sb->s_blocksize_bits, in empty_dir()
757 block = udf_get_lb_pblock(dir->i_sb, &eloc, offset); in empty_dir()
758 if ((++offset << dir->i_sb->s_blocksize_bits) < elen) { in empty_dir()
766 fibh.sbh = fibh.ebh = udf_tread(dir->i_sb, block); in empty_dir()
777 fi = udf_fileident_read(dir, &f_pos, &fibh, &cfi, &epos, &eloc, in empty_dir()
805 static int udf_rmdir(struct inode *dir, struct dentry *dentry) in udf_rmdir() argument
814 fi = udf_find_entry(dir, &dentry->d_name, &fibh, &cfi); in udf_rmdir()
823 if (udf_get_lb_pblock(dir->i_sb, &tloc, 0) != inode->i_ino) in udf_rmdir()
828 retval = udf_delete_entry(dir, fi, &fibh, &cfi); in udf_rmdir()
836 inode_dec_link_count(dir); in udf_rmdir()
837 inode->i_ctime = dir->i_ctime = dir->i_mtime = in udf_rmdir()
838 current_fs_time(dir->i_sb); in udf_rmdir()
839 mark_inode_dirty(dir); in udf_rmdir()
850 static int udf_unlink(struct inode *dir, struct dentry *dentry) in udf_unlink() argument
860 fi = udf_find_entry(dir, &dentry->d_name, &fibh, &cfi); in udf_unlink()
870 if (udf_get_lb_pblock(dir->i_sb, &tloc, 0) != inode->i_ino) in udf_unlink()
878 retval = udf_delete_entry(dir, fi, &fibh, &cfi); in udf_unlink()
881 dir->i_ctime = dir->i_mtime = current_fs_time(dir->i_sb); in udf_unlink()
882 mark_inode_dirty(dir); 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() argument
899 struct inode *inode = udf_new_inode(dir, S_IFLNK | S_IRWXUGO); in udf_symlink()
910 struct super_block *sb = dir->i_sb; in udf_symlink()
1044 static int udf_link(struct dentry *old_dentry, struct inode *dir, in udf_link() argument
1052 fi = udf_add_entry(dir, dentry, &fibh, &cfi, &err); in udf_link()
1062 udf_write_fi(dir, &cfi, fi, &fibh, NULL, NULL); in udf_link()
1063 if (UDF_I(dir)->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) in udf_link()
1064 mark_inode_dirty(dir); in udf_link()
1072 dir->i_ctime = dir->i_mtime = current_fs_time(dir->i_sb); in udf_link()
1073 mark_inode_dirty(dir); in udf_link()