Lines Matching refs:dip
268 struct inode *gfs2_lookup_simple(struct inode *dip, const char *name) in gfs2_lookup_simple() argument
273 inode = gfs2_lookupi(dip, &qstr, 1); in gfs2_lookup_simple()
304 struct gfs2_inode *dip = GFS2_I(dir); in gfs2_lookupi() local
320 if (gfs2_glock_is_locked_by_me(dip->i_gl) == NULL) { in gfs2_lookupi()
321 error = gfs2_glock_nq_init(dip->i_gl, LM_ST_SHARED, 0, &d_gh); in gfs2_lookupi()
352 static int create_ok(struct gfs2_inode *dip, const struct qstr *name, in create_ok() argument
357 error = gfs2_permission(&nop_mnt_idmap, &dip->i_inode, in create_ok()
363 if (!dip->i_inode.i_nlink) in create_ok()
366 if (dip->i_entries == (u32)-1) in create_ok()
368 if (S_ISDIR(mode) && dip->i_inode.i_nlink == (u32)-1) in create_ok()
374 static void munge_mode_uid_gid(const struct gfs2_inode *dip, in munge_mode_uid_gid() argument
377 if (GFS2_SB(&dip->i_inode)->sd_args.ar_suiddir && in munge_mode_uid_gid()
378 (dip->i_inode.i_mode & S_ISUID) && in munge_mode_uid_gid()
379 !uid_eq(dip->i_inode.i_uid, GLOBAL_ROOT_UID)) { in munge_mode_uid_gid()
382 else if (!uid_eq(dip->i_inode.i_uid, current_fsuid())) in munge_mode_uid_gid()
384 inode->i_uid = dip->i_inode.i_uid; in munge_mode_uid_gid()
388 if (dip->i_inode.i_mode & S_ISGID) { in munge_mode_uid_gid()
391 inode->i_gid = dip->i_inode.i_gid; in munge_mode_uid_gid()
486 static void init_dinode(struct gfs2_inode *dip, struct gfs2_inode *ip, in init_dinode() argument
508 gfs2_init_dir(dibh, dip); in init_dinode()
533 static unsigned gfs2_trans_da_blks(const struct gfs2_inode *dip, in gfs2_trans_da_blks() argument
537 return da->nr_blocks + gfs2_rg_blocks(dip, da->nr_blocks) + in gfs2_trans_da_blks()
541 static int link_dinode(struct gfs2_inode *dip, const struct qstr *name, in link_dinode() argument
544 struct gfs2_sbd *sdp = GFS2_SB(&dip->i_inode); in link_dinode()
549 error = gfs2_quota_lock_check(dip, &ap); in link_dinode()
553 error = gfs2_inplace_reserve(dip, &ap); in link_dinode()
557 error = gfs2_trans_begin(sdp, gfs2_trans_da_blks(dip, da, 2), 0); in link_dinode()
566 error = gfs2_dir_add(&dip->i_inode, name, ip, da); in link_dinode()
570 gfs2_inplace_release(dip); in link_dinode()
572 gfs2_quota_unlock(dip); in link_dinode()
621 struct gfs2_inode *dip = GFS2_I(dir), *ip; in gfs2_create_inode() local
622 struct gfs2_sbd *sdp = GFS2_SB(&dip->i_inode); in gfs2_create_inode()
632 error = gfs2_qa_get(dip); in gfs2_create_inode()
640 error = gfs2_glock_nq_init(dip->i_gl, LM_ST_EXCLUSIVE, 0, &d_gh); in gfs2_create_inode()
645 error = create_ok(dip, name, mode); in gfs2_create_inode()
694 munge_mode_uid_gid(dip, inode); in gfs2_create_inode()
695 check_and_update_goal(dip); in gfs2_create_inode()
696 ip->i_goal = dip->i_goal; in gfs2_create_inode()
706 if ((dip->i_diskflags & GFS2_DIF_INHERIT_JDATA) || in gfs2_create_inode()
712 ip->i_diskflags |= (dip->i_diskflags & GFS2_DIF_INHERIT_JDATA); in gfs2_create_inode()
719 if (dip->i_diskflags & GFS2_DIF_SYSTEM) in gfs2_create_inode()
724 if ((GFS2_I(d_inode(sdp->sd_root_dir)) == dip) || in gfs2_create_inode()
725 (dip->i_diskflags & GFS2_DIF_TOPDIR)) in gfs2_create_inode()
768 init_dinode(dip, ip, symname); in gfs2_create_inode()
790 error = security_inode_init_security(&ip->i_inode, &dip->i_inode, name, in gfs2_create_inode()
795 error = link_dinode(dip, name, ip, &da); in gfs2_create_inode()
811 gfs2_qa_put(dip); in gfs2_create_inode()
848 gfs2_qa_put(dip); in gfs2_create_inode()
940 struct gfs2_inode *dip = GFS2_I(dir); in gfs2_link() local
952 error = gfs2_qa_get(dip); in gfs2_link()
956 gfs2_holder_init(dip->i_gl, LM_ST_EXCLUSIVE, 0, ghs); in gfs2_link()
987 if (!dip->i_inode.i_nlink) in gfs2_link()
990 if (dip->i_entries == (u32)-1) in gfs2_link()
1008 error = gfs2_quota_lock_check(dip, &ap); in gfs2_link()
1012 error = gfs2_inplace_reserve(dip, &ap); in gfs2_link()
1016 error = gfs2_trans_begin(sdp, gfs2_trans_da_blks(dip, &da, 2), 0); in gfs2_link()
1046 gfs2_inplace_release(dip); in gfs2_link()
1049 gfs2_quota_unlock(dip); in gfs2_link()
1056 gfs2_qa_put(dip); in gfs2_link()
1073 static int gfs2_unlink_ok(struct gfs2_inode *dip, const struct qstr *name, in gfs2_unlink_ok() argument
1081 if ((dip->i_inode.i_mode & S_ISVTX) && in gfs2_unlink_ok()
1082 !uid_eq(dip->i_inode.i_uid, current_fsuid()) && in gfs2_unlink_ok()
1086 if (IS_APPEND(&dip->i_inode)) in gfs2_unlink_ok()
1089 error = gfs2_permission(&nop_mnt_idmap, &dip->i_inode, in gfs2_unlink_ok()
1094 return gfs2_dir_check(&dip->i_inode, name, ip); in gfs2_unlink_ok()
1108 static int gfs2_unlink_inode(struct gfs2_inode *dip, in gfs2_unlink_inode() argument
1115 error = gfs2_dir_del(dip, dentry); in gfs2_unlink_inode()
1145 struct gfs2_inode *dip = GFS2_I(dir); in gfs2_unlink() local
1159 gfs2_holder_init(dip->i_gl, LM_ST_EXCLUSIVE, 0, ghs); in gfs2_unlink()
1191 error = gfs2_unlink_ok(dip, &dentry->d_name, ip); in gfs2_unlink()
1199 error = gfs2_unlink_inode(dip, dentry); in gfs2_unlink()