Lines Matching refs:dir

9  *  Portions of this code from linux/fs/ext3/dir.c
18 * linux/fs/minix/dir.c
36 #include "dir.h"
56 struct inode *dir,
93 /* An orphan dir name is an 8 byte value, printed as a hex string */
96 static struct dentry *ocfs2_lookup(struct inode *dir, struct dentry *dentry,
105 trace_ocfs2_lookup(dir, dentry, dentry->d_name.len,
107 (unsigned long long)OCFS2_I(dir)->ip_blkno, 0);
114 status = ocfs2_inode_lock_nested(dir, NULL, 0, OI_LS_PARENT);
122 status = ocfs2_lookup_ino_from_name(dir, dentry->d_name.name,
127 inode = ocfs2_iget(OCFS2_SB(dir->i_sb), blkno, 0, 0);
161 OCFS2_I(dir)->ip_blkno);
175 ocfs2_inode_unlock(dir, 0);
184 static struct inode *ocfs2_get_init_inode(struct inode *dir, umode_t mode)
189 inode = new_inode(dir->i_sb);
200 mode = mode_strip_sgid(&nop_mnt_idmap, dir, mode);
201 inode_init_owner(&nop_mnt_idmap, inode, dir, mode);
225 struct inode *dir,
254 trace_ocfs2_mknod(dir, dentry, dentry->d_name.len, dentry->d_name.name,
255 (unsigned long long)OCFS2_I(dir)->ip_blkno,
258 status = dquot_initialize(dir);
265 osb = OCFS2_SB(dir->i_sb);
267 status = ocfs2_inode_lock(dir, &parent_fe_bh, 1);
274 if (S_ISDIR(mode) && (dir->i_nlink >= ocfs2_link_max(osb))) {
286 status = ocfs2_check_dir_for_entry(dir, dentry->d_name.name,
291 /* get a spot inside the dir. */
292 status = ocfs2_prepare_dir_for_insert(osb, dir, parent_fe_bh,
308 inode = ocfs2_get_init_inode(dir, mode);
317 status = ocfs2_init_security_get(inode, dir, &dentry->d_name, &si);
328 status = ocfs2_calc_xattr_init(dir, parent_fe_bh, mode,
379 status = ocfs2_mknod_locked(osb, dir, inode, dev,
389 status = ocfs2_fill_new_dir(osb, handle, dir, inode,
396 status = ocfs2_journal_access_di(handle, INODE_CACHE(dir),
405 inc_nlink(dir);
408 status = ocfs2_init_acl(handle, inode, dir, new_fe_bh, parent_fe_bh,
431 OCFS2_I(dir)->ip_blkno);
454 drop_nlink(dir);
466 ocfs2_inode_unlock(dir, 1);
505 static int __ocfs2_mknod_locked(struct inode *dir,
515 struct ocfs2_super *osb = OCFS2_SB(dir->i_sb);
619 struct inode *dir,
633 status = ocfs2_claim_new_inode(handle, dir, parent_fe_bh,
641 return __ocfs2_mknod_locked(dir, inode, dev, new_fe_bh,
647 struct inode *dir,
653 trace_ocfs2_mkdir(dir, dentry, dentry->d_name.len, dentry->d_name.name,
654 OCFS2_I(dir)->ip_blkno, mode);
655 ret = ocfs2_mknod(&nop_mnt_idmap, dir, dentry, mode | S_IFDIR, 0);
663 struct inode *dir,
670 trace_ocfs2_create(dir, dentry, dentry->d_name.len, dentry->d_name.name,
671 (unsigned long long)OCFS2_I(dir)->ip_blkno, mode);
672 ret = ocfs2_mknod(&nop_mnt_idmap, dir, dentry, mode | S_IFREG, 0);
680 struct inode *dir,
691 struct ocfs2_super *osb = OCFS2_SB(dir->i_sb);
703 err = dquot_initialize(dir);
710 &parent_fe_bh, dir, 0);
730 if (!dir->i_nlink) {
751 err = ocfs2_check_dir_for_entry(dir, dentry->d_name.name,
756 err = ocfs2_prepare_dir_for_insert(osb, dir, parent_fe_bh,
813 err = ocfs2_dentry_attach_lock(dentry, inode, OCFS2_I(dir)->ip_blkno);
829 ocfs2_double_unlock(old_dir, dir);
873 static int ocfs2_unlink(struct inode *dir,
881 struct ocfs2_super *osb = OCFS2_SB(dir->i_sb);
891 trace_ocfs2_unlink(dir, dentry, dentry->d_name.len,
893 (unsigned long long)OCFS2_I(dir)->ip_blkno,
896 status = dquot_initialize(dir);
902 BUG_ON(d_inode(dentry->d_parent) != dir);
907 status = ocfs2_inode_lock_nested(dir, &parent_node_bh, 1,
916 dentry->d_name.len, &blkno, dir,
986 /* delete the name from the parent dir */
987 status = ocfs2_delete_entry(handle, dir, &lookup);
1000 inode_set_mtime_to_ts(dir, inode_set_ctime_current(dir));
1002 drop_nlink(dir);
1004 status = ocfs2_mark_inode_dirty(handle, dir, parent_node_bh);
1008 inc_nlink(dir);
1033 ocfs2_inode_unlock(dir, 1);
1637 mlog(ML_ERROR, "need to change nlink for old dir "
1806 struct inode *dir,
1835 trace_ocfs2_symlink_begin(dir, dentry, symname,
1838 status = dquot_initialize(dir);
1844 sb = dir->i_sb;
1852 status = ocfs2_inode_lock(dir, &parent_fe_bh, 1);
1866 status = ocfs2_check_dir_for_entry(dir, dentry->d_name.name,
1871 status = ocfs2_prepare_dir_for_insert(osb, dir, parent_fe_bh,
1886 inode = ocfs2_get_init_inode(dir, S_IFLNK | S_IRWXUGO);
1895 status = ocfs2_init_security_get(inode, dir, &dentry->d_name, &si);
1907 status = ocfs2_calc_security_init(dir, &si, &want_clusters,
1943 trace_ocfs2_symlink_create(dir, dentry, dentry->d_name.len,
1945 (unsigned long long)OCFS2_I(dir)->ip_blkno,
1948 status = ocfs2_mknod_locked(osb, dir, inode,
2022 status = ocfs2_dentry_attach_lock(dentry, inode, OCFS2_I(dir)->ip_blkno);
2052 ocfs2_inode_unlock(dir, 1);
2190 * @ret_orphan_dir: Orphan dir inode - returned locked!
2191 * @blkno: Actual block number of the inode to be inserted into orphan dir.
2192 * @lookup: dir lookup result, to be passed back into functions like
2318 /* Record which orphan dir our inode now resides
2320 * dir to lock. */
2342 /* unlike orphan_add, we expect the orphan dir to already be locked here. */
2417 * ocfs2_prep_new_orphaned_file() - Prepare the orphan dir to receive a newly
2418 * allocated file. This is different from the typical 'add to orphan dir'
2420 * the orphan dir stringifies the inode block number to come up with it's
2424 * @dir: The directory which this inode will ultimately wind up under - not the
2425 * orphan dir!
2426 * @dir_bh: buffer_head the @dir inode block
2428 * with the string to be used for orphan dirent. Pass back to the orphan dir
2430 * @ret_orphan_dir: orphan dir inode returned to be passed back into orphan
2431 * dir code.
2433 * @orphan_insert: Dir insert context to be passed back into orphan dir code.
2441 static int ocfs2_prep_new_orphaned_file(struct inode *dir,
2451 struct ocfs2_super *osb = OCFS2_SB(dir->i_sb);
2470 ret = ocfs2_find_new_inode_loc(dir, dir_bh, inode_ac,
2499 /* Unroll orphan dir locking */
2510 int ocfs2_create_inode_in_orphan(struct inode *dir,
2517 struct ocfs2_super *osb = OCFS2_SB(dir->i_sb);
2527 status = ocfs2_inode_lock(dir, &parent_di_bh, 1);
2534 status = ocfs2_prep_new_orphaned_file(dir, parent_di_bh,
2543 inode = ocfs2_get_init_inode(dir, mode);
2564 status = ocfs2_claim_new_inode_at_loc(handle, dir, inode_ac,
2574 status = __ocfs2_mknod_locked(dir, inode,
2590 /* get open lock so that only nodes can't remove it from orphan dir. */
2624 ocfs2_inode_unlock(dir, 1);
2781 int ocfs2_mv_orphaned_inode_to_new(struct inode *dir,
2788 struct ocfs2_super *osb = OCFS2_SB(dir->i_sb);
2795 trace_ocfs2_mv_orphaned_inode_to_new(dir, dentry,
2797 (unsigned long long)OCFS2_I(dir)->ip_blkno,
2800 status = ocfs2_inode_lock(dir, &parent_di_bh, 1);
2814 status = ocfs2_check_dir_for_entry(dir, dentry->d_name.name,
2819 /* get a spot inside the dir. */
2820 status = ocfs2_prepare_dir_for_insert(osb, dir, parent_di_bh,
2892 OCFS2_I(dir)->ip_blkno);
2908 ocfs2_inode_unlock(dir, 1);