diff options
Diffstat (limited to 'fs/xfs/scrub/attr.c')
-rw-r--r-- | fs/xfs/scrub/attr.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/xfs/scrub/attr.c b/fs/xfs/scrub/attr.c index 099a28308815..70f025284c42 100644 --- a/fs/xfs/scrub/attr.c +++ b/fs/xfs/scrub/attr.c | |||
@@ -73,7 +73,7 @@ xchk_xattr_listent( | |||
73 | sx = container_of(context, struct xchk_xattr, context); | 73 | sx = container_of(context, struct xchk_xattr, context); |
74 | 74 | ||
75 | if (xchk_should_terminate(sx->sc, &error)) { | 75 | if (xchk_should_terminate(sx->sc, &error)) { |
76 | context->seen_enough = 1; | 76 | context->seen_enough = error; |
77 | return; | 77 | return; |
78 | } | 78 | } |
79 | 79 | ||
@@ -115,7 +115,7 @@ xchk_xattr_listent( | |||
115 | args.blkno); | 115 | args.blkno); |
116 | fail_xref: | 116 | fail_xref: |
117 | if (sx->sc->sm->sm_flags & XFS_SCRUB_OFLAG_CORRUPT) | 117 | if (sx->sc->sm->sm_flags & XFS_SCRUB_OFLAG_CORRUPT) |
118 | context->seen_enough = 1; | 118 | context->seen_enough = XFS_ITER_ABORT; |
119 | return; | 119 | return; |
120 | } | 120 | } |
121 | 121 | ||
@@ -454,6 +454,10 @@ xchk_xattr( | |||
454 | error = xfs_attr_list_int_ilocked(&sx.context); | 454 | error = xfs_attr_list_int_ilocked(&sx.context); |
455 | if (!xchk_fblock_process_error(sc, XFS_ATTR_FORK, 0, &error)) | 455 | if (!xchk_fblock_process_error(sc, XFS_ATTR_FORK, 0, &error)) |
456 | goto out; | 456 | goto out; |
457 | |||
458 | /* Did our listent function try to return any errors? */ | ||
459 | if (sx.context.seen_enough < 0) | ||
460 | error = sx.context.seen_enough; | ||
457 | out: | 461 | out: |
458 | return error; | 462 | return error; |
459 | } | 463 | } |