xfs: call xfs_iformat_fork from xfs_inode_from_disk
We always need to fill out the fork structures when reading the inode, so call xfs_iformat_fork from the tail of xfs_inode_from_disk. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Brian Foster <bfoster@redhat.com> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
This commit is contained in:
committed by
Darrick J. Wong
parent
b90c2a9c8b
commit
cb7d585944
@@ -180,7 +180,7 @@ xfs_imap_to_bp(
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
int
|
||||||
xfs_inode_from_disk(
|
xfs_inode_from_disk(
|
||||||
struct xfs_inode *ip,
|
struct xfs_inode *ip,
|
||||||
struct xfs_dinode *from)
|
struct xfs_dinode *from)
|
||||||
@@ -241,6 +241,8 @@ xfs_inode_from_disk(
|
|||||||
to->di_flags2 = be64_to_cpu(from->di_flags2);
|
to->di_flags2 = be64_to_cpu(from->di_flags2);
|
||||||
to->di_cowextsize = be32_to_cpu(from->di_cowextsize);
|
to->di_cowextsize = be32_to_cpu(from->di_cowextsize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return xfs_iformat_fork(ip, from);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -641,8 +643,7 @@ xfs_iread(
|
|||||||
* Otherwise, just get the truly permanent information.
|
* Otherwise, just get the truly permanent information.
|
||||||
*/
|
*/
|
||||||
if (dip->di_mode) {
|
if (dip->di_mode) {
|
||||||
xfs_inode_from_disk(ip, dip);
|
error = xfs_inode_from_disk(ip, dip);
|
||||||
error = xfs_iformat_fork(ip, dip);
|
|
||||||
if (error) {
|
if (error) {
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
xfs_alert(mp, "%s: xfs_iformat() returned error %d",
|
xfs_alert(mp, "%s: xfs_iformat() returned error %d",
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ int xfs_iread(struct xfs_mount *, struct xfs_trans *,
|
|||||||
void xfs_dinode_calc_crc(struct xfs_mount *, struct xfs_dinode *);
|
void xfs_dinode_calc_crc(struct xfs_mount *, struct xfs_dinode *);
|
||||||
void xfs_inode_to_disk(struct xfs_inode *ip, struct xfs_dinode *to,
|
void xfs_inode_to_disk(struct xfs_inode *ip, struct xfs_dinode *to,
|
||||||
xfs_lsn_t lsn);
|
xfs_lsn_t lsn);
|
||||||
void xfs_inode_from_disk(struct xfs_inode *ip, struct xfs_dinode *from);
|
int xfs_inode_from_disk(struct xfs_inode *ip, struct xfs_dinode *from);
|
||||||
void xfs_log_dinode_to_disk(struct xfs_log_dinode *from,
|
void xfs_log_dinode_to_disk(struct xfs_log_dinode *from,
|
||||||
struct xfs_dinode *to);
|
struct xfs_dinode *to);
|
||||||
|
|
||||||
|
|||||||
@@ -89,9 +89,8 @@ xfs_recover_inode_owner_change(
|
|||||||
|
|
||||||
/* instantiate the inode */
|
/* instantiate the inode */
|
||||||
ASSERT(dip->di_version >= 3);
|
ASSERT(dip->di_version >= 3);
|
||||||
xfs_inode_from_disk(ip, dip);
|
|
||||||
|
|
||||||
error = xfs_iformat_fork(ip, dip);
|
error = xfs_inode_from_disk(ip, dip);
|
||||||
if (error)
|
if (error)
|
||||||
goto out_free_ip;
|
goto out_free_ip;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user