2008-02-01 18:28:19

by Andrew Morton

[permalink] [raw]
Subject: Re: [Bug 9866] New: chattr sticky behaviour and Orlov block allocator

On Fri, 1 Feb 2008 07:25:09 -0800 (PST) [email protected] wrote:

> http://bugzilla.kernel.org/show_bug.cgi?id=9866
>
> Summary: chattr sticky behaviour and Orlov block allocator
> Product: File System
> Version: 2.5
> KernelVersion: 2.6.22
> Platform: All
> OS/Version: Linux
> Tree: Mainline
> Status: NEW
> Severity: normal
> Priority: P1
> Component: ext3
> AssignedTo: [email protected]
> ReportedBy: [email protected]
>
>
> Latest working kernel version: 2.6.22
> Earliest failing kernel version: 2.6.18 (oldest tested)
> Distribution: Ubuntu Gutsy
> Hardware Environment: Fujitsu Siemens C1110 laptop
> Software Environment: chattr 1.40.2 (12-Jul-2007), mke2fs 1.40.2 (12-Jul-2007)
> Problem Description:
> Some file attributes have sticky behaviour in ext2/3 whereas I believe
> it should not. Namely, a directory marked with chattr +T serves "to be
> the top of directory hierarchies for the purposes of the Orlov block
> allocator", as the manpage says.
>
> It seems wrong that subdirectories stickily inherit the +T flag: they
> are obviously not top-level! Even files get the T attribute this way,
> even though the chattr manpages only documents it for directories.
>
> References:
> http://lwn.net/Articles/14633/
> http://lwn.net/Articles/14447/ Theodore Ts'o ext3 patch
> http://en.wikipedia.org/wiki/Orlov_block_allocator
>
>
> Steps to reproduce:
> The following shows the sticky behaviour:
> $ mkdir tests
> chattr -V +T tests
> chattr 1.40.2 (12-Jul-2007)
> Flags von tests wie folgt gesetzt: ----------------T-
> $ mkdir tests/src
> $ cp -dp /etc/fstab tests/src
> $ lsattr . tests tests/src
> ----------------T- ./tests
> ----------------T- tests/src
> ----------------T- tests/src/fstab
>
> I verified (using cp -dpr and ls -lifR) that indeed, the inherited T
> attribute causes all subdirectories to be created in inodes far apart
> (like with mount -o remount,oldalloc), whereas the Orlov allocator
> normally would put the directories next to each other. My expectation
> is that only e.g. /home/user{1,2,3,4,5,6} should be created spread
> out, whereas each user home's contents would be next each other
> (/home/user1/{foo,bar,etc}).
>
> The effect of this bug makes chattr +T unusable, because Orlov
> optimization is de facto eliminated.
>
> Regards,
> J?rg H?hle
>
>
> --
> Configure bugmail: http://bugzilla.kernel.org/userprefs.cgi?tab=email
> ------- You are receiving this mail because: -------
> You are the assignee for the bug, or are watching the assignee.