From patchwork Mon Oct 22 16:51:49 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Elder X-Patchwork-Id: 1627101 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 EC4FA4020E for ; Mon, 22 Oct 2012 16:51:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755404Ab2JVQvx (ORCPT ); Mon, 22 Oct 2012 12:51:53 -0400 Received: from mail-ie0-f174.google.com ([209.85.223.174]:40328 "EHLO mail-ie0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755015Ab2JVQvx (ORCPT ); Mon, 22 Oct 2012 12:51:53 -0400 Received: by mail-ie0-f174.google.com with SMTP id k13so3910449iea.19 for ; Mon, 22 Oct 2012 09:51:52 -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=xsRvJ0nioNDe1OLhLSEgW2hTHwaRjDJFsurJVEQy0rY=; b=Owatv2aCjoO18qAlUQH1uRa07EEXOBTI7M+ckPrNffWfPEwK7yw0r8IisIrTED3hlS nrmNqTgQQ4IbCantyK8F5WDup107LuFKOAG7pf1XPl3KrVHiGCTiAJ8mgWSWKKxX1a0f qIDSYtI74gdIznu94ExbkRqvykNPWqvu4jMc5dx2EcRhMMg5oSDIsk37/KuZF/g562YX sMFxFS4+acjjnvMg02tOSsz+KLmdVwbH5dOXahPGq0ta8AMps2mQ1txXmBqEzKMPygBA DCzoLuXyMFOtdwJaPSElAHswGGC+NK5ESDDNLEryelUyl7gpOm6R6TlrA59m/0YnyVdj dqLA== Received: by 10.50.194.132 with SMTP id hw4mr17269599igc.9.1350924712763; Mon, 22 Oct 2012 09:51:52 -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 x5sm13625904igc.14.2012.10.22.09.51.50 (version=SSLv3 cipher=OTHER); Mon, 22 Oct 2012 09:51:52 -0700 (PDT) Message-ID: <508579A5.7070008@inktank.com> Date: Mon, 22 Oct 2012 11:51:49 -0500 From: Alex Elder User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:16.0) Gecko/20121011 Thunderbird/16.0.1 MIME-Version: 1.0 To: ceph-devel@vger.kernel.org Subject: [PATCH 4/4] rbd: kill rbd_device->rbd_opts References: <5085791C.9010205@inktank.com> In-Reply-To: <5085791C.9010205@inktank.com> X-Gm-Message-State: ALoCoQnm4SC7csC7YWZUNWi+78pLk66czTYi9WJetdjf0anoeBUgZtR2GGhhgCjfYWtGNLFDwAXO Sender: ceph-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: ceph-devel@vger.kernel.org The rbd_device structure has an embedded rbd_options structure. Such a structure is needed to work with the generic ceph argument parsing code, but there's no need to keep it around once argument parsing is done. Use a local variable to hold the rbd options used in parsing in rbd_get_client(), and just transfer its content (it's just a read_only flag) into the field in the rbd_mapping sub-structure that requires that information. Signed-off-by: Alex Elder Reviewed-by: Josh Durgin Reviewed-by: Dan Mick --- drivers/block/rbd.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) /* using an existing client */ @@ -685,7 +690,6 @@ static int rbd_dev_set_mapping(struct rbd_device *rbd_dev, char *snap_name) rbd_dev->mapping.size = rbd_dev->header.image_size; rbd_dev->mapping.features = rbd_dev->header.features; rbd_dev->mapping.snap_exists = false; - rbd_dev->mapping.read_only = rbd_dev->rbd_opts.read_only; ret = 0; } else { ret = snap_by_name(rbd_dev, snap_name); diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c index 4ccce4d..3c131ab 100644 --- a/drivers/block/rbd.c +++ b/drivers/block/rbd.c @@ -184,7 +184,6 @@ struct rbd_device { struct gendisk *disk; /* blkdev's gendisk and rq */ u32 image_format; /* Either 1 or 2 */ - struct rbd_options rbd_opts; struct rbd_client *rbd_client; char name[DEV_NAME_LEN]; /* blkdev name, e.g. rbd3 */ @@ -456,18 +455,24 @@ static int parse_rbd_opts_token(char *c, void *private) static int rbd_get_client(struct rbd_device *rbd_dev, const char *mon_addr, size_t mon_addr_len, char *options) { - struct rbd_options *rbd_opts = &rbd_dev->rbd_opts; + struct rbd_options rbd_opts; struct ceph_options *ceph_opts; struct rbd_client *rbdc; - rbd_opts->read_only = RBD_READ_ONLY_DEFAULT; + /* Initialize all rbd options to the defaults */ + + rbd_opts.read_only = RBD_READ_ONLY_DEFAULT; ceph_opts = ceph_parse_options(options, mon_addr, mon_addr + mon_addr_len, - parse_rbd_opts_token, rbd_opts); + parse_rbd_opts_token, &rbd_opts); if (IS_ERR(ceph_opts)) return PTR_ERR(ceph_opts); + /* Record the parsed rbd options */ + + rbd_dev->mapping.read_only = rbd_opts.read_only; + rbdc = rbd_client_find(ceph_opts); if (rbdc) {