public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
* Enabling lazy counters damages filesystem
@ 2010-04-28 14:34 Marcin Mirosław
  2010-04-28 21:40 ` Eric Sandeen
  2010-04-28 23:04 ` Dave Chinner
  0 siblings, 2 replies; 7+ messages in thread
From: Marcin Mirosław @ 2010-04-28 14:34 UTC (permalink / raw)
  To: xfs

Hello,
Please look at this:
# mkfs.xfs -f /dev/malowazne/test
meta-data=/dev/malowazne/test    isize=256    agcount=4, agsize=524288 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=2097152, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=0
realtime =none                   extsz=4096   blocks=0, rtextents=0

# xfs_check /dev/malowazne/test
# xfs_check /dev/malowazne/test

It's still clean.

# xfs_admin -c 1 /dev/malowazne/test
Enabling lazy-counters
# xfs_check /dev/malowazne/test
sb_features2 (0xa) not same as sb_bad_features2 (0x8)

Not good, let's repair fs:

# xfs_repair /dev/malowazne/test
Phase 1 - find and verify superblock...
superblock has a features2 mismatch, correcting
writing modified primary superblock
Phase 2 - using internal log
        - zero log...
        - scan filesystem freespace and inode maps...
        - found root inode chunk
Phase 3 - for each AG...
        - scan and clear agi unlinked lists...
        - process known inodes and perform inode discovery...
        - agno = 0
        - agno = 1
        - agno = 2
        - agno = 3
        - process newly discovered inodes...
Phase 4 - check for duplicate blocks...
        - setting up duplicate extent list...
        - check for inodes claiming duplicate blocks...
        - agno = 0
        - agno = 1
        - agno = 2
        - agno = 3
Phase 5 - rebuild AG headers and trees...
        - reset superblock...
Phase 6 - check inode connectivity...
        - resetting contents of realtime bitmap and summary inodes
        - traversing filesystem ...
        - traversal finished ...
        - moving disconnected inodes to lost+found ...
Phase 7 - verify and correct link counts...
done

Now i'm trying to turn off lazy counters:

# xfs_admin -c 0 /dev/malowazne/test
Disabling lazy-counters
# xfs_check /dev/malowazne/test
sb_features2 (0x8) not same as sb_bad_features2 (0xa)
# xfs_repair /dev/malowazne/test
Phase 1 - find and verify superblock...
superblock has a features2 mismatch, correcting
writing modified primary superblock
Phase 2 - using internal log
        - zero log...
        - scan filesystem freespace and inode maps...
        - found root inode chunk
Phase 3 - for each AG...
        - scan and clear agi unlinked lists...
        - process known inodes and perform inode discovery...
        - agno = 0
        - agno = 1
        - agno = 2
        - agno = 3
        - process newly discovered inodes...
Phase 4 - check for duplicate blocks...
        - setting up duplicate extent list...
        - check for inodes claiming duplicate blocks...
        - agno = 0
        - agno = 1
        - agno = 2
        - agno = 3
Phase 5 - rebuild AG headers and trees...
        - reset superblock...
Phase 6 - check inode connectivity...
        - resetting contents of realtime bitmap and summary inodes
        - traversing filesystem ...
        - traversal finished ...
        - moving disconnected inodes to lost+found ...
Phase 7 - verify and correct link counts...
done

# mount /dev/malowazne/test /mnt/test
# xfs_info /dev/malowazne/test
meta-data=/dev/mapper/malowazne-test isize=256    agcount=4,
agsize=524288 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=2097152, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

So as you can see lazy conters are still turn on.
I'm using:
# mkfs.xfs -V
mkfs.xfs version 3.0.3
# uname -r
2.6.33-zen2

The same problem noticed with kernel-2.6.28-r9 with grsecurity, and with
xfsprogs-3.0.0 .
Is this behaviour bug or i don't know about something that i should?:)

Regards!
Marcin









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

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

* Re: Enabling lazy counters damages filesystem
  2010-04-28 14:34 Enabling lazy counters damages filesystem Marcin Mirosław
@ 2010-04-28 21:40 ` Eric Sandeen
  2010-04-28 23:04 ` Dave Chinner
  1 sibling, 0 replies; 7+ messages in thread
From: Eric Sandeen @ 2010-04-28 21:40 UTC (permalink / raw)
  To: Marcin Miros?aw; +Cc: xfs

Marcin Miros?aw wrote:
> Hello,
> Please look at this:
> # mkfs.xfs -f /dev/malowazne/test
> meta-data=/dev/malowazne/test    isize=256    agcount=4, agsize=524288 blks
>          =                       sectsz=512   attr=2
> data     =                       bsize=4096   blocks=2097152, imaxpct=25
>          =                       sunit=0      swidth=0 blks
> naming   =version 2              bsize=4096   ascii-ci=0
> log      =internal log           bsize=4096   blocks=2560, version=2
>          =                       sectsz=512   sunit=0 blks, lazy-count=0
> realtime =none                   extsz=4096   blocks=0, rtextents=0
> 
> # xfs_check /dev/malowazne/test
> # xfs_check /dev/malowazne/test
> 
> It's still clean.
> 
> # xfs_admin -c 1 /dev/malowazne/test
> Enabling lazy-counters
> # xfs_check /dev/malowazne/test
> sb_features2 (0xa) not same as sb_bad_features2 (0x8)

ok, I guess that mechanism is not hitting both sb fields.

Should be a trivial fix, something like below.

-Eric

diff --git a/repair/phase1.c b/repair/phase1.c
index 618796e..dbfbc9b 100644
--- a/repair/phase1.c
+++ b/repair/phase1.c
@@ -117,11 +117,13 @@ phase1(xfs_mount_t *mp)
 		if (lazy_count && !xfs_sb_version_haslazysbcount(sb)) {
 			sb->sb_versionnum |= XFS_SB_VERSION_MOREBITSBIT;
 			sb->sb_features2 |= XFS_SB_VERSION2_LAZYSBCOUNTBIT;
+			sb->sb_bad_features2 |= XFS_SB_VERSION2_LAZYSBCOUNTBIT;
 			primary_sb_modified = 1;
 			printf(_("Enabling lazy-counters\n"));
 		} else
 		if (!lazy_count && xfs_sb_version_haslazysbcount(sb)) {
 			sb->sb_features2 &= ~XFS_SB_VERSION2_LAZYSBCOUNTBIT;
+			sb->sb_bad_features2 &= ~XFS_SB_VERSION2_LAZYSBCOUNTBIT;
 			printf(_("Disabling lazy-counters\n"));
 			primary_sb_modified = 1;
 		} else {

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

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

* Re: Enabling lazy counters damages filesystem
  2010-04-28 14:34 Enabling lazy counters damages filesystem Marcin Mirosław
  2010-04-28 21:40 ` Eric Sandeen
@ 2010-04-28 23:04 ` Dave Chinner
  2010-04-29  1:43   ` Dave Chinner
  1 sibling, 1 reply; 7+ messages in thread
From: Dave Chinner @ 2010-04-28 23:04 UTC (permalink / raw)
  To: Marcin Mirosław; +Cc: xfs

On Wed, Apr 28, 2010 at 04:34:25PM +0200, Marcin Mirosław wrote:
> Hello,
> Please look at this:
> # mkfs.xfs -f /dev/malowazne/test
> meta-data=/dev/malowazne/test    isize=256    agcount=4, agsize=524288 blks
>          =                       sectsz=512   attr=2
> data     =                       bsize=4096   blocks=2097152, imaxpct=25
>          =                       sunit=0      swidth=0 blks
> naming   =version 2              bsize=4096   ascii-ci=0
> log      =internal log           bsize=4096   blocks=2560, version=2
>          =                       sectsz=512   sunit=0 blks, lazy-count=0
> realtime =none                   extsz=4096   blocks=0, rtextents=0
> 
> # xfs_check /dev/malowazne/test
> # xfs_check /dev/malowazne/test
> 
> It's still clean.
> 
> # xfs_admin -c 1 /dev/malowazne/test
> Enabling lazy-counters
> # xfs_check /dev/malowazne/test
> sb_features2 (0xa) not same as sb_bad_features2 (0x8)
....

> So as you can see lazy conters are still turn on.
> I'm using:
> # mkfs.xfs -V
> mkfs.xfs version 3.0.3

This was fixed in 3.0.5, IIRC. Please upgrade.

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] 7+ messages in thread

* Re: Enabling lazy counters damages filesystem
  2010-04-28 23:04 ` Dave Chinner
@ 2010-04-29  1:43   ` Dave Chinner
  2010-04-29  1:51     ` Eric Sandeen
  0 siblings, 1 reply; 7+ messages in thread
From: Dave Chinner @ 2010-04-29  1:43 UTC (permalink / raw)
  To: Marcin Mirosław; +Cc: xfs

On Thu, Apr 29, 2010 at 09:04:47AM +1000, Dave Chinner wrote:
> On Wed, Apr 28, 2010 at 04:34:25PM +0200, Marcin Mirosław wrote:
> > Hello,
> > Please look at this:
> > # mkfs.xfs -f /dev/malowazne/test
> > meta-data=/dev/malowazne/test    isize=256    agcount=4, agsize=524288 blks
> >          =                       sectsz=512   attr=2
> > data     =                       bsize=4096   blocks=2097152, imaxpct=25
> >          =                       sunit=0      swidth=0 blks
> > naming   =version 2              bsize=4096   ascii-ci=0
> > log      =internal log           bsize=4096   blocks=2560, version=2
> >          =                       sectsz=512   sunit=0 blks, lazy-count=0
> > realtime =none                   extsz=4096   blocks=0, rtextents=0
> > 
> > # xfs_check /dev/malowazne/test
> > # xfs_check /dev/malowazne/test
> > 
> > It's still clean.
> > 
> > # xfs_admin -c 1 /dev/malowazne/test
> > Enabling lazy-counters
> > # xfs_check /dev/malowazne/test
> > sb_features2 (0xa) not same as sb_bad_features2 (0x8)
> ....
> 
> > So as you can see lazy conters are still turn on.
> > I'm using:
> > # mkfs.xfs -V
> > mkfs.xfs version 3.0.3
> 
> This was fixed in 3.0.5, IIRC. Please upgrade.

Actually, 3.1.0 was the first release with the fix to xfs_db that
prevents this problem.

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] 7+ messages in thread

* Re: Enabling lazy counters damages filesystem
  2010-04-29  1:43   ` Dave Chinner
@ 2010-04-29  1:51     ` Eric Sandeen
  2010-04-29  2:05       ` Dave Chinner
  0 siblings, 1 reply; 7+ messages in thread
From: Eric Sandeen @ 2010-04-29  1:51 UTC (permalink / raw)
  To: Dave Chinner; +Cc: Marcin Mirosław, xfs

Dave Chinner wrote:

...

> Actually, 3.1.0 was the first release with the fix to xfs_db that
> prevents this problem.
> 
> Cheers,
> 
> Dave.

not so sure:

# rpm -q xfsprogs
xfsprogs-3.1.1-7

# mkfs.xfs -dfile,name=fsfile,size=10g -llazy-count=0
meta-data=fsfile                 isize=256    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=2621440, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=0
realtime =none                   extsz=4096   blocks=0, rtextents=0

# xfs_admin -c 1 fsfile 
Enabling lazy-counters

# xfs_check fsfile 
sb_features2 (0xa) not same as sb_bad_features2 (0x8)

# xfs_repair fsfile 
Phase 1 - find and verify superblock...
superblock has a features2 mismatch, correcting
writing modified primary superblock
...

-Eric

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

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

* Re: Enabling lazy counters damages filesystem
  2010-04-29  1:51     ` Eric Sandeen
@ 2010-04-29  2:05       ` Dave Chinner
  2010-04-29  8:03         ` Marcin Mirosław
  0 siblings, 1 reply; 7+ messages in thread
From: Dave Chinner @ 2010-04-29  2:05 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: Marcin Mirosław, xfs

On Wed, Apr 28, 2010 at 08:51:30PM -0500, Eric Sandeen wrote:
> Dave Chinner wrote:
> 
> ...
> 
> > Actually, 3.1.0 was the first release with the fix to xfs_db that
> > prevents this problem.
> > 
> > Cheers,
> > 
> > Dave.
> 
> not so sure:

Yeah, you are right. I was thinking that xfs_db did the feature bit
modifications, then repair just fixed up the accounting. but repair
does both in this case. I should remember code that I wrote years
ago, but for some reason it all seems to be a little bit hazy...

Let me go look at your repair patch again ;)

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] 7+ messages in thread

* Re: Enabling lazy counters damages filesystem
  2010-04-29  2:05       ` Dave Chinner
@ 2010-04-29  8:03         ` Marcin Mirosław
  0 siblings, 0 replies; 7+ messages in thread
From: Marcin Mirosław @ 2010-04-29  8:03 UTC (permalink / raw)
  To: xfs

W dniu 29.04.2010 04:05, Dave Chinner pisze:
> Yeah, you are right. I was thinking that xfs_db did the feature bit
> modifications, then repair just fixed up the accounting. but repair
> does both in this case. I should remember code that I wrote years
> ago, but for some reason it all seems to be a little bit hazy...
> 
> Let me go look at your repair patch again ;)

Hi,
Eric, Dave, thank you for quick replay and patch. Patch solves problem
for me:)
Regards!
Marcin

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

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

end of thread, other threads:[~2010-04-29  8:01 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-04-28 14:34 Enabling lazy counters damages filesystem Marcin Mirosław
2010-04-28 21:40 ` Eric Sandeen
2010-04-28 23:04 ` Dave Chinner
2010-04-29  1:43   ` Dave Chinner
2010-04-29  1:51     ` Eric Sandeen
2010-04-29  2:05       ` Dave Chinner
2010-04-29  8:03         ` Marcin Mirosław

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