• Hans van Kranenburg's avatar
    Btrfs: btrfs_ioctl_search_key documentation · 1a63143d
    Hans van Kranenburg authored
    A programmer who is trying to implement calling the btrfs SEARCH
    or SEARCH_V2 ioctl will probably soon end up reading this struct
    definition.
    
    Properly document the input fields to prevent common misconceptions:
     1. The search space is linear, not 3 dimensional. The invidual min/max
     values for objectid, type and offset cannot be used to filter the
     result, they only define the endpoints of an interval.
     2. The transaction id (a.k.a. generation) filter applies only on
     transaction id of the last COW operation on a whole metadata page, not
     on individual items.
    
    Ad 1. The first misunderstanding was helped by the previous misleading
    comments on min/max type and offset:
      "keys returned will be >= min and <= max".
    
    Ad 2. For example, running btrfs balance will happily cause rewriting of
    metadata pages that contain a filesystem tree of a read only subvolume,
    causing transids to be increased.
    
    Also, improve descriptions of tree_id and nr_items and add in/out
    annotations.
    Signed-off-by: default avatarHans van Kranenburg <hans.van.kranenburg@mendix.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    1a63143d
btrfs.h 25.6 KB