|
@@ -241,7 +241,7 @@ xfs_reflink_trim_around_shared(
|
|
/*
|
|
/*
|
|
* Trim the passed in imap to the next shared/unshared extent boundary, and
|
|
* Trim the passed in imap to the next shared/unshared extent boundary, and
|
|
* if imap->br_startoff points to a shared extent reserve space for it in the
|
|
* if imap->br_startoff points to a shared extent reserve space for it in the
|
|
- * COW fork. In this case *shared is set to true, else to false.
|
|
|
|
|
|
+ * COW fork.
|
|
*
|
|
*
|
|
* Note that imap will always contain the block numbers for the existing blocks
|
|
* Note that imap will always contain the block numbers for the existing blocks
|
|
* in the data fork, as the upper layers need them for read-modify-write
|
|
* in the data fork, as the upper layers need them for read-modify-write
|
|
@@ -250,14 +250,14 @@ xfs_reflink_trim_around_shared(
|
|
int
|
|
int
|
|
xfs_reflink_reserve_cow(
|
|
xfs_reflink_reserve_cow(
|
|
struct xfs_inode *ip,
|
|
struct xfs_inode *ip,
|
|
- struct xfs_bmbt_irec *imap,
|
|
|
|
- bool *shared)
|
|
|
|
|
|
+ struct xfs_bmbt_irec *imap)
|
|
{
|
|
{
|
|
struct xfs_ifork *ifp = XFS_IFORK_PTR(ip, XFS_COW_FORK);
|
|
struct xfs_ifork *ifp = XFS_IFORK_PTR(ip, XFS_COW_FORK);
|
|
struct xfs_bmbt_irec got;
|
|
struct xfs_bmbt_irec got;
|
|
int error = 0;
|
|
int error = 0;
|
|
bool eof = false, trimmed;
|
|
bool eof = false, trimmed;
|
|
struct xfs_iext_cursor icur;
|
|
struct xfs_iext_cursor icur;
|
|
|
|
+ bool shared;
|
|
|
|
|
|
/*
|
|
/*
|
|
* Search the COW fork extent list first. This serves two purposes:
|
|
* Search the COW fork extent list first. This serves two purposes:
|
|
@@ -273,18 +273,16 @@ xfs_reflink_reserve_cow(
|
|
if (!eof && got.br_startoff <= imap->br_startoff) {
|
|
if (!eof && got.br_startoff <= imap->br_startoff) {
|
|
trace_xfs_reflink_cow_found(ip, imap);
|
|
trace_xfs_reflink_cow_found(ip, imap);
|
|
xfs_trim_extent(imap, got.br_startoff, got.br_blockcount);
|
|
xfs_trim_extent(imap, got.br_startoff, got.br_blockcount);
|
|
-
|
|
|
|
- *shared = true;
|
|
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
/* Trim the mapping to the nearest shared extent boundary. */
|
|
/* Trim the mapping to the nearest shared extent boundary. */
|
|
- error = xfs_reflink_trim_around_shared(ip, imap, shared, &trimmed);
|
|
|
|
|
|
+ error = xfs_reflink_trim_around_shared(ip, imap, &shared, &trimmed);
|
|
if (error)
|
|
if (error)
|
|
return error;
|
|
return error;
|
|
|
|
|
|
/* Not shared? Just report the (potentially capped) extent. */
|
|
/* Not shared? Just report the (potentially capped) extent. */
|
|
- if (!*shared)
|
|
|
|
|
|
+ if (!shared)
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
/*
|
|
/*
|