[Btrfs-devel] 3 thoughts about important and outstanding features
Jan Engelhardt
jengelh at computergmbh.de
Mon Jan 21 08:58:00 PST 2008
On Jan 21 2008 11:46, Chris Mason wrote:
>>
>> So basically I'm looking for functions to:
>> - insert a chunk into a file
>> - delete a chunk from a file
>> - move a chunk from one file into another
>
>Like most filesystems, btrfs stores metadata for extents keyed by the offset
>into the file. So, in order to insert one byte in the middle of the file,
>you have to change all of the extent pointers after that byte in the file by
>one. This can be slow, although it is certainly faster than copying all the
>data.
>
>It is very hard to provide slicing operations in place due to races with
>truncate. I'm not eager to dive into all of those corner cases.
Would not it work if we just lock the full inode? In other words...
int btrfs_slicemenice(...)
{
lock(inode->i_something);
/* possibly length slice operation */
slice();
unlock(inode->i_something);
}
int btrfs_truncate(...)
{
lock(inode->i_something);
inode->i_size = smaller;
more_functions(inode);
unlock();
}
More information about the Btrfs-devel
mailing list