I only used bufferptr over bufferlist because I did not see the need for a bufferlist since a chunk is not split. It also looks useful to do a 

   bufferptr chunk(ptr, (*j) * chunk_length, chunk_length);

as in https://github.com/dachary/ceph/commit/5e46e8f96641b02a1c5ac573c62e41d5921b098c#L1R67 and bufferlist does not have such a constructor. 
If that does not seem particularly useful to you I'm happy to switch to using bufferlists instead of bufferptr.