|
@@ -127,8 +127,8 @@ static int gfs2_dir_write_stuffed(struct gfs2_inode *ip, const char *buf,
|
|
|
|
|
|
gfs2_trans_add_bh(ip->i_gl, dibh, 1);
|
|
|
memcpy(dibh->b_data + offset + sizeof(struct gfs2_dinode), buf, size);
|
|
|
- if (ip->i_disksize < offset + size)
|
|
|
- ip->i_disksize = offset + size;
|
|
|
+ if (ip->i_inode.i_size < offset + size)
|
|
|
+ i_size_write(&ip->i_inode, offset + size);
|
|
|
ip->i_inode.i_mtime = ip->i_inode.i_ctime = CURRENT_TIME;
|
|
|
gfs2_dinode_out(ip, dibh->b_data);
|
|
|
|
|
@@ -225,8 +225,8 @@ out:
|
|
|
if (error)
|
|
|
return error;
|
|
|
|
|
|
- if (ip->i_disksize < offset + copied)
|
|
|
- ip->i_disksize = offset + copied;
|
|
|
+ if (ip->i_inode.i_size < offset + copied)
|
|
|
+ i_size_write(&ip->i_inode, offset + copied);
|
|
|
ip->i_inode.i_mtime = ip->i_inode.i_ctime = CURRENT_TIME;
|
|
|
|
|
|
gfs2_trans_add_bh(ip->i_gl, dibh, 1);
|
|
@@ -275,12 +275,13 @@ static int gfs2_dir_read_data(struct gfs2_inode *ip, char *buf, u64 offset,
|
|
|
unsigned int o;
|
|
|
int copied = 0;
|
|
|
int error = 0;
|
|
|
+ u64 disksize = i_size_read(&ip->i_inode);
|
|
|
|
|
|
- if (offset >= ip->i_disksize)
|
|
|
+ if (offset >= disksize)
|
|
|
return 0;
|
|
|
|
|
|
- if (offset + size > ip->i_disksize)
|
|
|
- size = ip->i_disksize - offset;
|
|
|
+ if (offset + size > disksize)
|
|
|
+ size = disksize - offset;
|
|
|
|
|
|
if (!size)
|
|
|
return 0;
|
|
@@ -727,7 +728,7 @@ static struct gfs2_dirent *gfs2_dirent_search(struct inode *inode,
|
|
|
unsigned hsize = 1 << ip->i_depth;
|
|
|
unsigned index;
|
|
|
u64 ln;
|
|
|
- if (hsize * sizeof(u64) != ip->i_disksize) {
|
|
|
+ if (hsize * sizeof(u64) != i_size_read(inode)) {
|
|
|
gfs2_consist_inode(ip);
|
|
|
return ERR_PTR(-EIO);
|
|
|
}
|
|
@@ -879,7 +880,7 @@ static int dir_make_exhash(struct inode *inode)
|
|
|
for (x = sdp->sd_hash_ptrs; x--; lp++)
|
|
|
*lp = cpu_to_be64(bn);
|
|
|
|
|
|
- dip->i_disksize = sdp->sd_sb.sb_bsize / 2;
|
|
|
+ i_size_write(inode, sdp->sd_sb.sb_bsize / 2);
|
|
|
gfs2_add_inode_blocks(&dip->i_inode, 1);
|
|
|
dip->i_diskflags |= GFS2_DIF_EXHASH;
|
|
|
|
|
@@ -1057,11 +1058,12 @@ static int dir_double_exhash(struct gfs2_inode *dip)
|
|
|
u64 *buf;
|
|
|
u64 *from, *to;
|
|
|
u64 block;
|
|
|
+ u64 disksize = i_size_read(&dip->i_inode);
|
|
|
int x;
|
|
|
int error = 0;
|
|
|
|
|
|
hsize = 1 << dip->i_depth;
|
|
|
- if (hsize * sizeof(u64) != dip->i_disksize) {
|
|
|
+ if (hsize * sizeof(u64) != disksize) {
|
|
|
gfs2_consist_inode(dip);
|
|
|
return -EIO;
|
|
|
}
|
|
@@ -1072,7 +1074,7 @@ static int dir_double_exhash(struct gfs2_inode *dip)
|
|
|
if (!buf)
|
|
|
return -ENOMEM;
|
|
|
|
|
|
- for (block = dip->i_disksize >> sdp->sd_hash_bsize_shift; block--;) {
|
|
|
+ for (block = disksize >> sdp->sd_hash_bsize_shift; block--;) {
|
|
|
error = gfs2_dir_read_data(dip, (char *)buf,
|
|
|
block * sdp->sd_hash_bsize,
|
|
|
sdp->sd_hash_bsize, 1);
|
|
@@ -1370,7 +1372,7 @@ static int dir_e_read(struct inode *inode, u64 *offset, void *opaque,
|
|
|
unsigned depth = 0;
|
|
|
|
|
|
hsize = 1 << dip->i_depth;
|
|
|
- if (hsize * sizeof(u64) != dip->i_disksize) {
|
|
|
+ if (hsize * sizeof(u64) != i_size_read(inode)) {
|
|
|
gfs2_consist_inode(dip);
|
|
|
return -EIO;
|
|
|
}
|
|
@@ -1784,7 +1786,7 @@ static int foreach_leaf(struct gfs2_inode *dip, leaf_call_t lc, void *data)
|
|
|
int error = 0;
|
|
|
|
|
|
hsize = 1 << dip->i_depth;
|
|
|
- if (hsize * sizeof(u64) != dip->i_disksize) {
|
|
|
+ if (hsize * sizeof(u64) != i_size_read(&dip->i_inode)) {
|
|
|
gfs2_consist_inode(dip);
|
|
|
return -EIO;
|
|
|
}
|