Lines Matching refs:dir
141 static struct fileIdentDesc *udf_find_entry(struct inode *dir, in udf_find_entry() argument
158 struct udf_inode_info *dinfo = UDF_I(dir); in udf_find_entry()
161 struct super_block *sb = dir->i_sb; in udf_find_entry()
163 size = udf_ext0_offset(dir) + dir->i_size; in udf_find_entry()
164 f_pos = udf_ext0_offset(dir); in udf_find_entry()
169 if (inode_bmap(dir, f_pos >> sb->s_blocksize_bits, &epos, in udf_find_entry()
191 fi = udf_fileident_read(dir, &f_pos, fibh, cfi, &epos, &eloc, in udf_find_entry()
253 static struct dentry *udf_lookup(struct inode *dir, struct dentry *dentry, in udf_lookup() argument
272 inode = udf_iget(dir->i_sb, lb); in udf_lookup()
278 if (udf_find_entry(dir, &dentry->d_name, &fibh, &cfi)) { in udf_lookup()
286 inode = udf_iget(dir->i_sb, &loc); in udf_lookup()
294 static struct fileIdentDesc *udf_add_entry(struct inode *dir, in udf_add_entry() argument
299 struct super_block *sb = dir->i_sb; in udf_add_entry()
304 loff_t size = udf_ext0_offset(dir) + dir->i_size; in udf_add_entry()
339 f_pos = udf_ext0_offset(dir); in udf_add_entry()
341 fibh->soffset = fibh->eoffset = f_pos & (dir->i_sb->s_blocksize - 1); in udf_add_entry()
342 dinfo = UDF_I(dir); in udf_add_entry()
344 if (inode_bmap(dir, f_pos >> dir->i_sb->s_blocksize_bits, &epos, in udf_add_entry()
346 block = udf_get_lb_pblock(dir->i_sb, in udf_add_entry()
351 block = udf_get_lb_pblock(dir->i_sb, &eloc, offset); in udf_add_entry()
352 if ((++offset << dir->i_sb->s_blocksize_bits) < elen) { in udf_add_entry()
360 fibh->sbh = fibh->ebh = udf_tread(dir->i_sb, block); in udf_add_entry()
370 fi = udf_fileident_read(dir, &f_pos, fibh, cfi, &epos, &eloc, in udf_add_entry()
389 if (!udf_write_fi(dir, cfi, fi, fibh, NULL, in udf_add_entry()
407 fibh->soffset -= udf_ext0_offset(dir); in udf_add_entry()
408 fibh->eoffset -= udf_ext0_offset(dir); in udf_add_entry()
409 f_pos -= udf_ext0_offset(dir); in udf_add_entry()
414 udf_expand_dir_adinicb(dir, &block, err); in udf_add_entry()
418 epos.offset = udf_file_entry_alloc_offset(dir); in udf_add_entry()
420 udf_current_aext(dir, &epos, &eloc, &elen, 1); in udf_add_entry()
437 udf_ext0_offset(dir) + in udf_add_entry()
442 dir->i_sb->s_blocksize_bits); in udf_add_entry()
453 udf_write_aext(dir, &epos, &eloc, elen, 1); in udf_add_entry()
465 dir->i_sb->s_blocksize_bits); in udf_add_entry()
466 fibh->ebh = udf_bread(dir, in udf_add_entry()
467 f_pos >> dir->i_sb->s_blocksize_bits, 1, err); in udf_add_entry()
474 epos.offset = udf_file_entry_alloc_offset(dir); in udf_add_entry()
478 while (udf_next_aext(dir, &epos, &eloc, &elen, 1) == in udf_add_entry()
482 dir->i_sb->s_blocksize_bits); in udf_add_entry()
503 if (!udf_write_fi(dir, cfi, fi, fibh, NULL, name)) { in udf_add_entry()
504 dir->i_size += nfidlen; in udf_add_entry()
509 while (udf_next_aext(dir, &epos, &eloc, &elen, 1) == in udf_add_entry()
512 elen -= dinfo->i_lenExtents - dir->i_size; in udf_add_entry()
517 udf_write_aext(dir, &epos, &eloc, elen, 1); in udf_add_entry()
518 dinfo->i_lenExtents = dir->i_size; in udf_add_entry()
521 mark_inode_dirty(dir); in udf_add_entry()
554 struct inode *dir = d_inode(dentry->d_parent); in udf_add_nondir() local
559 fi = udf_add_entry(dir, dentry, &fibh, &cfi, &err); in udf_add_nondir()
570 udf_write_fi(dir, &cfi, fi, &fibh, NULL, NULL); in udf_add_nondir()
571 dir->i_ctime = dir->i_mtime = current_fs_time(dir->i_sb); in udf_add_nondir()
572 mark_inode_dirty(dir); in udf_add_nondir()
582 static int udf_create(struct inode *dir, struct dentry *dentry, umode_t mode, in udf_create() argument
585 struct inode *inode = udf_new_inode(dir, mode); in udf_create()
601 static int udf_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode) in udf_tmpfile() argument
603 struct inode *inode = udf_new_inode(dir, mode); in udf_tmpfile()
620 static int udf_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, in udf_mknod() argument
628 inode = udf_new_inode(dir, mode); in udf_mknod()
636 static int udf_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) in udf_mkdir() argument
642 struct udf_inode_info *dinfo = UDF_I(dir); in udf_mkdir()
645 inode = udf_new_inode(dir, S_IFDIR | mode); in udf_mkdir()
670 fi = udf_add_entry(dir, dentry, &fibh, &cfi, &err); in udf_mkdir()
683 udf_write_fi(dir, &cfi, fi, &fibh, NULL, NULL); in udf_mkdir()
684 inc_nlink(dir); in udf_mkdir()
685 dir->i_ctime = dir->i_mtime = current_fs_time(dir->i_sb); in udf_mkdir()
686 mark_inode_dirty(dir); in udf_mkdir()
698 static int empty_dir(struct inode *dir) in empty_dir() argument
703 loff_t size = udf_ext0_offset(dir) + dir->i_size; in empty_dir()
709 struct udf_inode_info *dinfo = UDF_I(dir); in empty_dir()
711 f_pos = udf_ext0_offset(dir); in empty_dir()
712 fibh.soffset = fibh.eoffset = f_pos & (dir->i_sb->s_blocksize - 1); in empty_dir()
716 else if (inode_bmap(dir, f_pos >> dir->i_sb->s_blocksize_bits, in empty_dir()
719 block = udf_get_lb_pblock(dir->i_sb, &eloc, offset); in empty_dir()
720 if ((++offset << dir->i_sb->s_blocksize_bits) < elen) { in empty_dir()
728 fibh.sbh = fibh.ebh = udf_tread(dir->i_sb, block); in empty_dir()
739 fi = udf_fileident_read(dir, &f_pos, &fibh, &cfi, &epos, &eloc, in empty_dir()
767 static int udf_rmdir(struct inode *dir, struct dentry *dentry) in udf_rmdir() argument
776 fi = udf_find_entry(dir, &dentry->d_name, &fibh, &cfi); in udf_rmdir()
782 if (udf_get_lb_pblock(dir->i_sb, &tloc, 0) != inode->i_ino) in udf_rmdir()
787 retval = udf_delete_entry(dir, fi, &fibh, &cfi); in udf_rmdir()
795 inode_dec_link_count(dir); in udf_rmdir()
796 inode->i_ctime = dir->i_ctime = dir->i_mtime = in udf_rmdir()
797 current_fs_time(dir->i_sb); in udf_rmdir()
798 mark_inode_dirty(dir); in udf_rmdir()
809 static int udf_unlink(struct inode *dir, struct dentry *dentry) in udf_unlink() argument
819 fi = udf_find_entry(dir, &dentry->d_name, &fibh, &cfi); in udf_unlink()
825 if (udf_get_lb_pblock(dir->i_sb, &tloc, 0) != inode->i_ino) in udf_unlink()
833 retval = udf_delete_entry(dir, fi, &fibh, &cfi); in udf_unlink()
836 dir->i_ctime = dir->i_mtime = current_fs_time(dir->i_sb); in udf_unlink()
837 mark_inode_dirty(dir); 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() argument
854 struct inode *inode = udf_new_inode(dir, S_IFLNK | S_IRWXUGO); in udf_symlink()
865 struct super_block *sb = dir->i_sb; in udf_symlink()
999 static int udf_link(struct dentry *old_dentry, struct inode *dir, in udf_link() argument
1007 fi = udf_add_entry(dir, dentry, &fibh, &cfi, &err); in udf_link()
1017 udf_write_fi(dir, &cfi, fi, &fibh, NULL, NULL); in udf_link()
1018 if (UDF_I(dir)->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) in udf_link()
1019 mark_inode_dirty(dir); in udf_link()
1027 dir->i_ctime = dir->i_mtime = current_fs_time(dir->i_sb); in udf_link()
1028 mark_inode_dirty(dir); in udf_link()