Commit cb7d5859 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Darrick J. Wong
Browse files

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: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarBrian Foster <bfoster@redhat.com>
Reviewed-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
parent b90c2a9c
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -180,7 +180,7 @@ xfs_imap_to_bp(
	return 0;
}

void
int
xfs_inode_from_disk(
	struct xfs_inode	*ip,
	struct xfs_dinode	*from)
@@ -241,6 +241,8 @@ xfs_inode_from_disk(
		to->di_flags2 = be64_to_cpu(from->di_flags2);
		to->di_cowextsize = be32_to_cpu(from->di_cowextsize);
	}

	return xfs_iformat_fork(ip, from);
}

void
@@ -641,8 +643,7 @@ xfs_iread(
	 * Otherwise, just get the truly permanent information.
	 */
	if (dip->di_mode) {
		xfs_inode_from_disk(ip, dip);
		error = xfs_iformat_fork(ip, dip);
		error = xfs_inode_from_disk(ip, dip);
		if (error)  {
#ifdef DEBUG
			xfs_alert(mp, "%s: xfs_iformat() returned error %d",
+1 −1
Original line number Diff line number Diff line
@@ -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_inode_to_disk(struct xfs_inode *ip, struct xfs_dinode *to,
			  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,
			       struct xfs_dinode *to);

+1 −2
Original line number Diff line number Diff line
@@ -89,9 +89,8 @@ xfs_recover_inode_owner_change(

	/* instantiate the inode */
	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)
		goto out_free_ip;