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
393 spin_lock(&ip->i_inode.i_lock); in gfs2_dir_hash_inval()
394 hc = ip->i_hash_cache; in gfs2_dir_hash_inval()
395 ip->i_hash_cache = NULL; in gfs2_dir_hash_inval()
396 spin_unlock(&ip->i_inode.i_lock); in gfs2_dir_hash_inval()
694 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_init_dirent() local
702 gfs2_trans_add_meta(ip->i_gl, bh); in gfs2_init_dirent()
776 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_dirent_search() local
779 if (ip->i_diskflags & GFS2_DIF_EXHASH) { in gfs2_dirent_search()
781 unsigned hsize = 1 << ip->i_depth; in gfs2_dirent_search()
785 gfs2_consist_inode(ip); in gfs2_dirent_search()
789 index = name->hash >> (32 - ip->i_depth); in gfs2_dirent_search()
790 error = get_first_leaf(ip, index, &bh); in gfs2_dirent_search()
804 error = get_leaf(ip, ln, &bh); in gfs2_dirent_search()
811 error = gfs2_meta_inode_buffer(ip, &bh); in gfs2_dirent_search()
826 struct gfs2_inode *ip = GFS2_I(inode); in new_leaf() local
836 error = gfs2_alloc_blocks(ip, &bn, &n, 0, NULL); in new_leaf()
839 bh = gfs2_meta_new(ip->i_gl, bn); in new_leaf()
844 gfs2_trans_add_meta(ip->i_gl, bh); in new_leaf()
851 leaf->lf_inode = cpu_to_be64(ip->i_no_addr); in new_leaf()
1302 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_dir_read_leaf() local
1316 error = get_leaf(ip, lfn, &bh); in gfs2_dir_read_leaf()
1347 error = get_leaf(ip, lfn, &bh); in gfs2_dir_read_leaf()
1377 error = do_filldir_main(ip, ctx, darr, entries, copied); in gfs2_dir_read_leaf()
1397 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_dir_readahead() local
1398 struct gfs2_glock *gl = ip->i_gl; in gfs2_dir_readahead()
1413 blocknr = be64_to_cpu(ip->i_hash_cache[f_ra->start]); in gfs2_dir_readahead()
1577 const struct gfs2_inode *ip) in gfs2_dir_check() argument
1587 if (ip) { in gfs2_dir_check()
1588 if (be64_to_cpu(dent->de_inum.no_addr) != ip->i_no_addr) in gfs2_dir_check()
1591 ip->i_no_formal_ino) in gfs2_dir_check()
1593 if (unlikely(IF2DT(ip->i_inode.i_mode) != in gfs2_dir_check()
1629 struct gfs2_inode *ip = GFS2_I(inode); in dir_new_leaf() local
1636 index = name->hash >> (32 - ip->i_depth); in dir_new_leaf()
1637 error = get_first_leaf(ip, index, &obh); in dir_new_leaf()
1647 error = get_leaf(ip, bn, &obh); in dir_new_leaf()
1652 gfs2_trans_add_meta(ip->i_gl, obh); in dir_new_leaf()
1664 error = gfs2_meta_inode_buffer(ip, &bh); in dir_new_leaf()
1667 gfs2_trans_add_meta(ip->i_gl, bh); in dir_new_leaf()
1668 gfs2_add_inode_blocks(&ip->i_inode, 1); in dir_new_leaf()
1669 gfs2_dinode_out(ip, bh->b_data); in dir_new_leaf()
1674 static u16 gfs2_inode_ra_len(const struct gfs2_inode *ip) in gfs2_inode_ra_len() argument
1676 u64 where = ip->i_no_addr + 1; in gfs2_inode_ra_len()
1677 if (ip->i_eattr == where) in gfs2_inode_ra_len()
1701 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_dir_add() local
1721 if (ip->i_diskflags & GFS2_DIF_EXHASH) { in gfs2_dir_add()
1730 ip->i_entries++; in gfs2_dir_add()
1731 ip->i_inode.i_mtime = ip->i_inode.i_ctime = tv; in gfs2_dir_add()
1733 inc_nlink(&ip->i_inode); in gfs2_dir_add()
1738 if (!(ip->i_diskflags & GFS2_DIF_EXHASH)) { in gfs2_dir_add()
1749 if (ip->i_depth < GFS2_DIR_MAX_DEPTH) { in gfs2_dir_add()
1750 error = dir_double_exhash(ip); in gfs2_dir_add()
2066 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_diradd_alloc_required() local
2079 if (!(ip->i_diskflags & GFS2_DIF_EXHASH) && in gfs2_diradd_alloc_required()