mirror of https://gitee.com/openkylin/linux.git
xfs: handle cow fork in xfs_bmap_trace_exlist
By inspection, xfs_bmap_trace_exlist isn't handling cow forks, and will trace the data fork instead. Fix this by setting state appropriately if whichfork == XFS_COW_FORK. ()___() < @ @ > | | {o_o} (|) Signed-off-by: Eric Sandeen <sandeen@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
parent
7710517fc3
commit
c44a1f2262
|
@ -518,7 +518,7 @@ void
|
||||||
xfs_bmap_trace_exlist(
|
xfs_bmap_trace_exlist(
|
||||||
xfs_inode_t *ip, /* incore inode pointer */
|
xfs_inode_t *ip, /* incore inode pointer */
|
||||||
xfs_extnum_t cnt, /* count of entries in the list */
|
xfs_extnum_t cnt, /* count of entries in the list */
|
||||||
int whichfork, /* data or attr fork */
|
int whichfork, /* data or attr or cow fork */
|
||||||
unsigned long caller_ip)
|
unsigned long caller_ip)
|
||||||
{
|
{
|
||||||
xfs_extnum_t idx; /* extent record index */
|
xfs_extnum_t idx; /* extent record index */
|
||||||
|
@ -527,6 +527,8 @@ xfs_bmap_trace_exlist(
|
||||||
|
|
||||||
if (whichfork == XFS_ATTR_FORK)
|
if (whichfork == XFS_ATTR_FORK)
|
||||||
state |= BMAP_ATTRFORK;
|
state |= BMAP_ATTRFORK;
|
||||||
|
else if (whichfork == XFS_COW_FORK)
|
||||||
|
state |= BMAP_COWFORK;
|
||||||
|
|
||||||
ifp = XFS_IFORK_PTR(ip, whichfork);
|
ifp = XFS_IFORK_PTR(ip, whichfork);
|
||||||
ASSERT(cnt == xfs_iext_count(ifp));
|
ASSERT(cnt == xfs_iext_count(ifp));
|
||||||
|
|
Loading…
Reference in New Issue