We keep the extents (not nescessarily sorted) in the extents
array. For faster searches, index keeps an index into
extents in an AVL tree.
In addition
to the extents themselves, some bookkeeping members are added. The most
important is the timestamp member, used to make sure no handle in
its list gets reused before it should. __size is only used
internally, keeping track of how big extents is.
struct extentlist {
int64_t __size;
int64_t num_extents;
int64_t num_handles;
struct timeval timestamp;
struct extent * extents;
};