2 For reads, only the object extent needs to be reverse mapped:
4 $ rbd create --size 5M img
5 $ DEV=$(sudo rbd map img)
6 $ xfs_io -c 'pwrite 0 5M' $DEV >/dev/null
8 $ rbd snap create img@snap
9 $ rbd snap protect img@snap
10 $ rbd clone img@snap cloneimg
11 $ rbd resize --no-progress --size 12M cloneimg
12 $ DEV=$(sudo rbd map cloneimg)
14 0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
16 0500000 0000 0000 0000 0000 0000 0000 0000 0000
19 $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
20 0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
22 0500000 0000 0000 0000 0000 0000 0000 0000 0000
26 $ rbd rm --no-progress cloneimg
27 $ rbd snap unprotect img@snap
28 $ rbd snap rm --no-progress img@snap
29 $ rbd rm --no-progress img
31 For writes, the entire object needs to be reverse mapped:
33 $ rbd create --size 2M img
34 $ DEV=$(sudo rbd map img)
35 $ xfs_io -c 'pwrite 0 1M' $DEV >/dev/null
37 $ rbd snap create img@snap
38 $ rbd snap protect img@snap
39 $ rbd clone img@snap cloneimg
40 $ rbd resize --no-progress --size 8M cloneimg
41 $ DEV=$(sudo rbd map cloneimg)
42 $ xfs_io -c 'pwrite -S 0xef 3M 1M' $DEV >/dev/null
44 0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
46 0100000 0000 0000 0000 0000 0000 0000 0000 0000
48 0300000 efef efef efef efef efef efef efef efef
50 0400000 0000 0000 0000 0000 0000 0000 0000 0000
54 $ DEV=$(sudo rbd map cloneimg)
56 0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
58 0100000 0000 0000 0000 0000 0000 0000 0000 0000
60 0300000 efef efef efef efef efef efef efef efef
62 0400000 0000 0000 0000 0000 0000 0000 0000 0000
66 $ rbd rm --no-progress cloneimg
67 $ rbd snap unprotect img@snap
68 $ rbd snap rm --no-progress img@snap
69 $ rbd rm --no-progress img