Lines Matching refs:ip
76 const struct gfs2_inode *ip, bool nowrap,
580 void check_and_update_goal(struct gfs2_inode *ip) in check_and_update_goal() argument
582 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in check_and_update_goal()
583 if (!ip->i_goal || gfs2_blk2rgrpd(sdp, ip->i_goal, 1) == NULL) in check_and_update_goal()
584 ip->i_goal = ip->i_no_addr; in check_and_update_goal()
602 int gfs2_rs_alloc(struct gfs2_inode *ip) in gfs2_rs_alloc() argument
606 down_write(&ip->i_rw_mutex); in gfs2_rs_alloc()
607 if (ip->i_res) in gfs2_rs_alloc()
610 ip->i_res = kmem_cache_zalloc(gfs2_rsrv_cachep, GFP_NOFS); in gfs2_rs_alloc()
611 if (!ip->i_res) { in gfs2_rs_alloc()
616 RB_CLEAR_NODE(&ip->i_res->rs_node); in gfs2_rs_alloc()
618 up_write(&ip->i_rw_mutex); in gfs2_rs_alloc()
686 void gfs2_rs_delete(struct gfs2_inode *ip, atomic_t *wcount) in gfs2_rs_delete() argument
688 down_write(&ip->i_rw_mutex); in gfs2_rs_delete()
689 if (ip->i_res && ((wcount == NULL) || (atomic_read(wcount) <= 1))) { in gfs2_rs_delete()
690 gfs2_rs_deltree(ip->i_res); in gfs2_rs_delete()
691 BUG_ON(ip->i_res->rs_free); in gfs2_rs_delete()
692 kmem_cache_free(gfs2_rsrv_cachep, ip->i_res); in gfs2_rs_delete()
693 ip->i_res = NULL; in gfs2_rs_delete()
695 up_write(&ip->i_rw_mutex); in gfs2_rs_delete()
845 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_ri_total() local
854 error = gfs2_internal_read(ip, buf, &pos, in gfs2_ri_total()
895 static int read_rindex_entry(struct gfs2_inode *ip) in read_rindex_entry() argument
897 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in read_rindex_entry()
904 if (pos >= i_size_read(&ip->i_inode)) in read_rindex_entry()
907 error = gfs2_internal_read(ip, (char *)&buf, &pos, in read_rindex_entry()
994 static int gfs2_ri_update(struct gfs2_inode *ip) in gfs2_ri_update() argument
996 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in gfs2_ri_update()
1000 error = read_rindex_entry(ip); in gfs2_ri_update()
1031 struct gfs2_inode *ip = GFS2_I(sdp->sd_rindex); in gfs2_rindex_update() local
1032 struct gfs2_glock *gl = ip->i_gl; in gfs2_rindex_update()
1046 error = gfs2_ri_update(ip); in gfs2_rindex_update()
1439 static void rs_insert(struct gfs2_inode *ip) in rs_insert() argument
1443 struct gfs2_blkreserv *rs = ip->i_res; in rs_insert()
1485 static void rg_mblk_search(struct gfs2_rgrpd *rgd, struct gfs2_inode *ip, in rg_mblk_search() argument
1490 struct gfs2_blkreserv *rs = ip->i_res; in rg_mblk_search()
1494 struct inode *inode = &ip->i_inode; in rg_mblk_search()
1506 if (rgrp_contains_block(rgd, ip->i_goal)) in rg_mblk_search()
1507 goal = ip->i_goal; in rg_mblk_search()
1514 ret = gfs2_rbm_find(&rbm, GFS2_BLKST_FREE, &extlen, ip, true, ap); in rg_mblk_search()
1518 rs->rs_inum = ip->i_no_addr; in rg_mblk_search()
1519 rs_insert(ip); in rg_mblk_search()
1541 const struct gfs2_inode *ip) in gfs2_next_unreserved_block() argument
1561 while ((rs_cmp(block, length, rs) == 0) && (ip->i_res != rs)) { in gfs2_next_unreserved_block()
1591 const struct gfs2_inode *ip, in gfs2_reservation_check_and_update() argument
1614 nblock = gfs2_next_unreserved_block(rbm->rgd, block, extlen, ip); in gfs2_reservation_check_and_update()
1653 const struct gfs2_inode *ip, bool nowrap, in gfs2_rbm_find() argument
1692 if (ip == NULL) in gfs2_rbm_find()
1696 ret = gfs2_reservation_check_and_update(rbm, ip, in gfs2_rbm_find()
1769 struct gfs2_inode *ip; in try_rgrp_unlink() local
1804 ip = gl->gl_object; in try_rgrp_unlink()
1806 if (ip || queue_work(gfs2_delete_workqueue, &gl->gl_delete) == 0) in try_rgrp_unlink()
1902 static u32 gfs2_orlov_skip(const struct gfs2_inode *ip) in gfs2_orlov_skip() argument
1904 const struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in gfs2_orlov_skip()
1960 int gfs2_inplace_reserve(struct gfs2_inode *ip, struct gfs2_alloc_parms *ap) in gfs2_inplace_reserve() argument
1962 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in gfs2_inplace_reserve()
1964 struct gfs2_blkreserv *rs = ip->i_res; in gfs2_inplace_reserve()
1976 } else if (ip->i_rgd && rgrp_contains_block(ip->i_rgd, ip->i_goal)) { in gfs2_inplace_reserve()
1977 rs->rs_rbm.rgd = begin = ip->i_rgd; in gfs2_inplace_reserve()
1979 check_and_update_goal(ip); in gfs2_inplace_reserve()
1980 rs->rs_rbm.rgd = begin = gfs2_blk2rgrpd(sdp, ip->i_goal, 1); in gfs2_inplace_reserve()
1982 if (S_ISDIR(ip->i_inode.i_mode) && (ap->aflags & GFS2_AF_ORLOV)) in gfs2_inplace_reserve()
1983 skip = gfs2_orlov_skip(ip); in gfs2_inplace_reserve()
2031 rg_mblk_search(rs->rs_rbm.rgd, ip, ap); in gfs2_inplace_reserve()
2041 ip->i_rgd = rs->rs_rbm.rgd; in gfs2_inplace_reserve()
2042 ap->allowed = ip->i_rgd->rd_free_clone; in gfs2_inplace_reserve()
2049 ip->i_no_addr); in gfs2_inplace_reserve()
2071 if (ip == GFS2_I(sdp->sd_rindex) && !sdp->sd_rindex_uptodate) { in gfs2_inplace_reserve()
2072 error = gfs2_ri_update(ip); in gfs2_inplace_reserve()
2091 void gfs2_inplace_release(struct gfs2_inode *ip) in gfs2_inplace_release() argument
2093 struct gfs2_blkreserv *rs = ip->i_res; in gfs2_inplace_release()
2244 static void gfs2_adjust_reservation(struct gfs2_inode *ip, in gfs2_adjust_reservation() argument
2247 struct gfs2_blkreserv *rs = ip->i_res; in gfs2_adjust_reservation()
2286 const struct gfs2_inode *ip, bool dinode) in gfs2_set_alloc_start() argument
2290 if (gfs2_rs_active(ip->i_res)) { in gfs2_set_alloc_start()
2291 *rbm = ip->i_res->rs_rbm; in gfs2_set_alloc_start()
2295 if (!dinode && rgrp_contains_block(rbm->rgd, ip->i_goal)) in gfs2_set_alloc_start()
2296 goal = ip->i_goal; in gfs2_set_alloc_start()
2314 int gfs2_alloc_blocks(struct gfs2_inode *ip, u64 *bn, unsigned int *nblocks, in gfs2_alloc_blocks() argument
2317 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in gfs2_alloc_blocks()
2319 struct gfs2_rbm rbm = { .rgd = ip->i_rgd, }; in gfs2_alloc_blocks()
2324 gfs2_set_alloc_start(&rbm, ip, dinode); in gfs2_alloc_blocks()
2325 error = gfs2_rbm_find(&rbm, GFS2_BLKST_FREE, NULL, ip, false, NULL); in gfs2_alloc_blocks()
2328 gfs2_set_alloc_start(&rbm, ip, dinode); in gfs2_alloc_blocks()
2336 (unsigned long long)ip->i_no_addr, error, *nblocks, in gfs2_alloc_blocks()
2345 if (gfs2_rs_active(ip->i_res)) in gfs2_alloc_blocks()
2346 gfs2_adjust_reservation(ip, &rbm, *nblocks); in gfs2_alloc_blocks()
2352 ip->i_goal = block + ndata - 1; in gfs2_alloc_blocks()
2353 error = gfs2_meta_inode_buffer(ip, &dibh); in gfs2_alloc_blocks()
2357 gfs2_trans_add_meta(ip->i_gl, dibh); in gfs2_alloc_blocks()
2359 cpu_to_be64(ip->i_goal); in gfs2_alloc_blocks()
2384 gfs2_quota_change(ip, *nblocks, ip->i_inode.i_uid, ip->i_inode.i_gid); in gfs2_alloc_blocks()
2387 trace_gfs2_block_alloc(ip, rbm.rgd, block, *nblocks, in gfs2_alloc_blocks()
2406 void __gfs2_free_blocks(struct gfs2_inode *ip, u64 bstart, u32 blen, int meta) in __gfs2_free_blocks() argument
2408 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in __gfs2_free_blocks()
2414 trace_gfs2_block_alloc(ip, rgd, bstart, blen, GFS2_BLKST_FREE); in __gfs2_free_blocks()
2422 if (meta || ip->i_depth) in __gfs2_free_blocks()
2423 gfs2_meta_wipe(ip, bstart, blen); in __gfs2_free_blocks()
2434 void gfs2_free_meta(struct gfs2_inode *ip, u64 bstart, u32 blen) in gfs2_free_meta() argument
2436 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in gfs2_free_meta()
2438 __gfs2_free_blocks(ip, bstart, blen, 1); in gfs2_free_meta()
2440 gfs2_quota_change(ip, -(s64)blen, ip->i_inode.i_uid, ip->i_inode.i_gid); in gfs2_free_meta()
2445 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_unlink_di() local
2448 u64 blkno = ip->i_no_addr; in gfs2_unlink_di()
2453 trace_gfs2_block_alloc(ip, rgd, blkno, 1, GFS2_BLKST_UNLINKED); in gfs2_unlink_di()
2484 void gfs2_free_di(struct gfs2_rgrpd *rgd, struct gfs2_inode *ip) in gfs2_free_di() argument
2486 gfs2_free_uninit_di(rgd, ip->i_no_addr); in gfs2_free_di()
2487 trace_gfs2_block_alloc(ip, rgd, ip->i_no_addr, 1, GFS2_BLKST_FREE); in gfs2_free_di()
2488 gfs2_quota_change(ip, -1, ip->i_inode.i_uid, ip->i_inode.i_gid); in gfs2_free_di()
2489 gfs2_meta_wipe(ip, ip->i_no_addr, 1); in gfs2_free_di()
2537 void gfs2_rlist_add(struct gfs2_inode *ip, struct gfs2_rgrp_list *rlist, in gfs2_rlist_add() argument
2540 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in gfs2_rlist_add()
2549 if (ip->i_rgd && rgrp_contains_block(ip->i_rgd, block)) in gfs2_rlist_add()
2550 rgd = ip->i_rgd; in gfs2_rlist_add()
2557 ip->i_rgd = rgd; in gfs2_rlist_add()