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()
995 static int gfs2_ri_update(struct gfs2_inode *ip) in gfs2_ri_update() argument
997 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in gfs2_ri_update()
1001 error = read_rindex_entry(ip); in gfs2_ri_update()
1032 struct gfs2_inode *ip = GFS2_I(sdp->sd_rindex); in gfs2_rindex_update() local
1033 struct gfs2_glock *gl = ip->i_gl; in gfs2_rindex_update()
1047 error = gfs2_ri_update(ip); in gfs2_rindex_update()
1455 static void rs_insert(struct gfs2_inode *ip) in rs_insert() argument
1459 struct gfs2_blkreserv *rs = ip->i_res; in rs_insert()
1501 static void rg_mblk_search(struct gfs2_rgrpd *rgd, struct gfs2_inode *ip, in rg_mblk_search() argument
1506 struct gfs2_blkreserv *rs = ip->i_res; in rg_mblk_search()
1510 struct inode *inode = &ip->i_inode; in rg_mblk_search()
1522 if (rgrp_contains_block(rgd, ip->i_goal)) in rg_mblk_search()
1523 goal = ip->i_goal; in rg_mblk_search()
1530 ret = gfs2_rbm_find(&rbm, GFS2_BLKST_FREE, &extlen, ip, true, ap); in rg_mblk_search()
1534 rs->rs_inum = ip->i_no_addr; in rg_mblk_search()
1535 rs_insert(ip); in rg_mblk_search()
1557 const struct gfs2_inode *ip) in gfs2_next_unreserved_block() argument
1577 while ((rs_cmp(block, length, rs) == 0) && (ip->i_res != rs)) { in gfs2_next_unreserved_block()
1607 const struct gfs2_inode *ip, in gfs2_reservation_check_and_update() argument
1630 nblock = gfs2_next_unreserved_block(rbm->rgd, block, extlen, ip); in gfs2_reservation_check_and_update()
1669 const struct gfs2_inode *ip, bool nowrap, in gfs2_rbm_find() argument
1708 if (ip == NULL) in gfs2_rbm_find()
1712 ret = gfs2_reservation_check_and_update(rbm, ip, in gfs2_rbm_find()
1783 struct gfs2_inode *ip; in try_rgrp_unlink() local
1818 ip = gl->gl_object; in try_rgrp_unlink()
1820 if (ip || queue_work(gfs2_delete_workqueue, &gl->gl_delete) == 0) in try_rgrp_unlink()
1925 static u32 gfs2_orlov_skip(const struct gfs2_inode *ip) in gfs2_orlov_skip() argument
1927 const struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in gfs2_orlov_skip()
1983 int gfs2_inplace_reserve(struct gfs2_inode *ip, struct gfs2_alloc_parms *ap) in gfs2_inplace_reserve() argument
1985 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in gfs2_inplace_reserve()
1987 struct gfs2_blkreserv *rs = ip->i_res; in gfs2_inplace_reserve()
1999 } else if (ip->i_rgd && rgrp_contains_block(ip->i_rgd, ip->i_goal)) { in gfs2_inplace_reserve()
2000 rs->rs_rbm.rgd = begin = ip->i_rgd; in gfs2_inplace_reserve()
2002 check_and_update_goal(ip); in gfs2_inplace_reserve()
2003 rs->rs_rbm.rgd = begin = gfs2_blk2rgrpd(sdp, ip->i_goal, 1); in gfs2_inplace_reserve()
2005 if (S_ISDIR(ip->i_inode.i_mode) && (ap->aflags & GFS2_AF_ORLOV)) in gfs2_inplace_reserve()
2006 skip = gfs2_orlov_skip(ip); in gfs2_inplace_reserve()
2054 rg_mblk_search(rs->rs_rbm.rgd, ip, ap); in gfs2_inplace_reserve()
2064 ip->i_rgd = rs->rs_rbm.rgd; in gfs2_inplace_reserve()
2065 ap->allowed = ip->i_rgd->rd_free_clone; in gfs2_inplace_reserve()
2072 ip->i_no_addr); in gfs2_inplace_reserve()
2094 if (ip == GFS2_I(sdp->sd_rindex) && !sdp->sd_rindex_uptodate) { in gfs2_inplace_reserve()
2095 error = gfs2_ri_update(ip); in gfs2_inplace_reserve()
2114 void gfs2_inplace_release(struct gfs2_inode *ip) in gfs2_inplace_release() argument
2116 struct gfs2_blkreserv *rs = ip->i_res; in gfs2_inplace_release()
2267 static void gfs2_adjust_reservation(struct gfs2_inode *ip, in gfs2_adjust_reservation() argument
2270 struct gfs2_blkreserv *rs = ip->i_res; in gfs2_adjust_reservation()
2309 const struct gfs2_inode *ip, bool dinode) in gfs2_set_alloc_start() argument
2313 if (gfs2_rs_active(ip->i_res)) { in gfs2_set_alloc_start()
2314 *rbm = ip->i_res->rs_rbm; in gfs2_set_alloc_start()
2318 if (!dinode && rgrp_contains_block(rbm->rgd, ip->i_goal)) in gfs2_set_alloc_start()
2319 goal = ip->i_goal; in gfs2_set_alloc_start()
2337 int gfs2_alloc_blocks(struct gfs2_inode *ip, u64 *bn, unsigned int *nblocks, in gfs2_alloc_blocks() argument
2340 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in gfs2_alloc_blocks()
2342 struct gfs2_rbm rbm = { .rgd = ip->i_rgd, }; in gfs2_alloc_blocks()
2347 gfs2_set_alloc_start(&rbm, ip, dinode); in gfs2_alloc_blocks()
2348 error = gfs2_rbm_find(&rbm, GFS2_BLKST_FREE, NULL, ip, false, NULL); in gfs2_alloc_blocks()
2351 gfs2_set_alloc_start(&rbm, ip, dinode); in gfs2_alloc_blocks()
2359 (unsigned long long)ip->i_no_addr, error, *nblocks, in gfs2_alloc_blocks()
2368 if (gfs2_rs_active(ip->i_res)) in gfs2_alloc_blocks()
2369 gfs2_adjust_reservation(ip, &rbm, *nblocks); in gfs2_alloc_blocks()
2375 ip->i_goal = block + ndata - 1; in gfs2_alloc_blocks()
2376 error = gfs2_meta_inode_buffer(ip, &dibh); in gfs2_alloc_blocks()
2380 gfs2_trans_add_meta(ip->i_gl, dibh); in gfs2_alloc_blocks()
2382 cpu_to_be64(ip->i_goal); in gfs2_alloc_blocks()
2407 gfs2_quota_change(ip, *nblocks, ip->i_inode.i_uid, ip->i_inode.i_gid); in gfs2_alloc_blocks()
2410 trace_gfs2_block_alloc(ip, rbm.rgd, block, *nblocks, in gfs2_alloc_blocks()
2429 void __gfs2_free_blocks(struct gfs2_inode *ip, u64 bstart, u32 blen, int meta) in __gfs2_free_blocks() argument
2431 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in __gfs2_free_blocks()
2437 trace_gfs2_block_alloc(ip, rgd, bstart, blen, GFS2_BLKST_FREE); in __gfs2_free_blocks()
2445 if (meta || ip->i_depth) in __gfs2_free_blocks()
2446 gfs2_meta_wipe(ip, bstart, blen); in __gfs2_free_blocks()
2457 void gfs2_free_meta(struct gfs2_inode *ip, u64 bstart, u32 blen) in gfs2_free_meta() argument
2459 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in gfs2_free_meta()
2461 __gfs2_free_blocks(ip, bstart, blen, 1); in gfs2_free_meta()
2463 gfs2_quota_change(ip, -(s64)blen, ip->i_inode.i_uid, ip->i_inode.i_gid); in gfs2_free_meta()
2468 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_unlink_di() local
2471 u64 blkno = ip->i_no_addr; in gfs2_unlink_di()
2476 trace_gfs2_block_alloc(ip, rgd, blkno, 1, GFS2_BLKST_UNLINKED); in gfs2_unlink_di()
2507 void gfs2_free_di(struct gfs2_rgrpd *rgd, struct gfs2_inode *ip) in gfs2_free_di() argument
2509 gfs2_free_uninit_di(rgd, ip->i_no_addr); in gfs2_free_di()
2510 trace_gfs2_block_alloc(ip, rgd, ip->i_no_addr, 1, GFS2_BLKST_FREE); in gfs2_free_di()
2511 gfs2_quota_change(ip, -1, ip->i_inode.i_uid, ip->i_inode.i_gid); in gfs2_free_di()
2512 gfs2_meta_wipe(ip, ip->i_no_addr, 1); in gfs2_free_di()
2560 void gfs2_rlist_add(struct gfs2_inode *ip, struct gfs2_rgrp_list *rlist, in gfs2_rlist_add() argument
2563 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in gfs2_rlist_add()
2572 if (ip->i_rgd && rgrp_contains_block(ip->i_rgd, block)) in gfs2_rlist_add()
2573 rgd = ip->i_rgd; in gfs2_rlist_add()
2580 ip->i_rgd = rgd; in gfs2_rlist_add()