Re: [RFC PATCH 0/2] Union Mount: Directory listing in glibc

Erez Zadok
2008-04-29T16:07:52Z

In message <20080429133201.GA9938@localhost.localdomain>, bsn.0007@gmail.com writes:
> Hi,
>
> I went through Bharata's RFC post on glibc based Union Mount readdir solution
> (http://lkml.org/lkml/2008/3/11/34) and have come up with patches
> against glibc to implement the same.
[...]

The last set of discussions on glibc support ended, as I understood it, with
the glibc people objecting to such "special-purpose" code in glibc. See
<http://lkml.org/lkml/2008/3/11/66>. So has anything changed behind the
scenes, or is this idea unlikely to be merged into glibc any time soon, if
ever. (Personally I'd love to rip out the readdir-related code from unionfs
if glibc supported the same.)

> Patch 1. readdir support for union mounted directories.
> I am caching the dirent names in a list to aid duplicate elimination.
> And this cache is stored in DIRP. For duplicate elimination I am using
> strcmp(). I am not sure if this works universally with different types
> of filesystems. Any suggestions here would be welcome.
[...]

You might consider using a hash table instead of a list; it'll be faster in
case where there are a lot of whiteouts/duplicates to process.

Also, I'll reiterate my previous concern that I think you may need to also
handle "opaque directories". See the discussion in section 5.1 "Creation
and deletion of whiteouts", in the original union mounts paper:

<http://www.usenix.org/publications/library/proceedings/neworl/full_papers/mckusick.a>

Cheers,
Erez.