Messages in this thread | | | Date | Fri, 11 Jan 2008 08:39:16 +0100 (CET) | From | Mikulas Patocka <> | Subject | Re: [PATCH][RFC] fast file mapping for loop |
| |
> So I looked at the code - it seems you build a full extent of the blocks > in the file, filling holes as you go along. I initally did that as well, > but that is to slow to be usable in real life. > > You also don't support sparse files, falling back to normal fs > read/write paths. Supporting sparse files properly is a must, people > generally don't want to prealloc a huge disk backing.
How would you do sparse file support with passthrough loopback that doesn't use pagecache?
Holes are allocated at get_block function provided by each filesystem and the function gets a buffer that is supposed to be in the pagecache. Now if you want to allocate holes without pagecache, there's a problem --- new interface to all filesystems is needed.
It could be possible to use pagecache interface for filling holes and passthrough interface for other requests --- but get_block is allowed to move other blocks on the filesystem (and on UFS it really does), so calling get_block to fill a hole could move other unrelated blocks which would result in desychronized block map and corruption of both filesystems.
Mikulas
| |