Arnd Bergmann:I will try explain individually. Here are what I implemented in AUFS. Any comments are welcome. Aufs has three levels of detecting the direct-access to the lower (branch) filesystems (ie. bypassing aufs). I guess the most strict level is a good answer for your question. It is based on the inotify feature. Aufs sets inotify-watch to every accessed directories on lower fs. During those inodes are cached, aufs receives the inotify event for thier children/files and marks the aufs data for the file is obsoleted. When the file is accessed later, aufs retrives the latest inode (or dentry) again. The inotify-watch will be removed when the aufs dir inode is discarded from cache. Aufs has its own dentry and inode object as normal fs has. And they have pointers to the corresponding ones on the lower fs. If you make a union from two real filesystems, then aufs inode will have (at most) two pointers as its private data. Do you mean having pointers is a duplicataion? Yes, that's right. Aufs reserves ".wh." as a whiteout prefix, and prohibits users to handle such filename inside aufs. It might be a problem as you wrote, but users can create/remove them directly on the lower fs and I have never received request about this reserved prefix. Aufs readdir operation consumes memory, but it is not stack. If it was implemented as a recursive function, it might cause the stack overflow. But actually it is a loop. The memory is used for stroing entry names and eliminating whiteout-ed ones, and the result will be cached for a specified time. So the memory (other than stack) will be consumed. Probably you are right. Initially aufs had only one policy to select the writable branch. But several users requested another policy such as round-robin or most-free-spece, and aufs has implemented them. I don't guess uers will be confused by these policies. While I tried it should be simple, I guess some people will say it is complex. Junjiro Okajima --
| Greg Kroah-Hartman | [PATCH 002/196] Chinese: rephrase English introduction in HOWTO |
| Tarkan Erimer | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
| Andrew Morton | Re: -mm merge plans for 2.6.23 -- sys_fallocate |
| Greg KH | Re: [AppArmor 39/45] AppArmor: Profile loading and manipulation, pathname matching |
git: | |
| Gerrit Renker | [PATCH 03/37] dccp: List management for new feature negotiation |
| Arjan van de Ven | Re: [GIT]: Networking |
| Jarek Poplawski | Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Jarek Poplawski | Re: [BUG] New Kernel Bugs |
