Lines Matching refs:ip

371 	struct gfs2_inode *ip = GFS2_I(sdp->sd_qc_inode);  in bh_get()  local
387 bh_map.b_size = 1 << ip->i_inode.i_blkbits; in bh_get()
388 error = gfs2_block_map(&ip->i_inode, block, &bh_map, 0); in bh_get()
391 error = gfs2_meta_read(ip->i_gl, bh_map.b_blocknr, DIO_WAIT, &bh); in bh_get()
530 int gfs2_quota_hold(struct gfs2_inode *ip, kuid_t uid, kgid_t gid) in gfs2_quota_hold() argument
532 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in gfs2_quota_hold()
536 if (ip->i_res == NULL) { in gfs2_quota_hold()
537 error = gfs2_rs_alloc(ip); in gfs2_quota_hold()
542 qd = ip->i_res->rs_qa_qd; in gfs2_quota_hold()
544 if (gfs2_assert_warn(sdp, !ip->i_res->rs_qa_qd_num) || in gfs2_quota_hold()
545 gfs2_assert_warn(sdp, !test_bit(GIF_QD_LOCKED, &ip->i_flags))) in gfs2_quota_hold()
551 error = qdsb_get(sdp, make_kqid_uid(ip->i_inode.i_uid), qd); in gfs2_quota_hold()
554 ip->i_res->rs_qa_qd_num++; in gfs2_quota_hold()
557 error = qdsb_get(sdp, make_kqid_gid(ip->i_inode.i_gid), qd); in gfs2_quota_hold()
560 ip->i_res->rs_qa_qd_num++; in gfs2_quota_hold()
564 !uid_eq(uid, ip->i_inode.i_uid)) { in gfs2_quota_hold()
568 ip->i_res->rs_qa_qd_num++; in gfs2_quota_hold()
573 !gid_eq(gid, ip->i_inode.i_gid)) { in gfs2_quota_hold()
577 ip->i_res->rs_qa_qd_num++; in gfs2_quota_hold()
583 gfs2_quota_unhold(ip); in gfs2_quota_hold()
587 void gfs2_quota_unhold(struct gfs2_inode *ip) in gfs2_quota_unhold() argument
589 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in gfs2_quota_unhold()
592 if (ip->i_res == NULL) in gfs2_quota_unhold()
594 gfs2_assert_warn(sdp, !test_bit(GIF_QD_LOCKED, &ip->i_flags)); in gfs2_quota_unhold()
596 for (x = 0; x < ip->i_res->rs_qa_qd_num; x++) { in gfs2_quota_unhold()
597 qdsb_put(ip->i_res->rs_qa_qd[x]); in gfs2_quota_unhold()
598 ip->i_res->rs_qa_qd[x] = NULL; in gfs2_quota_unhold()
600 ip->i_res->rs_qa_qd_num = 0; in gfs2_quota_unhold()
618 struct gfs2_inode *ip = GFS2_I(sdp->sd_qc_inode); in do_qc() local
623 gfs2_trans_add_meta(ip->i_gl, qd->qd_bh); in do_qc()
657 static int gfs2_write_buf_to_page(struct gfs2_inode *ip, unsigned long index, in gfs2_write_buf_to_page() argument
660 struct inode *inode = &ip->i_inode; in gfs2_write_buf_to_page()
705 gfs2_trans_add_data(ip->i_gl, bh); in gfs2_write_buf_to_page()
733 static int gfs2_write_disk_quota(struct gfs2_inode *ip, struct gfs2_quota *qp, in gfs2_write_disk_quota() argument
753 error = gfs2_write_buf_to_page(ip, pg_beg, pg_off, ptr, in gfs2_write_disk_quota()
757 error = gfs2_write_buf_to_page(ip, pg_beg + 1, 0, in gfs2_write_disk_quota()
777 static int gfs2_adjust_quota(struct gfs2_inode *ip, loff_t loc, in gfs2_adjust_quota() argument
781 struct inode *inode = &ip->i_inode; in gfs2_adjust_quota()
787 if (gfs2_is_stuffed(ip)) { in gfs2_adjust_quota()
788 err = gfs2_unstuff_dinode(ip, NULL); in gfs2_adjust_quota()
794 err = gfs2_internal_read(ip, (char *)&q, &loc, sizeof(q)); in gfs2_adjust_quota()
819 err = gfs2_write_disk_quota(ip, &q, loc); in gfs2_adjust_quota()
835 struct gfs2_inode *ip = GFS2_I(sdp->sd_quota_inode); in do_sync() local
846 error = gfs2_rs_alloc(ip); in do_sync()
850 gfs2_write_calc_reserv(ip, sizeof(struct gfs2_quota), in do_sync()
858 mutex_lock(&ip->i_inode.i_mutex); in do_sync()
866 error = gfs2_glock_nq_init(ip->i_gl, LM_ST_EXCLUSIVE, 0, &i_gh); in do_sync()
872 if (gfs2_write_alloc_required(ip, offset, in do_sync()
890 error = gfs2_inplace_reserve(ip, &ap); in do_sync()
895 blocks += gfs2_rg_blocks(ip, reserved) + nalloc * ind_blocks + RES_STATFS; in do_sync()
904 error = gfs2_adjust_quota(ip, offset, qd->qd_change_sync, qd, NULL); in do_sync()
917 gfs2_inplace_release(ip); in do_sync()
923 mutex_unlock(&ip->i_inode.i_mutex); in do_sync()
925 gfs2_log_flush(ip->i_gl->gl_name.ln_sbd, ip->i_gl, NORMAL_FLUSH); in do_sync()
931 struct gfs2_inode *ip = GFS2_I(sdp->sd_quota_inode); in update_qd() local
939 error = gfs2_internal_read(ip, (char *)&q, &pos, sizeof(q)); in update_qd()
958 struct gfs2_inode *ip = GFS2_I(sdp->sd_quota_inode); in do_glock() local
979 error = gfs2_glock_nq_init(ip->i_gl, LM_ST_SHARED, 0, &i_gh); in do_glock()
1002 int gfs2_quota_lock(struct gfs2_inode *ip, kuid_t uid, kgid_t gid) in gfs2_quota_lock() argument
1004 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in gfs2_quota_lock()
1009 error = gfs2_quota_hold(ip, uid, gid); in gfs2_quota_lock()
1017 sort(ip->i_res->rs_qa_qd, ip->i_res->rs_qa_qd_num, in gfs2_quota_lock()
1020 for (x = 0; x < ip->i_res->rs_qa_qd_num; x++) { in gfs2_quota_lock()
1021 qd = ip->i_res->rs_qa_qd[x]; in gfs2_quota_lock()
1022 error = do_glock(qd, NO_FORCE, &ip->i_res->rs_qa_qd_ghs[x]); in gfs2_quota_lock()
1028 set_bit(GIF_QD_LOCKED, &ip->i_flags); in gfs2_quota_lock()
1031 gfs2_glock_dq_uninit(&ip->i_res->rs_qa_qd_ghs[x]); in gfs2_quota_lock()
1032 gfs2_quota_unhold(ip); in gfs2_quota_lock()
1074 void gfs2_quota_unlock(struct gfs2_inode *ip) in gfs2_quota_unlock() argument
1076 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in gfs2_quota_unlock()
1082 if (!test_and_clear_bit(GIF_QD_LOCKED, &ip->i_flags)) in gfs2_quota_unlock()
1085 for (x = 0; x < ip->i_res->rs_qa_qd_num; x++) { in gfs2_quota_unlock()
1089 qd = ip->i_res->rs_qa_qd[x]; in gfs2_quota_unlock()
1092 gfs2_glock_dq_uninit(&ip->i_res->rs_qa_qd_ghs[x]); in gfs2_quota_unlock()
1121 gfs2_quota_unhold(ip); in gfs2_quota_unlock()
1155 int gfs2_quota_check(struct gfs2_inode *ip, kuid_t uid, kgid_t gid, in gfs2_quota_check() argument
1158 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in gfs2_quota_check()
1165 if (!test_bit(GIF_QD_LOCKED, &ip->i_flags)) in gfs2_quota_check()
1171 for (x = 0; x < ip->i_res->rs_qa_qd_num; x++) { in gfs2_quota_check()
1172 qd = ip->i_res->rs_qa_qd[x]; in gfs2_quota_check()
1215 void gfs2_quota_change(struct gfs2_inode *ip, s64 change, in gfs2_quota_change() argument
1221 if (gfs2_assert_warn(GFS2_SB(&ip->i_inode), change)) in gfs2_quota_change()
1223 if (ip->i_diskflags & GFS2_DIF_SYSTEM) in gfs2_quota_change()
1226 for (x = 0; x < ip->i_res->rs_qa_qd_num; x++) { in gfs2_quota_change()
1227 qd = ip->i_res->rs_qa_qd[x]; in gfs2_quota_change()
1302 struct gfs2_inode *ip = GFS2_I(sdp->sd_qc_inode); in gfs2_quota_init() local
1334 error = gfs2_extent_map(&ip->i_inode, x, &new, &dblock, &extlen); in gfs2_quota_init()
1339 bh = gfs2_meta_ra(ip->i_gl, dblock, extlen); in gfs2_quota_init()
1462 struct gfs2_inode *ip; in quotad_check_trunc_list() local
1465 ip = NULL; in quotad_check_trunc_list()
1468 ip = list_entry(sdp->sd_trunc_list.next, in quotad_check_trunc_list()
1470 list_del_init(&ip->i_trunc_list); in quotad_check_trunc_list()
1473 if (ip == NULL) in quotad_check_trunc_list()
1475 gfs2_glock_finish_truncate(ip); in quotad_check_trunc_list()
1615 struct gfs2_inode *ip = GFS2_I(sdp->sd_quota_inode); in gfs2_set_dqblk() local
1638 error = gfs2_rs_alloc(ip); in gfs2_set_dqblk()
1642 mutex_lock(&ip->i_inode.i_mutex); in gfs2_set_dqblk()
1646 error = gfs2_glock_nq_init(ip->i_gl, LM_ST_EXCLUSIVE, 0, &i_gh); in gfs2_set_dqblk()
1672 alloc_required = gfs2_write_alloc_required(ip, offset, sizeof(struct gfs2_quota)); in gfs2_set_dqblk()
1673 if (gfs2_is_stuffed(ip)) in gfs2_set_dqblk()
1677 gfs2_write_calc_reserv(ip, sizeof(struct gfs2_quota), in gfs2_set_dqblk()
1681 error = gfs2_inplace_reserve(ip, &ap); in gfs2_set_dqblk()
1684 blocks += gfs2_rg_blocks(ip, blocks); in gfs2_set_dqblk()
1694 error = gfs2_adjust_quota(ip, offset, 0, qd, fdq); in gfs2_set_dqblk()
1701 gfs2_inplace_release(ip); in gfs2_set_dqblk()
1707 mutex_unlock(&ip->i_inode.i_mutex); in gfs2_set_dqblk()