public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
* xfs_repair: enabling lazy sb counters
@ 2012-09-25 15:40 Peter Watkins
  2012-09-25 21:24 ` Dave Chinner
  0 siblings, 1 reply; 2+ messages in thread
From: Peter Watkins @ 2012-09-25 15:40 UTC (permalink / raw)
  To: xfs

Hello,

Has anyone noticed that phase1 updates the lazy count flag in the
superblock, and then writes out the sb before the traversal in phase5
counts btree blocks consumed and sets agf_btreeblks?

Seems like if xfs_repair is interrupted or crashes at the wrong time,
you'd have enabled lazy count but not set agf_btreeblks, which would
trigger the corruption check in xfs_alloc.c:xfs_read_agf().

If you just re-run xfs_repair to enable lazy counts, it would stop
early saying they're already enabled. You'd have to disable them, and
then enable again to get a consistent state.

Second, is it possible to enable lazy counts without doing the full
repair traversal, i.e. a cheap and easy way to set agf_btreeblks if
the fs is already consistent? On some systems, the whole repair
enchilada can take a long time!

Lazy counts are a great feature, and I'd like to enable them on some
older systems.

-Peter

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: xfs_repair: enabling lazy sb counters
  2012-09-25 15:40 xfs_repair: enabling lazy sb counters Peter Watkins
@ 2012-09-25 21:24 ` Dave Chinner
  0 siblings, 0 replies; 2+ messages in thread
From: Dave Chinner @ 2012-09-25 21:24 UTC (permalink / raw)
  To: Peter Watkins; +Cc: xfs

On Tue, Sep 25, 2012 at 11:40:33AM -0400, Peter Watkins wrote:
> Hello,
> 
> Has anyone noticed that phase1 updates the lazy count flag in the
> superblock, and then writes out the sb before the traversal in phase5
> counts btree blocks consumed and sets agf_btreeblks?

Not until now. :/

> Seems like if xfs_repair is interrupted or crashes at the wrong time,
> you'd have enabled lazy count but not set agf_btreeblks, which would
> trigger the corruption check in xfs_alloc.c:xfs_read_agf().

Which tells you to run xfs_repair, right?

> If you just re-run xfs_repair to enable lazy counts, it would stop
> early saying they're already enabled. You'd have to disable them, and
> then enable again to get a consistent state.

Or you just run xfs_repair without trying to change the lazy count
state - that will recalculate the btreeblks count as part of the
normal repair process....

> Second, is it possible to enable lazy counts without doing the
> full repair traversal, i.e. a cheap and easy way to set
> agf_btreeblks if the fs is already consistent?  On some systems,
> the whole repair enchilada can take a long time!

The current process is that xfs_repair -rebuilds- the freespace
trees from it's in memory state, and it takes until phase 5 for
xfs_repair to have a full picture of the freespace in the filesystem
after fixing up possible errors.

So basically when you enable lazy counters, repair essentially
verifies all the freespace is correct before enabling it. That's a
necessary pre-requisite for lazy-counters to work correctly, and the
only way to ensure it is to walk the filesystem first.

That said, if you really want to avoid running a full xfs_repair,
you can always count the btree blocks manually with xfs_db and set
the btreeblk count fields yourself. You get to keep the broken
pieces when something goes wrong, though. :/

Cheers,

Dave.
-- 
Dave Chinner
david@fromorbit.com

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2012-09-25 21:23 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-25 15:40 xfs_repair: enabling lazy sb counters Peter Watkins
2012-09-25 21:24 ` Dave Chinner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox