Messages in this thread | | | Subject | Re: [PATCH] cowlinks v2 | From | (Eric W. Biederman) | Date | 21 Mar 2004 17:18:41 -0700 |
| |
Jörn Engel <joern@wohnheim.fh-wedel.de> writes:
> On Sun, 21 March 2004 09:59:39 -0800, Davide Libenzi wrote: > > > > When I did that, fumes of an in-kernel implementation invaded my head for > > a little while. Then you start thinking that you have to teach apps of new > > open(2) semantics, you have to bloat kernel code a little bit and you have > > to deal with a new set of errors cases that open(2) is not expected to > > deal with. A fully userspace implementation did fit my needs at that time, > > even if the LD_PRELOAD trick might break if weak aliases setup for open > > functions change inside glibc. > > 209 fairly simple lines definitely have more appear than a full > in-kernel implementation with many new corner-cases, yes. But it > looks as if you ignore the -ENOSPC case, so you cheated a little. ;) > > No matter how you try, there is no way around an additional return > code for open(), so we have to break compatibility anyway. The good > news is that a) people not using this feature won't notice and b) all > programs I tried so far can deal with the problem. Vim even has a > decent error message - as if my patch was anticipated already.
Actually there is... You don't do the copy until an actual write occurs. Some files are opened read/write when there is simply the chance they might be written to so delaying the copy is generally a win.
A coworker of mine implemented a version of this idea as a filesystem. It did the copy in the kernel, it handled directories, and could be used to atomically snapshot your filesystem. The only case that was still a little sketchy was how do you handle cow to a file with hard links.
The interesting case for us is when you have multiple machines sharing the same root filesystem.
Eric - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |