full_path.reserve(get_base_path().size() + 6 + oid.hobj.oid.name.size() + 10 + 1 + oid.hobj.get_key().size() + 2 + 1 + 14 + oid.hobj.nspace.size() + 1 + 8);


+6 is added to accommodate one level of dir split i.e <base_path> /DIR_E/

10+1 is added if the objid has the special characters those replaced by bigger ones in append_escape()

2 + 1 is for the appending ‘_’

14 = pool number (long long) + obj hash (int) + ‘_’

8 = generation + shard id

Understand this is the best guess for the io path only.