diff options
Diffstat (limited to 'fs/gfs2/dir.c')
-rw-r--r-- | fs/gfs2/dir.c | 62 |
1 files changed, 31 insertions, 31 deletions
diff --git a/fs/gfs2/dir.c b/fs/gfs2/dir.c index eed040d8ba3a..b7c8e5c70791 100644 --- a/fs/gfs2/dir.c +++ b/fs/gfs2/dir.c | |||
@@ -36,7 +36,7 @@ | |||
36 | * the block. In leaves, they begin at offset sizeof(struct gfs2_leaf) from the | 36 | * the block. In leaves, they begin at offset sizeof(struct gfs2_leaf) from the |
37 | * beginning of the leaf block. The dirents reside in leaves when | 37 | * beginning of the leaf block. The dirents reside in leaves when |
38 | * | 38 | * |
39 | * dip->i_di.di_flags & GFS2_DIF_EXHASH is true | 39 | * dip->i_diskflags & GFS2_DIF_EXHASH is true |
40 | * | 40 | * |
41 | * Otherwise, the dirents are "linear", within a single stuffed dinode block. | 41 | * Otherwise, the dirents are "linear", within a single stuffed dinode block. |
42 | * | 42 | * |
@@ -128,8 +128,8 @@ static int gfs2_dir_write_stuffed(struct gfs2_inode *ip, const char *buf, | |||
128 | 128 | ||
129 | gfs2_trans_add_bh(ip->i_gl, dibh, 1); | 129 | gfs2_trans_add_bh(ip->i_gl, dibh, 1); |
130 | memcpy(dibh->b_data + offset + sizeof(struct gfs2_dinode), buf, size); | 130 | memcpy(dibh->b_data + offset + sizeof(struct gfs2_dinode), buf, size); |
131 | if (ip->i_di.di_size < offset + size) | 131 | if (ip->i_disksize < offset + size) |
132 | ip->i_di.di_size = offset + size; | 132 | ip->i_disksize = offset + size; |
133 | ip->i_inode.i_mtime = ip->i_inode.i_ctime = CURRENT_TIME; | 133 | ip->i_inode.i_mtime = ip->i_inode.i_ctime = CURRENT_TIME; |
134 | gfs2_dinode_out(ip, dibh->b_data); | 134 | gfs2_dinode_out(ip, dibh->b_data); |
135 | 135 | ||
@@ -226,8 +226,8 @@ out: | |||
226 | if (error) | 226 | if (error) |
227 | return error; | 227 | return error; |
228 | 228 | ||
229 | if (ip->i_di.di_size < offset + copied) | 229 | if (ip->i_disksize < offset + copied) |
230 | ip->i_di.di_size = offset + copied; | 230 | ip->i_disksize = offset + copied; |
231 | ip->i_inode.i_mtime = ip->i_inode.i_ctime = CURRENT_TIME; | 231 | ip->i_inode.i_mtime = ip->i_inode.i_ctime = CURRENT_TIME; |
232 | 232 | ||
233 | gfs2_trans_add_bh(ip->i_gl, dibh, 1); | 233 | gfs2_trans_add_bh(ip->i_gl, dibh, 1); |
@@ -277,11 +277,11 @@ static int gfs2_dir_read_data(struct gfs2_inode *ip, char *buf, u64 offset, | |||
277 | int copied = 0; | 277 | int copied = 0; |
278 | int error = 0; | 278 | int error = 0; |
279 | 279 | ||
280 | if (offset >= ip->i_di.di_size) | 280 | if (offset >= ip->i_disksize) |
281 | return 0; | 281 | return 0; |
282 | 282 | ||
283 | if (offset + size > ip->i_di.di_size) | 283 | if (offset + size > ip->i_disksize) |
284 | size = ip->i_di.di_size - offset; | 284 | size = ip->i_disksize - offset; |
285 | 285 | ||
286 | if (!size) | 286 | if (!size) |
287 | return 0; | 287 | return 0; |
@@ -755,12 +755,12 @@ static struct gfs2_dirent *gfs2_dirent_search(struct inode *inode, | |||
755 | struct gfs2_inode *ip = GFS2_I(inode); | 755 | struct gfs2_inode *ip = GFS2_I(inode); |
756 | int error; | 756 | int error; |
757 | 757 | ||
758 | if (ip->i_di.di_flags & GFS2_DIF_EXHASH) { | 758 | if (ip->i_diskflags & GFS2_DIF_EXHASH) { |
759 | struct gfs2_leaf *leaf; | 759 | struct gfs2_leaf *leaf; |
760 | unsigned hsize = 1 << ip->i_depth; | 760 | unsigned hsize = 1 << ip->i_depth; |
761 | unsigned index; | 761 | unsigned index; |
762 | u64 ln; | 762 | u64 ln; |
763 | if (hsize * sizeof(u64) != ip->i_di.di_size) { | 763 | if (hsize * sizeof(u64) != ip->i_disksize) { |
764 | gfs2_consist_inode(ip); | 764 | gfs2_consist_inode(ip); |
765 | return ERR_PTR(-EIO); | 765 | return ERR_PTR(-EIO); |
766 | } | 766 | } |
@@ -858,8 +858,8 @@ static int dir_make_exhash(struct inode *inode) | |||
858 | return -ENOSPC; | 858 | return -ENOSPC; |
859 | bn = bh->b_blocknr; | 859 | bn = bh->b_blocknr; |
860 | 860 | ||
861 | gfs2_assert(sdp, dip->i_di.di_entries < (1 << 16)); | 861 | gfs2_assert(sdp, dip->i_entries < (1 << 16)); |
862 | leaf->lf_entries = cpu_to_be16(dip->i_di.di_entries); | 862 | leaf->lf_entries = cpu_to_be16(dip->i_entries); |
863 | 863 | ||
864 | /* Copy dirents */ | 864 | /* Copy dirents */ |
865 | 865 | ||
@@ -905,9 +905,9 @@ static int dir_make_exhash(struct inode *inode) | |||
905 | for (x = sdp->sd_hash_ptrs; x--; lp++) | 905 | for (x = sdp->sd_hash_ptrs; x--; lp++) |
906 | *lp = cpu_to_be64(bn); | 906 | *lp = cpu_to_be64(bn); |
907 | 907 | ||
908 | dip->i_di.di_size = sdp->sd_sb.sb_bsize / 2; | 908 | dip->i_disksize = sdp->sd_sb.sb_bsize / 2; |
909 | gfs2_add_inode_blocks(&dip->i_inode, 1); | 909 | gfs2_add_inode_blocks(&dip->i_inode, 1); |
910 | dip->i_di.di_flags |= GFS2_DIF_EXHASH; | 910 | dip->i_diskflags |= GFS2_DIF_EXHASH; |
911 | 911 | ||
912 | for (x = sdp->sd_hash_ptrs, y = -1; x; x >>= 1, y++) ; | 912 | for (x = sdp->sd_hash_ptrs, y = -1; x; x >>= 1, y++) ; |
913 | dip->i_depth = y; | 913 | dip->i_depth = y; |
@@ -1082,7 +1082,7 @@ static int dir_double_exhash(struct gfs2_inode *dip) | |||
1082 | int error = 0; | 1082 | int error = 0; |
1083 | 1083 | ||
1084 | hsize = 1 << dip->i_depth; | 1084 | hsize = 1 << dip->i_depth; |
1085 | if (hsize * sizeof(u64) != dip->i_di.di_size) { | 1085 | if (hsize * sizeof(u64) != dip->i_disksize) { |
1086 | gfs2_consist_inode(dip); | 1086 | gfs2_consist_inode(dip); |
1087 | return -EIO; | 1087 | return -EIO; |
1088 | } | 1088 | } |
@@ -1091,7 +1091,7 @@ static int dir_double_exhash(struct gfs2_inode *dip) | |||
1091 | 1091 | ||
1092 | buf = kcalloc(3, sdp->sd_hash_bsize, GFP_NOFS | __GFP_NOFAIL); | 1092 | buf = kcalloc(3, sdp->sd_hash_bsize, GFP_NOFS | __GFP_NOFAIL); |
1093 | 1093 | ||
1094 | for (block = dip->i_di.di_size >> sdp->sd_hash_bsize_shift; block--;) { | 1094 | for (block = dip->i_disksize >> sdp->sd_hash_bsize_shift; block--;) { |
1095 | error = gfs2_dir_read_data(dip, (char *)buf, | 1095 | error = gfs2_dir_read_data(dip, (char *)buf, |
1096 | block * sdp->sd_hash_bsize, | 1096 | block * sdp->sd_hash_bsize, |
1097 | sdp->sd_hash_bsize, 1); | 1097 | sdp->sd_hash_bsize, 1); |
@@ -1370,7 +1370,7 @@ static int dir_e_read(struct inode *inode, u64 *offset, void *opaque, | |||
1370 | unsigned depth = 0; | 1370 | unsigned depth = 0; |
1371 | 1371 | ||
1372 | hsize = 1 << dip->i_depth; | 1372 | hsize = 1 << dip->i_depth; |
1373 | if (hsize * sizeof(u64) != dip->i_di.di_size) { | 1373 | if (hsize * sizeof(u64) != dip->i_disksize) { |
1374 | gfs2_consist_inode(dip); | 1374 | gfs2_consist_inode(dip); |
1375 | return -EIO; | 1375 | return -EIO; |
1376 | } | 1376 | } |
@@ -1426,10 +1426,10 @@ int gfs2_dir_read(struct inode *inode, u64 *offset, void *opaque, | |||
1426 | int copied = 0; | 1426 | int copied = 0; |
1427 | int error; | 1427 | int error; |
1428 | 1428 | ||
1429 | if (!dip->i_di.di_entries) | 1429 | if (!dip->i_entries) |
1430 | return 0; | 1430 | return 0; |
1431 | 1431 | ||
1432 | if (dip->i_di.di_flags & GFS2_DIF_EXHASH) | 1432 | if (dip->i_diskflags & GFS2_DIF_EXHASH) |
1433 | return dir_e_read(inode, offset, opaque, filldir); | 1433 | return dir_e_read(inode, offset, opaque, filldir); |
1434 | 1434 | ||
1435 | if (!gfs2_is_stuffed(dip)) { | 1435 | if (!gfs2_is_stuffed(dip)) { |
@@ -1453,17 +1453,17 @@ int gfs2_dir_read(struct inode *inode, u64 *offset, void *opaque, | |||
1453 | error = PTR_ERR(dent); | 1453 | error = PTR_ERR(dent); |
1454 | goto out; | 1454 | goto out; |
1455 | } | 1455 | } |
1456 | if (dip->i_di.di_entries != g.offset) { | 1456 | if (dip->i_entries != g.offset) { |
1457 | fs_warn(sdp, "Number of entries corrupt in dir %llu, " | 1457 | fs_warn(sdp, "Number of entries corrupt in dir %llu, " |
1458 | "ip->i_di.di_entries (%u) != g.offset (%u)\n", | 1458 | "ip->i_entries (%u) != g.offset (%u)\n", |
1459 | (unsigned long long)dip->i_no_addr, | 1459 | (unsigned long long)dip->i_no_addr, |
1460 | dip->i_di.di_entries, | 1460 | dip->i_entries, |
1461 | g.offset); | 1461 | g.offset); |
1462 | error = -EIO; | 1462 | error = -EIO; |
1463 | goto out; | 1463 | goto out; |
1464 | } | 1464 | } |
1465 | error = do_filldir_main(dip, offset, opaque, filldir, darr, | 1465 | error = do_filldir_main(dip, offset, opaque, filldir, darr, |
1466 | dip->i_di.di_entries, &copied); | 1466 | dip->i_entries, &copied); |
1467 | out: | 1467 | out: |
1468 | kfree(darr); | 1468 | kfree(darr); |
1469 | } | 1469 | } |
@@ -1612,7 +1612,7 @@ int gfs2_dir_add(struct inode *inode, const struct qstr *name, | |||
1612 | dent = gfs2_init_dirent(inode, dent, name, bh); | 1612 | dent = gfs2_init_dirent(inode, dent, name, bh); |
1613 | gfs2_inum_out(nip, dent); | 1613 | gfs2_inum_out(nip, dent); |
1614 | dent->de_type = cpu_to_be16(type); | 1614 | dent->de_type = cpu_to_be16(type); |
1615 | if (ip->i_di.di_flags & GFS2_DIF_EXHASH) { | 1615 | if (ip->i_diskflags & GFS2_DIF_EXHASH) { |
1616 | leaf = (struct gfs2_leaf *)bh->b_data; | 1616 | leaf = (struct gfs2_leaf *)bh->b_data; |
1617 | be16_add_cpu(&leaf->lf_entries, 1); | 1617 | be16_add_cpu(&leaf->lf_entries, 1); |
1618 | } | 1618 | } |
@@ -1621,14 +1621,14 @@ int gfs2_dir_add(struct inode *inode, const struct qstr *name, | |||
1621 | if (error) | 1621 | if (error) |
1622 | break; | 1622 | break; |
1623 | gfs2_trans_add_bh(ip->i_gl, bh, 1); | 1623 | gfs2_trans_add_bh(ip->i_gl, bh, 1); |
1624 | ip->i_di.di_entries++; | 1624 | ip->i_entries++; |
1625 | ip->i_inode.i_mtime = ip->i_inode.i_ctime = CURRENT_TIME; | 1625 | ip->i_inode.i_mtime = ip->i_inode.i_ctime = CURRENT_TIME; |
1626 | gfs2_dinode_out(ip, bh->b_data); | 1626 | gfs2_dinode_out(ip, bh->b_data); |
1627 | brelse(bh); | 1627 | brelse(bh); |
1628 | error = 0; | 1628 | error = 0; |
1629 | break; | 1629 | break; |
1630 | } | 1630 | } |
1631 | if (!(ip->i_di.di_flags & GFS2_DIF_EXHASH)) { | 1631 | if (!(ip->i_diskflags & GFS2_DIF_EXHASH)) { |
1632 | error = dir_make_exhash(inode); | 1632 | error = dir_make_exhash(inode); |
1633 | if (error) | 1633 | if (error) |
1634 | break; | 1634 | break; |
@@ -1691,7 +1691,7 @@ int gfs2_dir_del(struct gfs2_inode *dip, const struct qstr *name) | |||
1691 | } | 1691 | } |
1692 | 1692 | ||
1693 | dirent_del(dip, bh, prev, dent); | 1693 | dirent_del(dip, bh, prev, dent); |
1694 | if (dip->i_di.di_flags & GFS2_DIF_EXHASH) { | 1694 | if (dip->i_diskflags & GFS2_DIF_EXHASH) { |
1695 | struct gfs2_leaf *leaf = (struct gfs2_leaf *)bh->b_data; | 1695 | struct gfs2_leaf *leaf = (struct gfs2_leaf *)bh->b_data; |
1696 | u16 entries = be16_to_cpu(leaf->lf_entries); | 1696 | u16 entries = be16_to_cpu(leaf->lf_entries); |
1697 | if (!entries) | 1697 | if (!entries) |
@@ -1704,10 +1704,10 @@ int gfs2_dir_del(struct gfs2_inode *dip, const struct qstr *name) | |||
1704 | if (error) | 1704 | if (error) |
1705 | return error; | 1705 | return error; |
1706 | 1706 | ||
1707 | if (!dip->i_di.di_entries) | 1707 | if (!dip->i_entries) |
1708 | gfs2_consist_inode(dip); | 1708 | gfs2_consist_inode(dip); |
1709 | gfs2_trans_add_bh(dip->i_gl, bh, 1); | 1709 | gfs2_trans_add_bh(dip->i_gl, bh, 1); |
1710 | dip->i_di.di_entries--; | 1710 | dip->i_entries--; |
1711 | dip->i_inode.i_mtime = dip->i_inode.i_ctime = CURRENT_TIME; | 1711 | dip->i_inode.i_mtime = dip->i_inode.i_ctime = CURRENT_TIME; |
1712 | gfs2_dinode_out(dip, bh->b_data); | 1712 | gfs2_dinode_out(dip, bh->b_data); |
1713 | brelse(bh); | 1713 | brelse(bh); |
@@ -1748,7 +1748,7 @@ int gfs2_dir_mvino(struct gfs2_inode *dip, const struct qstr *filename, | |||
1748 | gfs2_inum_out(nip, dent); | 1748 | gfs2_inum_out(nip, dent); |
1749 | dent->de_type = cpu_to_be16(new_type); | 1749 | dent->de_type = cpu_to_be16(new_type); |
1750 | 1750 | ||
1751 | if (dip->i_di.di_flags & GFS2_DIF_EXHASH) { | 1751 | if (dip->i_diskflags & GFS2_DIF_EXHASH) { |
1752 | brelse(bh); | 1752 | brelse(bh); |
1753 | error = gfs2_meta_inode_buffer(dip, &bh); | 1753 | error = gfs2_meta_inode_buffer(dip, &bh); |
1754 | if (error) | 1754 | if (error) |
@@ -1784,7 +1784,7 @@ static int foreach_leaf(struct gfs2_inode *dip, leaf_call_t lc, void *data) | |||
1784 | int error = 0; | 1784 | int error = 0; |
1785 | 1785 | ||
1786 | hsize = 1 << dip->i_depth; | 1786 | hsize = 1 << dip->i_depth; |
1787 | if (hsize * sizeof(u64) != dip->i_di.di_size) { | 1787 | if (hsize * sizeof(u64) != dip->i_disksize) { |
1788 | gfs2_consist_inode(dip); | 1788 | gfs2_consist_inode(dip); |
1789 | return -EIO; | 1789 | return -EIO; |
1790 | } | 1790 | } |