Bug 48251

Summary: Sorting directory entries
Product: File System Reporter: Pavel Samsonov (tux2002)
Component: ext3Assignee: fs_ext3 (fs_ext3)
Status: CLOSED INVALID    
Severity: normal CC: tytso
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: Subsystem:
Regression: No Bisected commit-id:

Description Pavel Samsonov 2012-10-03 15:46:09 UTC
Good day!
Why the directory entries in directory not listed (without sorting) in same order that been created? I mean that directory like file with append writing mode.
I have some tasks, when this is important.
Thanks!
Comment 1 Theodore Tso 2012-10-03 16:29:50 UTC
There is never a guarantee that directory entries are listed in the same order that they are created.  If you are writing a program where you are making this assumption --- don't.  It's something which has never been true, for any file system.

With ext3 if the directory hashing feature is enabled (which it is by default), the directory entries are returned in hash order.  This was needed so we could meet POSIX requirements for how readdir() behaves in the face of telldir() and seekdir(), as well as files being created while iterating through the directory entries using readdir().  (The short version is once you use a tree, if you do a node split due to a file being created, and where half of the directory entries in the node are copied to a new leaf block, it still must be the case that each directory entry which was created before starting the readdir() pass must be returned once and only once.   In order to guarantee this, we traverse the tree in hash order.)

If you disable the directory hashing feature, then the files will be returned _roughly_ in creation order; however, once you start deleting directory entries, new files can get inserted into the unallocated portion of the directory, which means readdir() won't be returning the files in creation order, even though previously it would appear to be returning files in creation order before any files had been deleted.
Comment 2 Pavel Samsonov 2012-10-03 16:53:26 UTC
Thanks, I give with you help needed result.