diff options
author | Josh Durgin <josh.durgin@inktank.com> | 2011-11-21 20:13:54 -0500 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2012-07-30 21:15:37 -0400 |
commit | 474ef7ce832d471148f63a9d07f67fc5564834f1 (patch) | |
tree | 2741be10d318adfde0e044f4c31eb2b94840c2cf | |
parent | e88a36ec961b8c1899c59c5e4ae35a318c0209d3 (diff) |
rbd: only reset capacity when pointing to head
Snapshots cannot be resized, and the new capacity of head should not
be reflected by the snapshot.
Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
Reviewed-by: Alex Elder <elder@inktank.com>
-rw-r--r-- | drivers/block/rbd.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c index 730d0ce505e1..f171cebabda9 100644 --- a/drivers/block/rbd.c +++ b/drivers/block/rbd.c | |||
@@ -1725,7 +1725,12 @@ static int __rbd_refresh_header(struct rbd_device *rbd_dev) | |||
1725 | return ret; | 1725 | return ret; |
1726 | 1726 | ||
1727 | /* resized? */ | 1727 | /* resized? */ |
1728 | set_capacity(rbd_dev->disk, h.image_size / SECTOR_SIZE); | 1728 | if (rbd_dev->snap_id == CEPH_NOSNAP) { |
1729 | sector_t size = (sector_t) h.image_size / SECTOR_SIZE; | ||
1730 | |||
1731 | dout("setting size to %llu sectors", (unsigned long long) size); | ||
1732 | set_capacity(rbd_dev->disk, size); | ||
1733 | } | ||
1729 | 1734 | ||
1730 | down_write(&rbd_dev->header_rwsem); | 1735 | down_write(&rbd_dev->header_rwsem); |
1731 | 1736 | ||