Lines Matching refs:dir
144 static struct fileIdentDesc *udf_find_entry(struct inode *dir, in udf_find_entry() argument
161 struct udf_inode_info *dinfo = UDF_I(dir); in udf_find_entry()
165 size = udf_ext0_offset(dir) + dir->i_size; in udf_find_entry()
166 f_pos = udf_ext0_offset(dir); in udf_find_entry()
169 fibh->soffset = fibh->eoffset = f_pos & (dir->i_sb->s_blocksize - 1); in udf_find_entry()
171 if (inode_bmap(dir, f_pos >> dir->i_sb->s_blocksize_bits, &epos, in udf_find_entry()
174 block = udf_get_lb_pblock(dir->i_sb, eloc, offset); in udf_find_entry()
175 if ((++offset << dir->i_sb->s_blocksize_bits) < elen) { in udf_find_entry()
183 fibh->sbh = fibh->ebh = udf_tread(dir->i_sb, block); in udf_find_entry()
193 fi = udf_fileident_read(dir, &f_pos, fibh, cfi, &epos, &eloc, in udf_find_entry()
222 if (!UDF_QUERY_FLAG(dir->i_sb, UDF_FLAG_UNDELETE)) in udf_find_entry()
227 if (!UDF_QUERY_FLAG(dir->i_sb, UDF_FLAG_UNHIDE)) in udf_find_entry()
240 flen = udf_get_filename(dir->i_sb, nameptr, fname, lfi); in udf_find_entry()
257 static struct dentry *udf_lookup(struct inode *dir, struct dentry *dentry, in udf_lookup() argument
277 inode = udf_iget(dir->i_sb, lb); in udf_lookup()
285 if (udf_find_entry(dir, &dentry->d_name, &fibh, &cfi)) { in udf_lookup()
290 inode = udf_iget(dir->i_sb, lelb_to_cpu(cfi.icb.extLocation)); in udf_lookup()
301 static struct fileIdentDesc *udf_add_entry(struct inode *dir, in udf_add_entry() argument
306 struct super_block *sb = dir->i_sb; in udf_add_entry()
311 loff_t size = udf_ext0_offset(dir) + dir->i_size; in udf_add_entry()
346 f_pos = udf_ext0_offset(dir); in udf_add_entry()
348 fibh->soffset = fibh->eoffset = f_pos & (dir->i_sb->s_blocksize - 1); in udf_add_entry()
349 dinfo = UDF_I(dir); in udf_add_entry()
351 if (inode_bmap(dir, f_pos >> dir->i_sb->s_blocksize_bits, &epos, in udf_add_entry()
353 block = udf_get_lb_pblock(dir->i_sb, in udf_add_entry()
358 block = udf_get_lb_pblock(dir->i_sb, eloc, offset); in udf_add_entry()
359 if ((++offset << dir->i_sb->s_blocksize_bits) < elen) { in udf_add_entry()
367 fibh->sbh = fibh->ebh = udf_tread(dir->i_sb, block); in udf_add_entry()
377 fi = udf_fileident_read(dir, &f_pos, fibh, cfi, &epos, &eloc, in udf_add_entry()
396 if (!udf_write_fi(dir, cfi, fi, fibh, NULL, in udf_add_entry()
415 udf_write_aext(dir, &epos, eloc, elen, 1); in udf_add_entry()
423 fibh->soffset -= udf_ext0_offset(dir); in udf_add_entry()
424 fibh->eoffset -= udf_ext0_offset(dir); in udf_add_entry()
425 f_pos -= udf_ext0_offset(dir); in udf_add_entry()
430 udf_expand_dir_adinicb(dir, &block, err); in udf_add_entry()
434 epos.offset = udf_file_entry_alloc_offset(dir); in udf_add_entry()
436 udf_current_aext(dir, &epos, &eloc, &elen, 1); in udf_add_entry()
452 udf_ext0_offset(dir) + in udf_add_entry()
457 dir->i_sb->s_blocksize_bits); in udf_add_entry()
470 dir->i_sb->s_blocksize_bits); in udf_add_entry()
471 fibh->ebh = udf_bread(dir, in udf_add_entry()
472 f_pos >> dir->i_sb->s_blocksize_bits, 1, err); in udf_add_entry()
477 if (udf_next_aext(dir, &epos, &eloc, &elen, 1) == in udf_add_entry()
480 dir->i_sb->s_blocksize_bits); in udf_add_entry()
504 if (!udf_write_fi(dir, cfi, fi, fibh, NULL, name)) { in udf_add_entry()
505 dir->i_size += nfidlen; in udf_add_entry()
508 mark_inode_dirty(dir); in udf_add_entry()
538 static int udf_create(struct inode *dir, struct dentry *dentry, int mode, in udf_create() argument
548 inode = udf_new_inode(dir, mode, &err); in udf_create()
564 fi = udf_add_entry(dir, dentry, &fibh, &cfi, &err); in udf_create()
576 udf_write_fi(dir, &cfi, fi, &fibh, NULL, NULL); in udf_create()
577 if (UDF_I(dir)->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) in udf_create()
578 mark_inode_dirty(dir); in udf_create()
588 static int udf_mknod(struct inode *dir, struct dentry *dentry, int mode, in udf_mknod() argument
602 inode = udf_new_inode(dir, mode, &err); in udf_mknod()
609 fi = udf_add_entry(dir, dentry, &fibh, &cfi, &err); in udf_mknod()
621 udf_write_fi(dir, &cfi, fi, &fibh, NULL, NULL); in udf_mknod()
622 if (UDF_I(dir)->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) in udf_mknod()
623 mark_inode_dirty(dir); in udf_mknod()
637 static int udf_mkdir(struct inode *dir, struct dentry *dentry, int mode) in udf_mkdir() argument
643 struct udf_inode_info *dinfo = UDF_I(dir); in udf_mkdir()
648 if (dir->i_nlink >= (256 << sizeof(dir->i_nlink)) - 1) in udf_mkdir()
652 inode = udf_new_inode(dir, S_IFDIR, &err); in udf_mkdir()
676 if (dir->i_mode & S_ISGID) in udf_mkdir()
680 fi = udf_add_entry(dir, dentry, &fibh, &cfi, &err); in udf_mkdir()
692 udf_write_fi(dir, &cfi, fi, &fibh, NULL, NULL); in udf_mkdir()
693 inc_nlink(dir); in udf_mkdir()
694 mark_inode_dirty(dir); in udf_mkdir()
706 static int empty_dir(struct inode *dir) in empty_dir() argument
711 loff_t size = udf_ext0_offset(dir) + dir->i_size; in empty_dir()
717 struct udf_inode_info *dinfo = UDF_I(dir); in empty_dir()
719 f_pos = udf_ext0_offset(dir); in empty_dir()
720 fibh.soffset = fibh.eoffset = f_pos & (dir->i_sb->s_blocksize - 1); in empty_dir()
724 else if (inode_bmap(dir, f_pos >> dir->i_sb->s_blocksize_bits, in empty_dir()
727 block = udf_get_lb_pblock(dir->i_sb, eloc, offset); in empty_dir()
728 if ((++offset << dir->i_sb->s_blocksize_bits) < elen) { in empty_dir()
736 fibh.sbh = fibh.ebh = udf_tread(dir->i_sb, block); in empty_dir()
747 fi = udf_fileident_read(dir, &f_pos, &fibh, &cfi, &epos, &eloc, in empty_dir()
775 static int udf_rmdir(struct inode *dir, struct dentry *dentry) in udf_rmdir() argument
785 fi = udf_find_entry(dir, &dentry->d_name, &fibh, &cfi); in udf_rmdir()
791 if (udf_get_lb_pblock(dir->i_sb, tloc, 0) != inode->i_ino) in udf_rmdir()
796 retval = udf_delete_entry(dir, fi, &fibh, &cfi); in udf_rmdir()
805 inode_dec_link_count(dir); in udf_rmdir()
806 inode->i_ctime = dir->i_ctime = dir->i_mtime = in udf_rmdir()
807 current_fs_time(dir->i_sb); in udf_rmdir()
808 mark_inode_dirty(dir); in udf_rmdir()
820 static int udf_unlink(struct inode *dir, struct dentry *dentry) in udf_unlink() argument
831 fi = udf_find_entry(dir, &dentry->d_name, &fibh, &cfi); in udf_unlink()
837 if (udf_get_lb_pblock(dir->i_sb, tloc, 0) != inode->i_ino) in udf_unlink()
845 retval = udf_delete_entry(dir, fi, &fibh, &cfi); in udf_unlink()
848 dir->i_ctime = dir->i_mtime = current_fs_time(dir->i_sb); in udf_unlink()
849 mark_inode_dirty(dir); in udf_unlink()
851 inode->i_ctime = dir->i_ctime; in udf_unlink()
864 static int udf_symlink(struct inode *dir, struct dentry *dentry, in udf_symlink() argument
884 inode = udf_new_inode(dir, S_IFLNK, &err); in udf_symlink()
1002 fi = udf_add_entry(dir, dentry, &fibh, &cfi, &err); in udf_symlink()
1023 udf_write_fi(dir, &cfi, fi, &fibh, NULL, NULL); in udf_symlink()
1024 if (UDF_I(dir)->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) in udf_symlink()
1025 mark_inode_dirty(dir); in udf_symlink()
1043 static int udf_link(struct dentry *old_dentry, struct inode *dir, in udf_link() argument
1058 fi = udf_add_entry(dir, dentry, &fibh, &cfi, &err); in udf_link()
1081 udf_write_fi(dir, &cfi, fi, &fibh, NULL, NULL); in udf_link()
1082 if (UDF_I(dir)->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) in udf_link()
1083 mark_inode_dirty(dir); in udf_link()