• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/fs/gfs2/

Lines Matching defs:dip

39  * dip->i_diskflags & GFS2_DIF_EXHASH is true
82 typedef int (*leaf_call_t) (struct gfs2_inode *dip, u32 index, u32 len,
528 static int dirent_check_reclen(struct gfs2_inode *dip,
542 gfs2_consist_inode(dip);
548 * @dip: the directory
555 static int dirent_next(struct gfs2_inode *dip, struct buffer_head *bh,
562 ret = dirent_check_reclen(dip, cur, bh_end);
567 ret = dirent_check_reclen(dip, tmp, bh_end);
573 gfs2_consist_inode(dip);
583 * @dip: The GFS2 inode
590 static void dirent_del(struct gfs2_inode *dip, struct buffer_head *bh,
596 gfs2_consist_inode(dip);
600 gfs2_trans_add_bh(dip->i_gl, bh, 1);
618 gfs2_consist_inode(dip);
620 gfs2_consist_inode(dip);
662 static int get_leaf(struct gfs2_inode *dip, u64 leaf_no,
667 error = gfs2_meta_read(dip->i_gl, leaf_no, DIO_WAIT, bhp);
668 if (!error && gfs2_metatype_check(GFS2_SB(&dip->i_inode), *bhp, GFS2_METATYPE_LF)) {
678 * @dip: The GFS2 inode
685 static int get_leaf_nr(struct gfs2_inode *dip, u32 index,
691 error = gfs2_dir_read_data(dip, (char *)&leaf_no,
702 static int get_first_leaf(struct gfs2_inode *dip, u32 index,
708 error = get_leaf_nr(dip, index, &leaf_no);
710 error = get_leaf(dip, leaf_no, bh_out);
805 * @dip: The GFS2 inode
812 struct gfs2_inode *dip = GFS2_I(inode);
824 error = gfs2_meta_inode_buffer(dip, &dibh);
835 gfs2_assert(sdp, dip->i_entries < (1 << 16));
836 leaf->lf_entries = cpu_to_be16(dip->i_entries);
849 dent = gfs2_dirent_scan(&dip->i_inode, bh->b_data, bh->b_size,
874 gfs2_trans_add_bh(dip->i_gl, dibh, 1);
882 dip->i_disksize = sdp->sd_sb.sb_bsize / 2;
883 gfs2_add_inode_blocks(&dip->i_inode, 1);
884 dip->i_diskflags |= GFS2_DIF_EXHASH;
887 dip->i_depth = y;
889 gfs2_dinode_out(dip, dibh->b_data);
898 * @dip: The GFS2 inode
907 struct gfs2_inode *dip = GFS2_I(inode);
918 index = name->hash >> (32 - dip->i_depth);
919 error = get_leaf_nr(dip, index, &leaf_no);
924 error = get_leaf(dip, leaf_no, &obh);
929 if (dip->i_depth == be16_to_cpu(oleaf->lf_depth)) {
934 gfs2_trans_add_bh(dip->i_gl, obh, 1);
944 len = 1 << (dip->i_depth - be16_to_cpu(oleaf->lf_depth));
947 printk(KERN_WARNING "i_depth %u lf_depth %u index %u\n", dip->i_depth, be16_to_cpu(oleaf->lf_depth), index);
948 gfs2_consist_inode(dip);
968 error = gfs2_dir_write_data(dip, (char *)lp, start * sizeof(u64),
979 divider = (start + half_len) << (32 - dip->i_depth);
986 if (dirent_next(dip, obh, &next))
1005 dirent_del(dip, obh, prev, dent);
1008 gfs2_consist_inode(dip);
1023 error = gfs2_meta_inode_buffer(dip, &dibh);
1024 if (!gfs2_assert_withdraw(GFS2_SB(&dip->i_inode), !error)) {
1025 gfs2_trans_add_bh(dip->i_gl, dibh, 1);
1026 gfs2_add_inode_blocks(&dip->i_inode, 1);
1027 gfs2_dinode_out(dip, dibh->b_data);
1047 * @dip: The GFS2 dinode
1052 static int dir_double_exhash(struct gfs2_inode *dip)
1054 struct gfs2_sbd *sdp = GFS2_SB(&dip->i_inode);
1063 hsize = 1 << dip->i_depth;
1064 if (hsize * sizeof(u64) != dip->i_disksize) {
1065 gfs2_consist_inode(dip);
1075 for (block = dip->i_disksize >> sdp->sd_hash_bsize_shift; block--;) {
1076 error = gfs2_dir_read_data(dip, (char *)buf,
1093 error = gfs2_dir_write_data(dip,
1106 error = gfs2_meta_inode_buffer(dip, &dibh);
1108 dip->i_depth++;
1109 gfs2_dinode_out(dip, dibh->b_data);
1164 * @dip: The GFS2 inode
1180 static int do_filldir_main(struct gfs2_inode *dip, u64 *offset,
1351 * @dip: dinode pointer
1362 struct gfs2_inode *dip = GFS2_I(inode);
1372 hsize = 1 << dip->i_depth;
1373 if (hsize * sizeof(u64) != dip->i_disksize) {
1374 gfs2_consist_inode(dip);
1379 index = hash >> (32 - dip->i_depth);
1390 error = gfs2_dir_read_data(dip, (char *)lp,
1407 len = 1 << (dip->i_depth - depth);
1421 struct gfs2_inode *dip = GFS2_I(inode);
1429 if (!dip->i_entries)
1432 if (dip->i_diskflags & GFS2_DIF_EXHASH)
1435 if (!gfs2_is_stuffed(dip)) {
1436 gfs2_consist_inode(dip);
1440 error = gfs2_meta_inode_buffer(dip, &dibh);
1456 if (dip->i_entries != g.offset) {
1459 (unsigned long long)dip->i_no_addr,
1460 dip->i_entries,
1465 error = do_filldir_main(dip, offset, opaque, filldir, darr,
1466 dip->i_entries, &copied);
1481 * @dip: The GFS2 inode
1486 * Assumes a glock is held on dip.
1589 * @dip: The GFS2 inode
1664 * @dip: The GFS2 inode
1670 int gfs2_dir_del(struct gfs2_inode *dip, const struct qstr *name)
1678 dent = gfs2_dirent_search(&dip->i_inode, name, gfs2_dirent_prev, &bh);
1680 gfs2_consist_inode(dip);
1684 gfs2_consist_inode(dip);
1693 dirent_del(dip, bh, prev, dent);
1694 if (dip->i_diskflags & GFS2_DIF_EXHASH) {
1698 gfs2_consist_inode(dip);
1703 error = gfs2_meta_inode_buffer(dip, &bh);
1707 if (!dip->i_entries)
1708 gfs2_consist_inode(dip);
1709 gfs2_trans_add_bh(dip->i_gl, bh, 1);
1710 dip->i_entries--;
1711 dip->i_inode.i_mtime = dip->i_inode.i_ctime = CURRENT_TIME;
1712 gfs2_dinode_out(dip, bh->b_data);
1714 mark_inode_dirty(&dip->i_inode);
1721 * @dip: The GFS2 inode
1732 int gfs2_dir_mvino(struct gfs2_inode *dip, const struct qstr *filename,
1739 dent = gfs2_dirent_search(&dip->i_inode, filename, gfs2_dirent_find, &bh);
1741 gfs2_consist_inode(dip);
1747 gfs2_trans_add_bh(dip->i_gl, bh, 1);
1751 if (dip->i_diskflags & GFS2_DIF_EXHASH) {
1753 error = gfs2_meta_inode_buffer(dip, &bh);
1756 gfs2_trans_add_bh(dip->i_gl, bh, 1);
1759 dip->i_inode.i_mtime = dip->i_inode.i_ctime = CURRENT_TIME;
1760 gfs2_dinode_out(dip, bh->b_data);
1767 * @dip: the directory
1774 static int foreach_leaf(struct gfs2_inode *dip, leaf_call_t lc, void *data)
1776 struct gfs2_sbd *sdp = GFS2_SB(&dip->i_inode);
1786 hsize = 1 << dip->i_depth;
1787 if (hsize * sizeof(u64) != dip->i_disksize) {
1788 gfs2_consist_inode(dip);
1801 error = gfs2_dir_read_data(dip, (char *)lp,
1814 error = get_leaf(dip, leaf_no, &bh);
1818 len = 1 << (dip->i_depth - be16_to_cpu(leaf->lf_depth));
1821 error = lc(dip, index, len, leaf_no, data);
1831 gfs2_consist_inode(dip);
1843 * @dip: the directory
1852 static int leaf_dealloc(struct gfs2_inode *dip, u32 index, u32 len,
1855 struct gfs2_sbd *sdp = GFS2_SB(&dip->i_inode);
1871 if (!gfs2_alloc_get(dip)) {
1876 error = gfs2_quota_hold(dip, NO_QUOTA_CHANGE, NO_QUOTA_CHANGE);
1880 error = gfs2_rindex_hold(sdp, &dip->i_alloc->al_ri_gh);
1887 error = get_leaf(dip, blk, &bh);
1917 error = get_leaf(dip, blk, &bh);
1924 gfs2_free_meta(dip, blk, 1);
1925 gfs2_add_inode_blocks(&dip->i_inode, -1);
1928 error = gfs2_dir_write_data(dip, ht, index * sizeof(u64), size);
1935 error = gfs2_meta_inode_buffer(dip, &dibh);
1939 gfs2_trans_add_bh(dip->i_gl, dibh, 1);
1940 gfs2_dinode_out(dip, dibh->b_data);
1949 gfs2_glock_dq_uninit(&dip->i_alloc->al_ri_gh);
1951 gfs2_quota_unhold(dip);
1953 gfs2_alloc_put(dip);
1961 * @dip: the directory
1969 int gfs2_dir_exhash_dealloc(struct gfs2_inode *dip)
1971 struct gfs2_sbd *sdp = GFS2_SB(&dip->i_inode);
1976 error = foreach_leaf(dip, leaf_dealloc, NULL);
1987 error = gfs2_meta_inode_buffer(dip, &bh);
1989 gfs2_trans_add_bh(dip->i_gl, bh, 1);