From patchwork Tue Oct 9 21:00:36 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Elder X-Patchwork-Id: 1571581 Return-Path: X-Original-To: patchwork-ceph-devel@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork2.kernel.org (Postfix) with ESMTP id 592B0DFFAD for ; Tue, 9 Oct 2012 21:00:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755988Ab2JIVAk (ORCPT ); Tue, 9 Oct 2012 17:00:40 -0400 Received: from mail-pb0-f46.google.com ([209.85.160.46]:52304 "EHLO mail-pb0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752109Ab2JIVAj (ORCPT ); Tue, 9 Oct 2012 17:00:39 -0400 Received: by mail-pb0-f46.google.com with SMTP id rr4so5661307pbb.19 for ; Tue, 09 Oct 2012 14:00:39 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type:content-transfer-encoding :x-gm-message-state; bh=QDV4nOlkqeEzdrKBcDFe34M8gry0ZqkGlcUn86aMGe0=; b=kc24cd+uvRrHXfHc29Py8xZzIXzt0hns8cGcl6rK8oj+TmvP5MZMnUyJwv6//5N/Tn kvW0sqxlw9JqxDgCETMtwtnBA/TYb7Jor6y/DdgcEOqKIdHKHIe13IPtuuieJkVpv9ut 8gbyReFrMou/G9+l77S1dxG2xvcGjrkK5PizT6TrVGTu/wz1Qs/T+3St63FXoqK4sDl/ thspn7ag3xKmK4JDMbPeOBAigduIoiqgp1QkdvYrbTB5WTw5mkZLoxhk/QG5aNbNfd+k ijp+hnewpvwl7dgOYfC36Vs/5bUIaV6845pCirz+cF3a9UK4ZLG7xjbN3Qg4RrV7bcu7 oZog== Received: by 10.68.222.138 with SMTP id qm10mr63162462pbc.129.1349816439151; Tue, 09 Oct 2012 14:00:39 -0700 (PDT) Received: from ?IPv6:2607:f298:a:607:4823:f93f:93c7:61da? ([2607:f298:a:607:4823:f93f:93c7:61da]) by mx.google.com with ESMTPS id qq1sm12686074pbc.74.2012.10.09.14.00.37 (version=SSLv3 cipher=OTHER); Tue, 09 Oct 2012 14:00:37 -0700 (PDT) Message-ID: <50749074.5030603@inktank.com> Date: Tue, 09 Oct 2012 14:00:36 -0700 From: Alex Elder User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120912 Thunderbird/15.0.1 MIME-Version: 1.0 To: ceph-devel@vger.kernel.org Subject: [PATCH 1/4] rbd: define rbd_update_size() References: <50748FA5.4030508@inktank.com> In-Reply-To: <50748FA5.4030508@inktank.com> X-Gm-Message-State: ALoCoQlP/44R/zMZycFadDYdwCcqjkdXFQEN7LN12mz0QUvgd1d/ugwRwlXkeVm+gUygFQonVbie Sender: ceph-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: ceph-devel@vger.kernel.org Encapsulate the code that handles the case where an image's size has been found to have changed. This is done in anticipation of the next patch, which will make this common code for format 1 and 2 images. Signed-off-by: Alex Elder --- drivers/block/rbd.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) */ @@ -1731,15 +1741,9 @@ static int __rbd_refresh_header(struct rbd_device *rbd_dev, u64 *hver) down_write(&rbd_dev->header_rwsem); /* resized? */ - if (rbd_dev->mapping.snap_id == CEPH_NOSNAP) { - sector_t size = (sector_t) h.image_size / SECTOR_SIZE; - - if (size != (sector_t) rbd_dev->mapping.size) { - dout("setting size to %llu sectors", - (unsigned long long) size); - rbd_dev->mapping.size = (u64) size; - set_capacity(rbd_dev->disk, size); - } + if (rbd_dev->header.image_size != h.image_size) { + rbd_dev->header.image_size = h.image_size; + rbd_update_size(rbd_dev); } /* rbd_dev->header.object_prefix shouldn't change */ diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c index bb3d9be..d36e6d7 100644 --- a/drivers/block/rbd.c +++ b/drivers/block/rbd.c @@ -1716,6 +1716,16 @@ static void __rbd_remove_all_snaps(struct rbd_device *rbd_dev) __rbd_remove_snap_dev(snap); } +static void rbd_update_size(struct rbd_device *rbd_dev) +{ + sector_t size = (sector_t) rbd_dev->header.image_size / SECTOR_SIZE; + + rbd_assert(rbd_dev->mapping.snap_id == CEPH_NOSNAP); + dout("setting size to %llu sectors", (unsigned long long) size); + rbd_dev->mapping.size = (u64) size; + set_capacity(rbd_dev->disk, size); +} + /* * only read the first part of the ondisk header, without the snaps info