2 For reads, only the object extent needs to be reverse mapped:
4 $ rbd create --size 20M img
5 $ DEV=$(sudo rbd map img)
6 $ xfs_io -c 'pwrite 0 20M' $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 5M --allow-shrink cloneimg
12 $ rbd resize --no-progress --size 20M cloneimg
13 $ DEV=$(sudo rbd map cloneimg)
15 0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
17 0500000 0000 0000 0000 0000 0000 0000 0000 0000
21 $ rbd rm --no-progress cloneimg
22 $ rbd snap unprotect img@snap
23 $ rbd snap rm --no-progress img@snap
24 $ rbd rm --no-progress img
26 For writes, the entire object needs to be reverse mapped:
28 $ rbd create --size 2M img
29 $ DEV=$(sudo rbd map img)
30 $ xfs_io -c 'pwrite 0 1M' $DEV >/dev/null
32 $ rbd snap create img@snap
33 $ rbd snap protect img@snap
34 $ rbd clone img@snap cloneimg
35 $ rbd resize --no-progress --size 8M cloneimg
36 $ DEV=$(sudo rbd map cloneimg)
37 $ xfs_io -c 'pwrite -S 0xef 3M 1M' $DEV >/dev/null
39 0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
41 0100000 0000 0000 0000 0000 0000 0000 0000 0000
43 0300000 efef efef efef efef efef efef efef efef
45 0400000 0000 0000 0000 0000 0000 0000 0000 0000
49 $ DEV=$(sudo rbd map cloneimg)
51 0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
53 0100000 0000 0000 0000 0000 0000 0000 0000 0000
55 0300000 efef efef efef efef efef efef efef efef
57 0400000 0000 0000 0000 0000 0000 0000 0000 0000
61 $ rbd rm --no-progress cloneimg
62 $ rbd snap unprotect img@snap
63 $ rbd snap rm --no-progress img@snap
64 $ rbd rm --no-progress img