int befs_find_key (struct super_block * sb, befs_btree_node * node, const char * findkey, befs_off_t * value);
finds exact match if one exists, and returns BEFS_BT_MATCH If no exact match, finds first key in node that is greater (alphabetically) than the search key and returns BEFS_BT_PARMATCH (for partial match, I guess). Can you think of something better to call it?
If no key was a match or greater than the search key, return BEFS_BT_NOT_FOUND.
Use binary search instead of a linear.