Skip to contentSkip to conversation

directory order of files

DISCUSSION Edmund GRIMLEY EVANS 5 participants 5 messages Jun 29, 2001

lore
Share & tools
lore
#0 lore raw

With Linux ext2, and some other systems, when you create files in a new directory, the file system remembers their order:

$ mkdir new
$ cd new
$ touch one two three four
$ ls -U
one  two  three  four

(1) Is there any standard that says a system should behave this way? Is there any software that depends on this behaviour?

(2) Are there Linux file systems that don't work this way? Maybe someone with a mounted writable reiserfs could do a quick check.

Please copy replies to me as I am not subscribed. Thanks.

Edmund

#1 lore raw
Quoted 2 lines

With Linux ext2, and some other systems, when you create files in a new directory, the file system remembers their order:

No - it merely seems too.

Quoted 3 lines
$ touch one two three four
$ ls -U
one  two  three  four

Then try 'rm three; touch five'

Quoted 3 lines

(1) Is there any standard that says a system should behave this way? Is there any software that depends on this behaviour?

The order is arbitary.

#2 lore raw
Quoted 10 lines · Alan Cox
Quoted 2 lines

With Linux ext2, and some other systems, when you create files in a new directory, the file system remembers their order:

No - it merely seems too.

Quoted 3 lines
$ touch one two three four
$ ls -U
one  two  three  four

Then try 'rm three; touch five'

Moreover, it isn't true even for the case when we create a list of files in empty directory. Example: assuming that /tmp has 1Kb blocks,

mkdir /tmp/A
cd A
touch perl -e 'print "a"x255'
touch perl -e 'print "b"x255'
touch perl -e 'print "c"x255'
touch perl -e 'print "d"x255'
touch A
ls -U

will give you (lots of a) (lots of b) (lots of c) A (lots of d).

With 4Kb blocks you'll need 16 long names instead of 4 - the effect will be the same.

The reason is quite simple - at some point you get no space for long name and it goes into the next directory block, but there's still enough for a short name, so it gets created in the first block.

IOW, there's no warranties at all.

#3 lore raw
In reply to Edmund GRIMLEY EVANS
Quoted 4 lines · Edmund GRIMLEY EVANS

With Linux ext2, and some other systems, when you create files in a new directory, the file system remembers their order:

Quoted 8 lines
$ mkdir new
$ cd new
$ touch one two three four
$ ls -U
one  two  three  four

(1) Is there any standard that says a system should behave this way? Is there any software that depends on this behaviour?

Unix filesystem hierarchies are defined to be a partial ordering, not a full ordering.

Quoted 5 lines

(2) Are there Linux file systems that don't work this way? Maybe someone with a mounted writable reiserfs could do a quick check.

Please copy replies to me as I am not subscribed. Thanks.

bash-2.05# mkdir fu
bash-2.05# cd fu
bash-2.05# touch one two three four
bash-2.05# ls -U
one two four three

Hans

#4 lore raw
In reply to Edmund GRIMLEY EVANS

on reiserfs ls -U show soething like:

one two four three

Quoted 24 lines · Edmund GRIMLEY EVANS

With Linux ext2, and some other systems, when you create files in a new directory, the file system remembers their order:

$ mkdir new
$ cd new
$ touch one two three four
$ ls -U
one  two  three  four

(1) Is there any standard that says a system should behave this way? Is there any software that depends on this behaviour?

(2) Are there Linux file systems that don't work this way? Maybe someone with a mounted writable reiserfs could do a quick check.

Please copy replies to me as I am not subscribed. Thanks.

Edmund
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/