mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 23:32:14 +00:00
xfs: specify AG in bulk req
Add a new xfs_bulk_ireq flag to constrain the iteration to a single AG. If the passed-in startino value is zero then we start with the first inode in the AG that the user passes in; otherwise, we iterate only within the same AG as the passed-in inode. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Allison Collins <allison.henderson@oracle.com> Reviewed-by: Brian Foster <bfoster@redhat.com>
This commit is contained in:
parent
fba9760a43
commit
13d59a2a61
7 changed files with 69 additions and 12 deletions
|
@ -844,7 +844,6 @@ xfs_bulk_ireq_setup(
|
|||
{
|
||||
if (hdr->icount == 0 ||
|
||||
(hdr->flags & ~XFS_BULK_IREQ_FLAGS_ALL) ||
|
||||
hdr->reserved32 ||
|
||||
memchr_inv(hdr->reserved, 0, sizeof(hdr->reserved)))
|
||||
return -EINVAL;
|
||||
|
||||
|
@ -852,6 +851,29 @@ xfs_bulk_ireq_setup(
|
|||
breq->ubuffer = ubuffer;
|
||||
breq->icount = hdr->icount;
|
||||
breq->ocount = 0;
|
||||
breq->flags = 0;
|
||||
|
||||
/*
|
||||
* The IREQ_AGNO flag means that we only want results from a given AG.
|
||||
* If @hdr->ino is zero, we start iterating in that AG. If @hdr->ino is
|
||||
* beyond the specified AG then we return no results.
|
||||
*/
|
||||
if (hdr->flags & XFS_BULK_IREQ_AGNO) {
|
||||
if (hdr->agno >= mp->m_sb.sb_agcount)
|
||||
return -EINVAL;
|
||||
|
||||
if (breq->startino == 0)
|
||||
breq->startino = XFS_AGINO_TO_INO(mp, hdr->agno, 0);
|
||||
else if (XFS_INO_TO_AGNO(mp, breq->startino) < hdr->agno)
|
||||
return -EINVAL;
|
||||
|
||||
breq->flags |= XFS_IBULK_SAME_AG;
|
||||
|
||||
/* Asking for an inode past the end of the AG? We're done! */
|
||||
if (XFS_INO_TO_AGNO(mp, breq->startino) > hdr->agno)
|
||||
return XFS_ITER_ABORT;
|
||||
} else if (hdr->agno)
|
||||
return -EINVAL;
|
||||
|
||||
/* Asking for an inode past the end of the FS? We're done! */
|
||||
if (XFS_INO_TO_AGNO(mp, breq->startino) >= mp->m_sb.sb_agcount)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue