Lines Matching refs:ip

92 int gfs2_dir_get_new_buffer(struct gfs2_inode *ip, u64 block,  in gfs2_dir_get_new_buffer()  argument
97 bh = gfs2_meta_new(ip->i_gl, block); in gfs2_dir_get_new_buffer()
98 gfs2_trans_add_meta(ip->i_gl, bh); in gfs2_dir_get_new_buffer()
105 static int gfs2_dir_get_existing_buffer(struct gfs2_inode *ip, u64 block, in gfs2_dir_get_existing_buffer() argument
111 error = gfs2_meta_read(ip->i_gl, block, DIO_WAIT, &bh); in gfs2_dir_get_existing_buffer()
114 if (gfs2_metatype_check(GFS2_SB(&ip->i_inode), bh, GFS2_METATYPE_JD)) { in gfs2_dir_get_existing_buffer()
122 static int gfs2_dir_write_stuffed(struct gfs2_inode *ip, const char *buf, in gfs2_dir_write_stuffed() argument
128 error = gfs2_meta_inode_buffer(ip, &dibh); in gfs2_dir_write_stuffed()
132 gfs2_trans_add_meta(ip->i_gl, dibh); in gfs2_dir_write_stuffed()
134 if (ip->i_inode.i_size < offset + size) in gfs2_dir_write_stuffed()
135 i_size_write(&ip->i_inode, offset + size); in gfs2_dir_write_stuffed()
136 ip->i_inode.i_mtime = ip->i_inode.i_ctime = CURRENT_TIME; in gfs2_dir_write_stuffed()
137 gfs2_dinode_out(ip, dibh->b_data); in gfs2_dir_write_stuffed()
155 static int gfs2_dir_write_data(struct gfs2_inode *ip, const char *buf, in gfs2_dir_write_data() argument
158 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in gfs2_dir_write_data()
170 if (gfs2_is_stuffed(ip) && in gfs2_dir_write_data()
172 return gfs2_dir_write_stuffed(ip, buf, (unsigned int)offset, in gfs2_dir_write_data()
175 if (gfs2_assert_warn(sdp, gfs2_is_jdata(ip))) in gfs2_dir_write_data()
178 if (gfs2_is_stuffed(ip)) { in gfs2_dir_write_data()
179 error = gfs2_unstuff_dinode(ip, NULL); in gfs2_dir_write_data()
197 error = gfs2_extent_map(&ip->i_inode, lblock, &new, in gfs2_dir_write_data()
207 error = gfs2_dir_get_new_buffer(ip, dblock, &bh); in gfs2_dir_write_data()
209 error = gfs2_dir_get_existing_buffer(ip, dblock, &bh); in gfs2_dir_write_data()
214 gfs2_trans_add_meta(ip->i_gl, bh); in gfs2_dir_write_data()
228 error = gfs2_meta_inode_buffer(ip, &dibh); in gfs2_dir_write_data()
232 if (ip->i_inode.i_size < offset + copied) in gfs2_dir_write_data()
233 i_size_write(&ip->i_inode, offset + copied); in gfs2_dir_write_data()
234 ip->i_inode.i_mtime = ip->i_inode.i_ctime = CURRENT_TIME; in gfs2_dir_write_data()
236 gfs2_trans_add_meta(ip->i_gl, dibh); in gfs2_dir_write_data()
237 gfs2_dinode_out(ip, dibh->b_data); in gfs2_dir_write_data()
247 static int gfs2_dir_read_stuffed(struct gfs2_inode *ip, __be64 *buf, in gfs2_dir_read_stuffed() argument
253 error = gfs2_meta_inode_buffer(ip, &dibh); in gfs2_dir_read_stuffed()
271 static int gfs2_dir_read_data(struct gfs2_inode *ip, __be64 *buf, in gfs2_dir_read_data() argument
274 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in gfs2_dir_read_data()
281 if (gfs2_is_stuffed(ip)) in gfs2_dir_read_data()
282 return gfs2_dir_read_stuffed(ip, buf, size); in gfs2_dir_read_data()
284 if (gfs2_assert_warn(sdp, gfs2_is_jdata(ip))) in gfs2_dir_read_data()
301 error = gfs2_extent_map(&ip->i_inode, lblock, &new, in gfs2_dir_read_data()
306 bh = gfs2_meta_ra(ip->i_gl, dblock, extlen); in gfs2_dir_read_data()
308 error = gfs2_meta_read(ip->i_gl, dblock, DIO_WAIT, &bh); in gfs2_dir_read_data()
339 static __be64 *gfs2_dir_get_hash_table(struct gfs2_inode *ip) in gfs2_dir_get_hash_table() argument
341 struct inode *inode = &ip->i_inode; in gfs2_dir_get_hash_table()
346 BUG_ON(!(ip->i_diskflags & GFS2_DIF_EXHASH)); in gfs2_dir_get_hash_table()
348 hc = ip->i_hash_cache; in gfs2_dir_get_hash_table()
352 hsize = 1 << ip->i_depth; in gfs2_dir_get_hash_table()
354 if (hsize != i_size_read(&ip->i_inode)) { in gfs2_dir_get_hash_table()
355 gfs2_consist_inode(ip); in gfs2_dir_get_hash_table()
366 ret = gfs2_dir_read_data(ip, hc, hsize); in gfs2_dir_get_hash_table()
373 if (likely(!ip->i_hash_cache)) { in gfs2_dir_get_hash_table()
374 ip->i_hash_cache = hc; in gfs2_dir_get_hash_table()
380 return ip->i_hash_cache; in gfs2_dir_get_hash_table()
389 void gfs2_dir_hash_inval(struct gfs2_inode *ip) in gfs2_dir_hash_inval() argument
391 __be64 *hc = ip->i_hash_cache; in gfs2_dir_hash_inval()
392 ip->i_hash_cache = NULL; in gfs2_dir_hash_inval()
689 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_init_dirent() local
697 gfs2_trans_add_meta(ip->i_gl, bh); in gfs2_init_dirent()
771 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_dirent_search() local
774 if (ip->i_diskflags & GFS2_DIF_EXHASH) { in gfs2_dirent_search()
776 unsigned hsize = 1 << ip->i_depth; in gfs2_dirent_search()
780 gfs2_consist_inode(ip); in gfs2_dirent_search()
784 index = name->hash >> (32 - ip->i_depth); in gfs2_dirent_search()
785 error = get_first_leaf(ip, index, &bh); in gfs2_dirent_search()
799 error = get_leaf(ip, ln, &bh); in gfs2_dirent_search()
806 error = gfs2_meta_inode_buffer(ip, &bh); in gfs2_dirent_search()
821 struct gfs2_inode *ip = GFS2_I(inode); in new_leaf() local
831 error = gfs2_alloc_blocks(ip, &bn, &n, 0, NULL); in new_leaf()
834 bh = gfs2_meta_new(ip->i_gl, bn); in new_leaf()
839 gfs2_trans_add_meta(ip->i_gl, bh); in new_leaf()
846 leaf->lf_inode = cpu_to_be64(ip->i_no_addr); in new_leaf()
1297 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_dir_read_leaf() local
1311 error = get_leaf(ip, lfn, &bh); in gfs2_dir_read_leaf()
1342 error = get_leaf(ip, lfn, &bh); in gfs2_dir_read_leaf()
1372 error = do_filldir_main(ip, ctx, darr, entries, copied); in gfs2_dir_read_leaf()
1392 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_dir_readahead() local
1393 struct gfs2_glock *gl = ip->i_gl; in gfs2_dir_readahead()
1408 blocknr = be64_to_cpu(ip->i_hash_cache[f_ra->start]); in gfs2_dir_readahead()
1572 const struct gfs2_inode *ip) in gfs2_dir_check() argument
1582 if (ip) { in gfs2_dir_check()
1583 if (be64_to_cpu(dent->de_inum.no_addr) != ip->i_no_addr) in gfs2_dir_check()
1586 ip->i_no_formal_ino) in gfs2_dir_check()
1588 if (unlikely(IF2DT(ip->i_inode.i_mode) != in gfs2_dir_check()
1624 struct gfs2_inode *ip = GFS2_I(inode); in dir_new_leaf() local
1631 index = name->hash >> (32 - ip->i_depth); in dir_new_leaf()
1632 error = get_first_leaf(ip, index, &obh); in dir_new_leaf()
1642 error = get_leaf(ip, bn, &obh); in dir_new_leaf()
1647 gfs2_trans_add_meta(ip->i_gl, obh); in dir_new_leaf()
1659 error = gfs2_meta_inode_buffer(ip, &bh); in dir_new_leaf()
1662 gfs2_trans_add_meta(ip->i_gl, bh); in dir_new_leaf()
1663 gfs2_add_inode_blocks(&ip->i_inode, 1); in dir_new_leaf()
1664 gfs2_dinode_out(ip, bh->b_data); in dir_new_leaf()
1669 static u16 gfs2_inode_ra_len(const struct gfs2_inode *ip) in gfs2_inode_ra_len() argument
1671 u64 where = ip->i_no_addr + 1; in gfs2_inode_ra_len()
1672 if (ip->i_eattr == where) in gfs2_inode_ra_len()
1696 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_dir_add() local
1716 if (ip->i_diskflags & GFS2_DIF_EXHASH) { in gfs2_dir_add()
1725 ip->i_entries++; in gfs2_dir_add()
1726 ip->i_inode.i_mtime = ip->i_inode.i_ctime = tv; in gfs2_dir_add()
1728 inc_nlink(&ip->i_inode); in gfs2_dir_add()
1733 if (!(ip->i_diskflags & GFS2_DIF_EXHASH)) { in gfs2_dir_add()
1744 if (ip->i_depth < GFS2_DIR_MAX_DEPTH) { in gfs2_dir_add()
1745 error = dir_double_exhash(ip); in gfs2_dir_add()
2061 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_diradd_alloc_required() local
2074 if (!(ip->i_diskflags & GFS2_DIF_EXHASH) && in gfs2_diradd_alloc_required()