Lines Matching refs:ip

89 int gfs2_dir_get_new_buffer(struct gfs2_inode *ip, u64 block,  in gfs2_dir_get_new_buffer()  argument
94 bh = gfs2_meta_new(ip->i_gl, block); in gfs2_dir_get_new_buffer()
95 gfs2_trans_add_meta(ip->i_gl, bh); in gfs2_dir_get_new_buffer()
102 static int gfs2_dir_get_existing_buffer(struct gfs2_inode *ip, u64 block, in gfs2_dir_get_existing_buffer() argument
108 error = gfs2_meta_read(ip->i_gl, block, DIO_WAIT, 0, &bh); in gfs2_dir_get_existing_buffer()
111 if (gfs2_metatype_check(GFS2_SB(&ip->i_inode), bh, GFS2_METATYPE_JD)) { in gfs2_dir_get_existing_buffer()
119 static int gfs2_dir_write_stuffed(struct gfs2_inode *ip, const char *buf, in gfs2_dir_write_stuffed() argument
125 error = gfs2_meta_inode_buffer(ip, &dibh); in gfs2_dir_write_stuffed()
129 gfs2_trans_add_meta(ip->i_gl, dibh); in gfs2_dir_write_stuffed()
131 if (ip->i_inode.i_size < offset + size) in gfs2_dir_write_stuffed()
132 i_size_write(&ip->i_inode, offset + size); in gfs2_dir_write_stuffed()
133 ip->i_inode.i_mtime = inode_set_ctime_current(&ip->i_inode); in gfs2_dir_write_stuffed()
134 gfs2_dinode_out(ip, dibh->b_data); in gfs2_dir_write_stuffed()
152 static int gfs2_dir_write_data(struct gfs2_inode *ip, const char *buf, in gfs2_dir_write_data() argument
155 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in gfs2_dir_write_data()
167 if (gfs2_is_stuffed(ip) && offset + size <= gfs2_max_stuffed_size(ip)) in gfs2_dir_write_data()
168 return gfs2_dir_write_stuffed(ip, buf, (unsigned int)offset, in gfs2_dir_write_data()
171 if (gfs2_assert_warn(sdp, gfs2_is_jdata(ip))) in gfs2_dir_write_data()
174 if (gfs2_is_stuffed(ip)) { in gfs2_dir_write_data()
175 error = gfs2_unstuff_dinode(ip); in gfs2_dir_write_data()
193 error = gfs2_alloc_extent(&ip->i_inode, lblock, &dblock, in gfs2_dir_write_data()
203 error = gfs2_dir_get_new_buffer(ip, dblock, &bh); in gfs2_dir_write_data()
205 error = gfs2_dir_get_existing_buffer(ip, dblock, &bh); in gfs2_dir_write_data()
210 gfs2_trans_add_meta(ip->i_gl, bh); in gfs2_dir_write_data()
224 error = gfs2_meta_inode_buffer(ip, &dibh); in gfs2_dir_write_data()
228 if (ip->i_inode.i_size < offset + copied) in gfs2_dir_write_data()
229 i_size_write(&ip->i_inode, offset + copied); in gfs2_dir_write_data()
230 ip->i_inode.i_mtime = inode_set_ctime_current(&ip->i_inode); in gfs2_dir_write_data()
232 gfs2_trans_add_meta(ip->i_gl, dibh); in gfs2_dir_write_data()
233 gfs2_dinode_out(ip, dibh->b_data); in gfs2_dir_write_data()
243 static int gfs2_dir_read_stuffed(struct gfs2_inode *ip, __be64 *buf, in gfs2_dir_read_stuffed() argument
249 error = gfs2_meta_inode_buffer(ip, &dibh); in gfs2_dir_read_stuffed()
267 static int gfs2_dir_read_data(struct gfs2_inode *ip, __be64 *buf, in gfs2_dir_read_data() argument
270 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in gfs2_dir_read_data()
277 if (gfs2_is_stuffed(ip)) in gfs2_dir_read_data()
278 return gfs2_dir_read_stuffed(ip, buf, size); in gfs2_dir_read_data()
280 if (gfs2_assert_warn(sdp, gfs2_is_jdata(ip))) in gfs2_dir_read_data()
296 error = gfs2_get_extent(&ip->i_inode, lblock, in gfs2_dir_read_data()
301 bh = gfs2_meta_ra(ip->i_gl, dblock, extlen); in gfs2_dir_read_data()
303 error = gfs2_meta_read(ip->i_gl, dblock, DIO_WAIT, 0, &bh); in gfs2_dir_read_data()
334 static __be64 *gfs2_dir_get_hash_table(struct gfs2_inode *ip) in gfs2_dir_get_hash_table() argument
336 struct inode *inode = &ip->i_inode; in gfs2_dir_get_hash_table()
341 BUG_ON(!(ip->i_diskflags & GFS2_DIF_EXHASH)); in gfs2_dir_get_hash_table()
343 hc = ip->i_hash_cache; in gfs2_dir_get_hash_table()
347 hsize = BIT(ip->i_depth); in gfs2_dir_get_hash_table()
349 if (hsize != i_size_read(&ip->i_inode)) { in gfs2_dir_get_hash_table()
350 gfs2_consist_inode(ip); in gfs2_dir_get_hash_table()
361 ret = gfs2_dir_read_data(ip, hc, hsize); in gfs2_dir_get_hash_table()
368 if (likely(!ip->i_hash_cache)) { in gfs2_dir_get_hash_table()
369 ip->i_hash_cache = hc; in gfs2_dir_get_hash_table()
375 return ip->i_hash_cache; in gfs2_dir_get_hash_table()
384 void gfs2_dir_hash_inval(struct gfs2_inode *ip) in gfs2_dir_hash_inval() argument
388 spin_lock(&ip->i_inode.i_lock); in gfs2_dir_hash_inval()
389 hc = ip->i_hash_cache; in gfs2_dir_hash_inval()
390 ip->i_hash_cache = NULL; in gfs2_dir_hash_inval()
391 spin_unlock(&ip->i_inode.i_lock); in gfs2_dir_hash_inval()
711 struct gfs2_inode *ip = GFS2_I(inode); in do_init_dirent() local
717 gfs2_trans_add_meta(ip->i_gl, bh); in do_init_dirent()
812 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_dirent_search() local
815 if (ip->i_diskflags & GFS2_DIF_EXHASH) { in gfs2_dirent_search()
817 unsigned int hsize = BIT(ip->i_depth); in gfs2_dirent_search()
821 gfs2_consist_inode(ip); in gfs2_dirent_search()
825 index = name->hash >> (32 - ip->i_depth); in gfs2_dirent_search()
826 error = get_first_leaf(ip, index, &bh); in gfs2_dirent_search()
840 error = get_leaf(ip, ln, &bh); in gfs2_dirent_search()
847 error = gfs2_meta_inode_buffer(ip, &bh); in gfs2_dirent_search()
862 struct gfs2_inode *ip = GFS2_I(inode); in new_leaf() local
871 error = gfs2_alloc_blocks(ip, &bn, &n, 0); in new_leaf()
874 bh = gfs2_meta_new(ip->i_gl, bn); in new_leaf()
879 gfs2_trans_add_meta(ip->i_gl, bh); in new_leaf()
886 leaf->lf_inode = cpu_to_be64(ip->i_no_addr); in new_leaf()
1370 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_dir_read_leaf() local
1383 error = get_leaf(ip, lfn, &bh); in gfs2_dir_read_leaf()
1419 error = get_leaf(ip, lfn, &bh); in gfs2_dir_read_leaf()
1438 gfs2_consist_inode(ip); in gfs2_dir_read_leaf()
1457 error = do_filldir_main(ip, ctx, darr, entries, need_sort ? in gfs2_dir_read_leaf()
1482 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_dir_readahead() local
1483 struct gfs2_glock *gl = ip->i_gl; in gfs2_dir_readahead()
1498 blocknr = be64_to_cpu(ip->i_hash_cache[f_ra->start]); in gfs2_dir_readahead()
1674 const struct gfs2_inode *ip) in gfs2_dir_check() argument
1684 if (ip) { in gfs2_dir_check()
1685 if (be64_to_cpu(dent->de_inum.no_addr) != ip->i_no_addr) in gfs2_dir_check()
1688 ip->i_no_formal_ino) in gfs2_dir_check()
1690 if (unlikely(IF2DT(ip->i_inode.i_mode) != in gfs2_dir_check()
1726 struct gfs2_inode *ip = GFS2_I(inode); in dir_new_leaf() local
1733 index = name->hash >> (32 - ip->i_depth); in dir_new_leaf()
1734 error = get_first_leaf(ip, index, &obh); in dir_new_leaf()
1744 error = get_leaf(ip, bn, &obh); in dir_new_leaf()
1749 gfs2_trans_add_meta(ip->i_gl, obh); in dir_new_leaf()
1761 error = gfs2_meta_inode_buffer(ip, &bh); in dir_new_leaf()
1764 gfs2_trans_add_meta(ip->i_gl, bh); in dir_new_leaf()
1765 gfs2_add_inode_blocks(&ip->i_inode, 1); in dir_new_leaf()
1766 gfs2_dinode_out(ip, bh->b_data); in dir_new_leaf()
1771 static u16 gfs2_inode_ra_len(const struct gfs2_inode *ip) in gfs2_inode_ra_len() argument
1773 u64 where = ip->i_no_addr + 1; in gfs2_inode_ra_len()
1774 if (ip->i_eattr == where) in gfs2_inode_ra_len()
1798 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_dir_add() local
1817 tv = inode_set_ctime_current(&ip->i_inode); in gfs2_dir_add()
1818 if (ip->i_diskflags & GFS2_DIF_EXHASH) { in gfs2_dir_add()
1827 ip->i_entries++; in gfs2_dir_add()
1828 ip->i_inode.i_mtime = tv; in gfs2_dir_add()
1830 inc_nlink(&ip->i_inode); in gfs2_dir_add()
1835 if (!(ip->i_diskflags & GFS2_DIF_EXHASH)) { in gfs2_dir_add()
1846 if (ip->i_depth < GFS2_DIR_MAX_DEPTH) { in gfs2_dir_add()
1847 error = dir_double_exhash(ip); in gfs2_dir_add()
2159 struct gfs2_inode *ip = GFS2_I(inode); in gfs2_diradd_alloc_required() local
2172 if (!(ip->i_diskflags & GFS2_DIF_EXHASH) && in gfs2_diradd_alloc_required()