See note above about performance with small buffer sizes. This method currently assumes that the "optimal" buffer size is the FS block size, which doesn't actually seem to be true.