]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
os/bluestore: Fix Blob::copy_extents function 54897/head
authorAdam Kupczyk <akupczyk@ibm.com>
Thu, 14 Dec 2023 09:38:08 +0000 (09:38 +0000)
committerAdam Kupczyk <akupczyk@ibm.com>
Thu, 14 Dec 2023 09:38:08 +0000 (09:38 +0000)
commit0e43e691fbf84ba140f7aca68f475c46bb96f4df
treed0886109b76a5dcf042f751a7fc048c9180775c7
parent725b583234585099f22fbe1a1073cfea220835cd
os/bluestore: Fix Blob::copy_extents function

The function had an error, that it assumed its smallest operational block is allocation unit.
In reality, the smallest block is min_release_size, that is a max(allocation size, checksum size).
In some wierd cases single min_release_size block could be composed of *disjointed*
allocation on the disk. This is something that bitmap allocator does often.

Blob::copy_extents could not handle it properly, but luckily, it asserted when faced with that data.

New fixed and improved version is able to handle this case too.

Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
src/os/bluestore/BlueStore.cc