summaryrefslogtreecommitdiff
path: root/drivers/sfi
diff options
context:
space:
mode:
authorJosh Durgin <josh.durgin@inktank.com>2014-04-08 11:12:11 -0700
committerIlya Dryomov <idryomov@redhat.com>2014-10-14 21:03:27 +0400
commit4e752f0ab0e8114f4edd7574081dc625d679dd15 (patch)
tree80ef03b61b96c8eacf052607f28fcea03d5cce9f /drivers/sfi
parent7dd440c9e0711d828442c3e129ab8bcb9aeeac23 (diff)
rbd: access snapshot context and mapping size safely
These fields may both change while the image is mapped if a snapshot is created or deleted or the image is resized. They are guarded by rbd_dev->header_rwsem, so hold that while reading them, and store a local copy to refer to outside of the critical section. The local copy will stay consistent since the snapshot context is reference counted, and the mapping size is just a u64. This prevents torn loads from giving us inconsistent values. Move reading header.snapc into the caller of rbd_img_request_create() so that we only need to take the semaphore once. The read-only caller, rbd_parent_request_create() can just pass NULL for snapc, since the snapshot context is only relevant for writes. Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
Diffstat (limited to 'drivers/sfi')
0 files changed, 0 insertions, 0 deletions