From: Josh Durgin Date: Tue, 8 Apr 2014 18:12:11 +0000 (-0700) Subject: rbd: access snapshot context and mapping size safely X-Git-Tag: fixes-against-v3.18-rc2~71^2~29 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4e752f0ab0e8114f4edd7574081dc625d679dd15;p=pandora-kernel.git 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 --- Reading git-diff-tree failed