diff options
author | Josh Durgin <josh.durgin@dreamhost.com> | 2011-12-05 13:47:13 -0500 |
---|---|---|
committer | Alex Elder <elder@dreamhost.com> | 2012-05-14 13:12:46 -0400 |
commit | 403f24d3d51760a8b9368d595fa5f48c309f1a0f (patch) | |
tree | 672324db44b12186b91235f293b971bb00cf377d /drivers/block | |
parent | 50f7c4c967d0b5acd8e7ba6ab654dc4a7ac869ac (diff) |
rbd: protect read of snapshot sequence number
This is updated whenever a snapshot is added or deleted, and the
snapc pointer is changed with every refresh of the header.
Signed-off-by: Josh Durgin <josh.durgin@dreamhost.com>
Reviewed-by: Alex Elder <elder@dreamhost.com>
Reviewed-by: Yehuda Sadeh <yehuda@hq.newdream.net>
Diffstat (limited to 'drivers/block')
-rw-r--r-- | drivers/block/rbd.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c index a75fe93a25b1..5ab9f55d3e0c 100644 --- a/drivers/block/rbd.c +++ b/drivers/block/rbd.c | |||
@@ -1684,7 +1684,9 @@ static int rbd_header_add_snap(struct rbd_device *dev, | |||
1684 | if (ret < 0) | 1684 | if (ret < 0) |
1685 | return ret; | 1685 | return ret; |
1686 | 1686 | ||
1687 | dev->header.snapc->seq = new_snapid; | 1687 | down_write(&dev->header_rwsem); |
1688 | dev->header.snapc->seq = new_snapid; | ||
1689 | up_write(&dev->header_rwsem); | ||
1688 | 1690 | ||
1689 | return 0; | 1691 | return 0; |
1690 | bad: | 1692 | bad: |