Skip to contentSkip to conversation

New: chattr sticky behaviour and Orlov block allocator

Bug 9866 Andrew Morton 1 participant 1 message Feb 1, 2008 1 message not in the archive

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]/

#1 lore raw
Quoted 70 lines · 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

Signature · 3 lines
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.