From patchwork Fri Sep 7 21:15:25 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Elder X-Patchwork-Id: 1425181 Return-Path: X-Original-To: patchwork-ceph-devel@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork1.kernel.org (Postfix) with ESMTP id 6DDDA3FC71 for ; Fri, 7 Sep 2012 21:15:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756864Ab2IGVP3 (ORCPT ); Fri, 7 Sep 2012 17:15:29 -0400 Received: from mail-ie0-f174.google.com ([209.85.223.174]:45931 "EHLO mail-ie0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756453Ab2IGVP2 (ORCPT ); Fri, 7 Sep 2012 17:15:28 -0400 Received: by ieje11 with SMTP id e11so43209iej.19 for ; Fri, 07 Sep 2012 14:15:28 -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=bJlryAZFf1ZjqRnyStFOKrh2R4agL5YmE208U9yZvxI=; b=UA/dmdW9UiNCH9z+QgUDe1UIxjYPQ9mpM920w6HKnL8TNMSUmhV+nnHTRH1c3oh8jI Mipfm0OarqCW4M9wIx8liZxN7Y82XrYvOjKmmuQGjj9hXKLdvpEAZIgHFIFUyXrfXepC a1qdSxVolw8njsSGO+1JRfKrp23tOcwN7IrzFAmnXC7N6Z0Fpw38+ZZkyGwYN0AIsXHB uZ7897ZRU5B5h542NGIi6fXnbRE2ssp2iTwZNoFFbNQu6oA3Pux1BsB2XB2emoujwRg8 GKGnI8d+gsnsvtlja4/hbwIt1JnRtorgB6aUpEUtQKx1Aaz9M8vUx3kzpXIj15+lp7Yc 4qxQ== Received: by 10.50.209.99 with SMTP id ml3mr611724igc.31.1347052528401; Fri, 07 Sep 2012 14:15:28 -0700 (PDT) Received: from [172.22.22.4] (c-71-195-31-37.hsd1.mn.comcast.net. [71.195.31.37]) by mx.google.com with ESMTPS id c5sm502800igj.6.2012.09.07.14.15.26 (version=SSLv3 cipher=OTHER); Fri, 07 Sep 2012 14:15:26 -0700 (PDT) Message-ID: <504A63ED.5070008@inktank.com> Date: Fri, 07 Sep 2012 16:15:25 -0500 From: Alex Elder User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120827 Thunderbird/15.0 MIME-Version: 1.0 To: ceph-devel@vger.kernel.org Subject: [PATCH 7/9] rbd: update remaining header fields for v2 References: <504A6273.7030807@inktank.com> In-Reply-To: <504A6273.7030807@inktank.com> X-Gm-Message-State: ALoCoQl1fNSbAFub6VuYoSt+7+oGa9bchYUo+dmdhNl7WRBshIQFnK1Fw7XiDOFdvFI017sbUQgD Sender: ceph-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: ceph-devel@vger.kernel.org There are three fields that are not yet updated for format 2 rbd image headers: the version of the header object; the encryption type; and the compression type. There is no interface defined for fetching the latter two, so just initialize them explicitly to 0 for now. Change rbd_dev_v2_snap_context() so the caller can be supplied the version for the header object. Signed-off-by: Alex Elder Reviewed-by: Josh Durgin --- drivers/block/rbd.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) int ret; @@ -2263,7 +2263,7 @@ static int rbd_dev_v2_snap_context(struct rbd_device *rbd_dev) "rbd", "get_snapcontext", NULL, 0, reply_buf, size, - CEPH_OSD_FLAG_READ, NULL); + CEPH_OSD_FLAG_READ, ver); dout("%s: rbd_req_sync_exec returned %d\n", __func__, ret); if (ret < 0) goto out; @@ -2899,6 +2899,7 @@ static int rbd_dev_v2_probe(struct rbd_device *rbd_dev) { size_t size; int ret; + u64 ver = 0; /* * Image id was filled in by the caller. Record the header @@ -2929,11 +2930,18 @@ static int rbd_dev_v2_probe(struct rbd_device *rbd_dev) if (ret < 0) goto out_err; - /* Get the snapshot context */ + /* crypto and compression type aren't (yet) supported for v2 images */ + + rbd_dev->header.crypt_type = 0; + rbd_dev->header.comp_type = 0; - ret = rbd_dev_v2_snap_context(rbd_dev); + /* Get the snapshot context, plus the header version */ + + ret = rbd_dev_v2_snap_context(rbd_dev, &ver); if (ret) goto out_err; + rbd_dev->header.obj_version = ver; + rbd_dev->image_format = 2; dout("discovered version 2 image, header name is %s\n", diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c index c6922a1..ad27be2 100644 --- a/drivers/block/rbd.c +++ b/drivers/block/rbd.c @@ -2235,7 +2235,7 @@ static int rbd_dev_v2_features(struct rbd_device *rbd_dev) &rbd_dev->header.features); } -static int rbd_dev_v2_snap_context(struct rbd_device *rbd_dev) +static int rbd_dev_v2_snap_context(struct rbd_device *rbd_dev, u64 *ver) { size_t size;