bug fix: osd: do not cache unused buffer in attrs
attrs only reference the origin bufferlist (decode from MOSDPGPush or
ECSubReadReply message) whose size is much greater than attrs in recovery.
If obc cache it (get_obc maybe cache the attr), this causes the whole origin
bufferlist would not be free until obc is evicted from obc cache. So rebuild
the bufferlist before cache it.
Fixes: #12565
Signed-off-by: Ning Yao <zay11022@gmail.com>
Signed-off-by: Xinze Chi <xmdxcxz@gmail.com>
(cherry picked from commit
c5895d3fad9da0ab7f05f134c49e22795d5c61f3)