xfs: convert secondary superblock walk to use perags
Clean up the last external manual AG walk. Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Brian Foster <bfoster@redhat.com> Reviewed-by: Darrick J. Wong <djwong@kernel.org>
This commit is contained in:
Родитель
6f4118fc64
Коммит
7f8d3b3ca6
|
@ -24,6 +24,7 @@
|
|||
#include "xfs_refcount_btree.h"
|
||||
#include "xfs_da_format.h"
|
||||
#include "xfs_health.h"
|
||||
#include "xfs_ag.h"
|
||||
|
||||
/*
|
||||
* Physical superblock buffer manipulations. Shared with libxfs in userspace.
|
||||
|
@ -855,17 +856,18 @@ int
|
|||
xfs_update_secondary_sbs(
|
||||
struct xfs_mount *mp)
|
||||
{
|
||||
xfs_agnumber_t agno;
|
||||
struct xfs_perag *pag;
|
||||
xfs_agnumber_t agno = 1;
|
||||
int saved_error = 0;
|
||||
int error = 0;
|
||||
LIST_HEAD (buffer_list);
|
||||
|
||||
/* update secondary superblocks. */
|
||||
for (agno = 1; agno < mp->m_sb.sb_agcount; agno++) {
|
||||
for_each_perag_from(mp, agno, pag) {
|
||||
struct xfs_buf *bp;
|
||||
|
||||
error = xfs_buf_get(mp->m_ddev_targp,
|
||||
XFS_AG_DADDR(mp, agno, XFS_SB_DADDR),
|
||||
XFS_AG_DADDR(mp, pag->pag_agno, XFS_SB_DADDR),
|
||||
XFS_FSS_TO_BB(mp, 1), &bp);
|
||||
/*
|
||||
* If we get an error reading or writing alternate superblocks,
|
||||
|
@ -877,7 +879,7 @@ xfs_update_secondary_sbs(
|
|||
if (error) {
|
||||
xfs_warn(mp,
|
||||
"error allocating secondary superblock for ag %d",
|
||||
agno);
|
||||
pag->pag_agno);
|
||||
if (!saved_error)
|
||||
saved_error = error;
|
||||
continue;
|
||||
|
@ -898,7 +900,7 @@ xfs_update_secondary_sbs(
|
|||
if (error) {
|
||||
xfs_warn(mp,
|
||||
"write error %d updating a secondary superblock near ag %d",
|
||||
error, agno);
|
||||
error, pag->pag_agno);
|
||||
if (!saved_error)
|
||||
saved_error = error;
|
||||
continue;
|
||||
|
|
Загрузка…
Ссылка в новой задаче