Use Btrfs Generations To Speed Up Scan On Startup


andoma

Recommended Posts

It would be really nice if btsync could utilize btrfs generations to quickly refresh its internal database upon startup.

 

Btrfs, being a copy-on-write filesystem, have built-in features to quickly list changes to the file system since a given point in time (generation)

 

Example:

 

root@skytown:/storage/media# btrfs subvolume show  .
/storage/media
Name: media
uuid: 6cde316a-1cad-4f41-a718-30a45292f9b6
Parent uuid: -
Creation time: 2014-05-04 07:15:24
Object ID: 257
Generation (Gen): 959
Gen at creation: 6
Parent: 5
Top Level: 5
Flags: -
Snapshot(s):
 
We're currently at generation 959, then i write to a file.
 
 root@skytown:/storage/media# echo foo > Music/Other/test
 
After the transaction have committed (which it always does after 30 seconds, or due to sync() or umount, etc) we can query the filesystem for files that have changed since (a very fast operation compared to scanning the entire hierarchy) :
 
root@skytown:/storage/media# btrfs subvolume find-new . 959
inode 65807 file offset 0 len 4 disk start 0 offset 0 gen 1021 flags INLINE Music/Other/test
transid marker was 1021
 
and we are now at generation 1021.
 
I think it would be possible for btsync to utilize the btrfs generations to quickly refresh its internal state rather than having to scan the entire filesystem on startup.
 
Please consider adding support for this, it would be super awesome.
 
 
 
Link to post
Share on other sites

Archived

This topic is now archived and is closed to further replies.