From patchwork Wed Jul 14 10:05:50 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Venky Shankar X-Patchwork-Id: 12376557 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-19.4 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6660DC07E9A for ; Wed, 14 Jul 2021 10:06:14 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 46FBF60FF2 for ; Wed, 14 Jul 2021 10:06:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239060AbhGNKJF (ORCPT ); Wed, 14 Jul 2021 06:09:05 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:38718 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238984AbhGNKJE (ORCPT ); Wed, 14 Jul 2021 06:09:04 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1626257173; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=m8t/yKmVAO8L3RLiFdigoWmVn4UCTKMM2iaDiSJwS5c=; b=fb0TKMSdgdnbKgeELP0n/3Bex06uMZE4C9htQi+65sGeIZTDoae8Nf8RCk37av0oqCR6hK j7+JVdR8shS0sLp0IJa0GF0+3epaIRP0Ao3Jj58a4CSvE75ZbXdB38k7rHcdqNmsQm+KGO clnpzOsAwMTzTfahaKVKehRWvEnlANY= Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-296-ZKFihud8M8OxbaTLOy44OA-1; Wed, 14 Jul 2021 06:06:09 -0400 X-MC-Unique: ZKFihud8M8OxbaTLOy44OA-1 Received: by mail-pg1-f198.google.com with SMTP id 137-20020a63058f0000b02902285c45652dso1191205pgf.4 for ; Wed, 14 Jul 2021 03:06:09 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=m8t/yKmVAO8L3RLiFdigoWmVn4UCTKMM2iaDiSJwS5c=; b=r1ME8odH5SdwPytgFS++nARYzoj0nCpoNGkB9zzPHjRmWD3sgHRdB5B48I5jOWwS7I /gbGvUSNMFjCUFiiu2dBQVwjWHC5kzllbCKRz8yDYQyS8tfdKtS/7eS8qzlTXEH2bV/V UfOMLUjVg1SEgndk83yTOluYnMVpaaZa1H8wNg7EuYuYuJwUhNnlGbYlElgdmmQH3lzJ 0oPLINjAXQ9x+WtuprsCsZXofDM3F00xnvBHXBgCXwBXOSSxX6Z3kfnqmxxOQ9jqsfzc QOtRnim5AO5Psr2zRuZ9xzi3xnkB9bDxOQJiLOrThkQs2QEt/mG3e35+O/wAVEl1G6nN EB3g== X-Gm-Message-State: AOAM533an5SYJhG0QdBjy0dAstL+oxdAhhITo+j94X4/OhGRL3zYd0x2 xtQrMHJmXCUxWYAEgrBSz9BJ7DdYcaMxyg+uWjIIzpFoDPPPIpafHCpzMi+TB63Z4WMqt4hhCFC zTLgIo2pnj/mN4sYxn8ySzQ== X-Received: by 2002:a17:90a:b63:: with SMTP id 90mr8979018pjq.58.1626257168679; Wed, 14 Jul 2021 03:06:08 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzvx8GpcKc/kjTB/pBp+XiwiR37BYc7hZXMat23JoKy0CYCj4veR9TRzsCHU7IAtrF7Gxr7mw== X-Received: by 2002:a17:90a:b63:: with SMTP id 90mr8979005pjq.58.1626257168448; Wed, 14 Jul 2021 03:06:08 -0700 (PDT) Received: from h3ckers-pride.redhat.com ([49.207.217.185]) by smtp.gmail.com with ESMTPSA id 125sm2227030pfg.52.2021.07.14.03.06.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jul 2021 03:06:07 -0700 (PDT) From: Venky Shankar To: jlayton@redhat.com, idryomov@gmail.com, lhenriques@suse.de Cc: pdonnell@redhat.com, ceph-devel@vger.kernel.org, Venky Shankar Subject: [PATCH v4 1/5] ceph: generalize addr/ip parsing based on delimiter Date: Wed, 14 Jul 2021 15:35:50 +0530 Message-Id: <20210714100554.85978-2-vshankar@redhat.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210714100554.85978-1-vshankar@redhat.com> References: <20210714100554.85978-1-vshankar@redhat.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: ceph-devel@vger.kernel.org ... and remove hardcoded function name in ceph_parse_ips(). Signed-off-by: Venky Shankar --- drivers/block/rbd.c | 3 ++- fs/ceph/super.c | 3 ++- include/linux/ceph/libceph.h | 4 +++- include/linux/ceph/messenger.h | 2 +- net/ceph/ceph_common.c | 8 ++++---- net/ceph/messenger.c | 8 ++++---- 6 files changed, 16 insertions(+), 12 deletions(-) diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c index bbb88eb009e0..209a7a128ea3 100644 --- a/drivers/block/rbd.c +++ b/drivers/block/rbd.c @@ -6530,7 +6530,8 @@ static int rbd_add_parse_args(const char *buf, pctx.opts->exclusive = RBD_EXCLUSIVE_DEFAULT; pctx.opts->trim = RBD_TRIM_DEFAULT; - ret = ceph_parse_mon_ips(mon_addrs, mon_addrs_size, pctx.copts, NULL); + ret = ceph_parse_mon_ips(mon_addrs, mon_addrs_size, pctx.copts, NULL, + CEPH_ADDR_PARSE_DEFAULT_DELIM); if (ret) goto out_err; diff --git a/fs/ceph/super.c b/fs/ceph/super.c index 9b1b7f4cfdd4..039775553a88 100644 --- a/fs/ceph/super.c +++ b/fs/ceph/super.c @@ -271,7 +271,8 @@ static int ceph_parse_source(struct fs_parameter *param, struct fs_context *fc) dout("server path '%s'\n", fsopt->server_path); ret = ceph_parse_mon_ips(param->string, dev_name_end - dev_name, - pctx->copts, fc->log.log); + pctx->copts, fc->log.log, + CEPH_ADDR_PARSE_DEFAULT_DELIM); if (ret) return ret; diff --git a/include/linux/ceph/libceph.h b/include/linux/ceph/libceph.h index 409d8c29bc4f..e50dba429819 100644 --- a/include/linux/ceph/libceph.h +++ b/include/linux/ceph/libceph.h @@ -98,6 +98,8 @@ struct ceph_options { #define CEPH_AUTH_NAME_DEFAULT "guest" +#define CEPH_ADDR_PARSE_DEFAULT_DELIM ',' + /* mount state */ enum { CEPH_MOUNT_MOUNTING, @@ -301,7 +303,7 @@ struct fs_parameter; struct fc_log; struct ceph_options *ceph_alloc_options(void); int ceph_parse_mon_ips(const char *buf, size_t len, struct ceph_options *opt, - struct fc_log *l); + struct fc_log *l, char delimiter); int ceph_parse_param(struct fs_parameter *param, struct ceph_options *opt, struct fc_log *l); int ceph_print_client_options(struct seq_file *m, struct ceph_client *client, diff --git a/include/linux/ceph/messenger.h b/include/linux/ceph/messenger.h index 0e6e9ad3c3bf..c9675ee33f51 100644 --- a/include/linux/ceph/messenger.h +++ b/include/linux/ceph/messenger.h @@ -532,7 +532,7 @@ extern const char *ceph_pr_addr(const struct ceph_entity_addr *addr); extern int ceph_parse_ips(const char *c, const char *end, struct ceph_entity_addr *addr, - int max_count, int *count); + int max_count, int *count, char delimiter); extern int ceph_msgr_init(void); extern void ceph_msgr_exit(void); diff --git a/net/ceph/ceph_common.c b/net/ceph/ceph_common.c index 97d6ea763e32..0f74ceeddf48 100644 --- a/net/ceph/ceph_common.c +++ b/net/ceph/ceph_common.c @@ -422,14 +422,14 @@ static int get_secret(struct ceph_crypto_key *dst, const char *name, } int ceph_parse_mon_ips(const char *buf, size_t len, struct ceph_options *opt, - struct fc_log *l) + struct fc_log *l, char delimiter) { struct p_log log = {.prefix = "libceph", .log = l}; int ret; - /* ip1[:port1][,ip2[:port2]...] */ + /* ip1[:port1][ip2[:port2]...] */ ret = ceph_parse_ips(buf, buf + len, opt->mon_addr, CEPH_MAX_MON, - &opt->num_mon); + &opt->num_mon, delimiter); if (ret) { error_plog(&log, "Failed to parse monitor IPs: %d", ret); return ret; @@ -456,7 +456,7 @@ int ceph_parse_param(struct fs_parameter *param, struct ceph_options *opt, err = ceph_parse_ips(param->string, param->string + param->size, &opt->my_addr, - 1, NULL); + 1, NULL, CEPH_ADDR_PARSE_DEFAULT_DELIM); if (err) { error_plog(&log, "Failed to parse ip: %d", err); return err; diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c index 57d043b382ed..c93d103fe343 100644 --- a/net/ceph/messenger.c +++ b/net/ceph/messenger.c @@ -1267,7 +1267,7 @@ static int ceph_parse_server_name(const char *name, size_t namelen, */ int ceph_parse_ips(const char *c, const char *end, struct ceph_entity_addr *addr, - int max_count, int *count) + int max_count, int *count, char delimiter) { int i, ret = -EINVAL; const char *p = c; @@ -1276,7 +1276,7 @@ int ceph_parse_ips(const char *c, const char *end, for (i = 0; i < max_count; i++) { const char *ipend; int port; - char delim = ','; + char delim = delimiter; if (*p == '[') { delim = ']'; @@ -1326,11 +1326,11 @@ int ceph_parse_ips(const char *c, const char *end, addr[i].type = CEPH_ENTITY_ADDR_TYPE_LEGACY; addr[i].nonce = 0; - dout("parse_ips got %s\n", ceph_pr_addr(&addr[i])); + dout("%s got %s\n", __func__, ceph_pr_addr(&addr[i])); if (p == end) break; - if (*p != ',') + if (*p != delimiter) goto bad; p++; } From patchwork Wed Jul 14 10:05:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Venky Shankar X-Patchwork-Id: 12376559 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-19.4 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B8510C07E9C for ; Wed, 14 Jul 2021 10:06:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9DE4160FED for ; Wed, 14 Jul 2021 10:06:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239062AbhGNKJG (ORCPT ); Wed, 14 Jul 2021 06:09:06 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:41272 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238359AbhGNKJF (ORCPT ); Wed, 14 Jul 2021 06:09:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1626257174; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=S4cU/xx0zjvXuWehqCcQBwCFvuxaw5ZEbgauSSASq8w=; b=WQUn442s45YZ/k94lpX9LzWdgGtL/b9C4MEJEnD/xyI5xbv+e3rvYVSUa3EBWlj+3tfn3s cbwWUX537vBCKU1/FWiIKDLhDeLrLSzdM03XlH0eFVxqzKC0UL/J9ebjX1hcMMyYuah6rC 2uWSAb0sBkgw+2Xi4uvtgrjCq5Be6Zs= Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-434-IZDCrIjjPvawQLKfTsQJhw-1; Wed, 14 Jul 2021 06:06:13 -0400 X-MC-Unique: IZDCrIjjPvawQLKfTsQJhw-1 Received: by mail-pg1-f200.google.com with SMTP id 29-20020a63105d0000b029022c245c3492so1170306pgq.17 for ; Wed, 14 Jul 2021 03:06:12 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=S4cU/xx0zjvXuWehqCcQBwCFvuxaw5ZEbgauSSASq8w=; b=MTCdRWhURGfO+8bE9lFLEObKD8rYhbGnNQ44jH04MW7qbrM91XUAb+bcOcSoifrvz1 Wu+Dr8GPf2XAGgltNpSjPCaDcjO3Imue1l541BHU5BF2jGO0ZLazt/COqRV/o89XoQdu GAOEkVYRMC6X500GTrUDP9Bpq5mmjbibTqgHM7munkGdk3DCaiuc6OkbZcm3P3GBQfM7 n/ZinjQhW8HGSX5BVvZazavNFSbpXcarvvUeXYDWjYPWwBCJNMvErI8m8kEW8e6zbAAc okZcDioPxSwteA1VWfHWycHb8eTog82oWI2f8qIdmM5cqkX3HkQIJFVEqxZOyihRlaSF 9zyQ== X-Gm-Message-State: AOAM533WNorU+8VzQ/dBeVmWnu4M1gDS9YFBBo1C1Y5jQb2WwsYK3mnp TnjOru4ZQmZAzaf5FKraYMnJ8uzPXa3mhhqxAOez/d3DhaVT4Xy8+NBdE20aHfOul6cm6ICqUpd Nf17yPw9tLrdpkUgRqT3o6A== X-Received: by 2002:a17:90a:9b13:: with SMTP id f19mr8976094pjp.229.1626257172006; Wed, 14 Jul 2021 03:06:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzH9nkU6HkXTT3OJIbaYYx7hvd/4Da+KMD2r8eUNPvDYW0kHbcO3v/l+SdZjfl0UjTkcjxkpQ== X-Received: by 2002:a17:90a:9b13:: with SMTP id f19mr8976079pjp.229.1626257171775; Wed, 14 Jul 2021 03:06:11 -0700 (PDT) Received: from h3ckers-pride.redhat.com ([49.207.217.185]) by smtp.gmail.com with ESMTPSA id 125sm2227030pfg.52.2021.07.14.03.06.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jul 2021 03:06:11 -0700 (PDT) From: Venky Shankar To: jlayton@redhat.com, idryomov@gmail.com, lhenriques@suse.de Cc: pdonnell@redhat.com, ceph-devel@vger.kernel.org, Venky Shankar Subject: [PATCH v4 2/5] ceph: rename parse_fsid() to ceph_parse_fsid() and export Date: Wed, 14 Jul 2021 15:35:51 +0530 Message-Id: <20210714100554.85978-3-vshankar@redhat.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210714100554.85978-1-vshankar@redhat.com> References: <20210714100554.85978-1-vshankar@redhat.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: ceph-devel@vger.kernel.org ... as it is too generic. also, use __func__ when logging rather than hardcoding the function name. Signed-off-by: Venky Shankar --- include/linux/ceph/libceph.h | 1 + net/ceph/ceph_common.c | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/include/linux/ceph/libceph.h b/include/linux/ceph/libceph.h index e50dba429819..37ab639b5012 100644 --- a/include/linux/ceph/libceph.h +++ b/include/linux/ceph/libceph.h @@ -298,6 +298,7 @@ extern bool libceph_compatible(void *data); extern const char *ceph_msg_type_name(int type); extern int ceph_check_fsid(struct ceph_client *client, struct ceph_fsid *fsid); extern void *ceph_kvmalloc(size_t size, gfp_t flags); +extern int ceph_parse_fsid(const char *str, struct ceph_fsid *fsid); struct fs_parameter; struct fc_log; diff --git a/net/ceph/ceph_common.c b/net/ceph/ceph_common.c index 0f74ceeddf48..31cbe671121c 100644 --- a/net/ceph/ceph_common.c +++ b/net/ceph/ceph_common.c @@ -217,14 +217,14 @@ void *ceph_kvmalloc(size_t size, gfp_t flags) return p; } -static int parse_fsid(const char *str, struct ceph_fsid *fsid) +int ceph_parse_fsid(const char *str, struct ceph_fsid *fsid) { int i = 0; char tmp[3]; int err = -EINVAL; int d; - dout("parse_fsid '%s'\n", str); + dout("%s '%s'\n", __func__, str); tmp[2] = 0; while (*str && i < 16) { if (ispunct(*str)) { @@ -244,9 +244,10 @@ static int parse_fsid(const char *str, struct ceph_fsid *fsid) if (i == 16) err = 0; - dout("parse_fsid ret %d got fsid %pU\n", err, fsid); + dout("%s ret %d got fsid %pU\n", __func__, err, fsid); return err; } +EXPORT_SYMBOL(ceph_parse_fsid); /* * ceph options @@ -465,7 +466,7 @@ int ceph_parse_param(struct fs_parameter *param, struct ceph_options *opt, break; case Opt_fsid: - err = parse_fsid(param->string, &opt->fsid); + err = ceph_parse_fsid(param->string, &opt->fsid); if (err) { error_plog(&log, "Failed to parse fsid: %d", err); return err; From patchwork Wed Jul 14 10:05:52 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Venky Shankar X-Patchwork-Id: 12376561 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-19.4 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id ED9C7C07E9C for ; Wed, 14 Jul 2021 10:06:21 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D655A60FED for ; Wed, 14 Jul 2021 10:06:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239070AbhGNKJK (ORCPT ); Wed, 14 Jul 2021 06:09:10 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:37556 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239059AbhGNKJJ (ORCPT ); Wed, 14 Jul 2021 06:09:09 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1626257177; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0jwwixyvWLE/tYvJDMsiIgPP8h/eQ5+rOZUun6nPm4w=; b=Ys7VkEniwIoSBvNcDbq9AsJP98JjGQvoSOWyK0s3CMJq7Aa9YFUauvZwCjM56lY8YGlmht S6pzcCMC2dvJgeaJcNZzyxeRkO+XajKwemGW+h7X4PS8cbiCe+1NOa2VbskNE++ZQreNEP U52WHjX4gQPcjyZ7iF3UexNeCRAAf8Y= Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-551-YhX3WOGrPuusT6UTmO-XrA-1; Wed, 14 Jul 2021 06:06:16 -0400 X-MC-Unique: YhX3WOGrPuusT6UTmO-XrA-1 Received: by mail-pj1-f70.google.com with SMTP id p22-20020a17090a9316b029016a0aced749so970821pjo.9 for ; Wed, 14 Jul 2021 03:06:16 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=0jwwixyvWLE/tYvJDMsiIgPP8h/eQ5+rOZUun6nPm4w=; b=Tl5asdLYPtjCXEBmg0oSYxhoWWcxHseoXH1mLJNW1jx+qW/KrxnX6WIrYbenKV3iRT T0ViLVxnXgHHhSB4tzKesfrqh5uPURpT815CvsQYaDqp6kgU2BnNafuQg2SidRWpxGo4 qFElgQfQkpRaK15brb8wTjeLPXVQPSfBFGIX+YbmwqHkHhrLggs32PtI0BObU/Bo7ELn 7FfOX4uEupvLBggXGPmVy74XqWv1uqtuHTXpcz2YxUjzlSND1j7s+GPA5C1LX9wkvdTJ cg2hQ8H41RGK6luUCZq+qaAaHUn6OrnTuaOuWz2/9AmC62pv3197zzBx0PAPONlwk4Nl h/Bg== X-Gm-Message-State: AOAM533iZq4KdmwKlTPdMcZHgHQ0J8b0eKwLt7Nbhyw119y7gkQwyG3s 7Ln5aP97au0dQCtawu68B7PiA9+gBiAEiLnZjU2olhDfoFcqmxhGMlnGDtJaSYl2NhtnT6jOoEY R8rrpA6zuM/vtfMUB0WvPTA== X-Received: by 2002:a17:90b:fd1:: with SMTP id gd17mr4836974pjb.41.1626257175346; Wed, 14 Jul 2021 03:06:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyN0o0Cgy+D8SXd8I3hEDRUz3sCsmh2P8HFLvul3JMGz1K9irjpZ15YUdQfh7RazFIdueDafQ== X-Received: by 2002:a17:90b:fd1:: with SMTP id gd17mr4836950pjb.41.1626257175078; Wed, 14 Jul 2021 03:06:15 -0700 (PDT) Received: from h3ckers-pride.redhat.com ([49.207.217.185]) by smtp.gmail.com with ESMTPSA id 125sm2227030pfg.52.2021.07.14.03.06.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jul 2021 03:06:14 -0700 (PDT) From: Venky Shankar To: jlayton@redhat.com, idryomov@gmail.com, lhenriques@suse.de Cc: pdonnell@redhat.com, ceph-devel@vger.kernel.org, Venky Shankar Subject: [PATCH v4 3/5] ceph: new device mount syntax Date: Wed, 14 Jul 2021 15:35:52 +0530 Message-Id: <20210714100554.85978-4-vshankar@redhat.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210714100554.85978-1-vshankar@redhat.com> References: <20210714100554.85978-1-vshankar@redhat.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: ceph-devel@vger.kernel.org Old mount device syntax (source) has the following problems: - mounts to the same cluster but with different fsnames and/or creds have identical device string which can confuse xfstests. - Userspace mount helper tool resolves monitor addresses and fill in mon addrs automatically, but that means the device shown in /proc/mounts is different than what was used for mounting. New device syntax is as follows: cephuser@fsid.mycephfs2=/path Note, there is no "monitor address" in the device string. That gets passed in as mount option. This keeps the device string same when monitor addresses change (on remounts). Also note that the userspace mount helper tool is backward compatible. I.e., the mount helper will fallback to using old syntax after trying to mount with the new syntax. Signed-off-by: Venky Shankar --- fs/ceph/super.c | 145 ++++++++++++++++++++++++++++++++++++++++++++---- fs/ceph/super.h | 3 + 2 files changed, 137 insertions(+), 11 deletions(-) diff --git a/fs/ceph/super.c b/fs/ceph/super.c index 039775553a88..d8c6168b7fcd 100644 --- a/fs/ceph/super.c +++ b/fs/ceph/super.c @@ -145,6 +145,7 @@ enum { Opt_mds_namespace, Opt_recover_session, Opt_source, + Opt_mon_addr, /* string args above */ Opt_dirstat, Opt_rbytes, @@ -196,6 +197,7 @@ static const struct fs_parameter_spec ceph_mount_parameters[] = { fsparam_u32 ("rsize", Opt_rsize), fsparam_string ("snapdirname", Opt_snapdirname), fsparam_string ("source", Opt_source), + fsparam_string ("mon_addr", Opt_mon_addr), fsparam_u32 ("wsize", Opt_wsize), fsparam_flag_no ("wsync", Opt_wsync), {} @@ -227,9 +229,93 @@ static void canonicalize_path(char *path) } /* - * Parse the source parameter. Distinguish the server list from the path. + * Check if the mds namespace in ceph_mount_options matches + * the passed in namespace string. First time match (when + * ->mds_namespace is NULL) is treated specially, since + * ->mds_namespace needs to be initialized by the caller. + */ +static int namespace_equals(struct ceph_mount_options *fsopt, + const char *namespace, size_t len) +{ + return !(fsopt->mds_namespace && + (strlen(fsopt->mds_namespace) != len || + strncmp(fsopt->mds_namespace, namespace, len))); +} + +static int ceph_parse_old_source(const char *dev_name, const char *dev_name_end, + struct fs_context *fc) +{ + int r; + struct ceph_parse_opts_ctx *pctx = fc->fs_private; + struct ceph_mount_options *fsopt = pctx->opts; + + if (*dev_name_end != ':') + return invalfc(fc, "separator ':' missing in source"); + + r = ceph_parse_mon_ips(dev_name, dev_name_end - dev_name, + pctx->copts, fc->log.log, + CEPH_ADDR_PARSE_DEFAULT_DELIM); + if (r) + return r; + + fsopt->new_dev_syntax = false; + return 0; +} + +static int ceph_parse_new_source(const char *dev_name, const char *dev_name_end, + struct fs_context *fc) +{ + size_t len; + struct ceph_fsid fsid; + struct ceph_parse_opts_ctx *pctx = fc->fs_private; + struct ceph_mount_options *fsopt = pctx->opts; + char *fsid_start, *fs_name_start; + + if (*dev_name_end != '=') { + dout("separator '=' missing in source"); + return -EINVAL; + } + + fsid_start = strchr(dev_name, '@'); + if (!fsid_start) + return invalfc(fc, "missing cluster fsid"); + ++fsid_start; /* start of cluster fsid */ + + fs_name_start = strchr(fsid_start, '.'); + if (!fs_name_start) + return invalfc(fc, "missing file system name"); + + if (ceph_parse_fsid(fsid_start, &fsid)) + return invalfc(fc, "Invalid FSID"); + + ++fs_name_start; /* start of file system name */ + len = dev_name_end - fs_name_start; + + if (!namespace_equals(fsopt, fs_name_start, len)) + return invalfc(fc, "Mismatching mds_namespace"); + kfree(fsopt->mds_namespace); + fsopt->mds_namespace = kstrndup(fs_name_start, len, GFP_KERNEL); + if (!fsopt->mds_namespace) + return -ENOMEM; + dout("file system (mds namespace) '%s'\n", fsopt->mds_namespace); + + fsopt->new_dev_syntax = true; + return 0; +} + +/* + * Parse the source parameter for new device format. Distinguish the device + * spec from the path. Try parsing new device format and fallback to old + * format if needed. + * + * New device syntax will looks like: + * =/ + * where + * is name@fsid.fsname + * is optional, but if present must begin with '/' + * (monitor addresses are passed via mount option) * - * The source will look like: + * Old device syntax is: * [,...]:[] * where * is [:] @@ -262,25 +348,46 @@ static int ceph_parse_source(struct fs_parameter *param, struct fs_context *fc) dev_name_end = dev_name + strlen(dev_name); } - dev_name_end--; /* back up to ':' separator */ - if (dev_name_end < dev_name || *dev_name_end != ':') - return invalfc(fc, "No path or : separator in source"); + dev_name_end--; /* back up to separator */ + if (dev_name_end < dev_name) + return invalfc(fc, "Path missing in source"); dout("device name '%.*s'\n", (int)(dev_name_end - dev_name), dev_name); if (fsopt->server_path) dout("server path '%s'\n", fsopt->server_path); - ret = ceph_parse_mon_ips(param->string, dev_name_end - dev_name, - pctx->copts, fc->log.log, - CEPH_ADDR_PARSE_DEFAULT_DELIM); - if (ret) - return ret; + dout("trying new device syntax"); + ret = ceph_parse_new_source(dev_name, dev_name_end, fc); + if (ret) { + if (ret != -EINVAL) + return ret; + dout("trying old device syntax"); + ret = ceph_parse_old_source(dev_name, dev_name_end, fc); + if (ret) + return ret; + } fc->source = param->string; param->string = NULL; return 0; } +#define CEPH_MON_ADDR_MNTOPT_DELIM '/' +static int ceph_parse_mon_addr(struct fs_parameter *param, + struct fs_context *fc) +{ + struct ceph_parse_opts_ctx *pctx = fc->fs_private; + struct ceph_mount_options *fsopt = pctx->opts; + + kfree(fsopt->mon_addr); + fsopt->mon_addr = param->string; + param->string = NULL; + + return ceph_parse_mon_ips(fsopt->mon_addr, strlen(fsopt->mon_addr), + pctx->copts, fc->log.log, + CEPH_MON_ADDR_MNTOPT_DELIM); +} + static int ceph_parse_mount_param(struct fs_context *fc, struct fs_parameter *param) { @@ -306,6 +413,8 @@ static int ceph_parse_mount_param(struct fs_context *fc, param->string = NULL; break; case Opt_mds_namespace: + if (!namespace_equals(fsopt, param->string, strlen(param->string))) + return invalfc(fc, "Mismatching mds_namespace"); kfree(fsopt->mds_namespace); fsopt->mds_namespace = param->string; param->string = NULL; @@ -323,6 +432,8 @@ static int ceph_parse_mount_param(struct fs_context *fc, if (fc->source) return invalfc(fc, "Multiple sources specified"); return ceph_parse_source(param, fc); + case Opt_mon_addr: + return ceph_parse_mon_addr(param, fc); case Opt_wsize: if (result.uint_32 < PAGE_SIZE || result.uint_32 > CEPH_MAX_WRITE_SIZE) @@ -474,6 +585,7 @@ static void destroy_mount_options(struct ceph_mount_options *args) kfree(args->mds_namespace); kfree(args->server_path); kfree(args->fscache_uniq); + kfree(args->mon_addr); kfree(args); } @@ -517,6 +629,10 @@ static int compare_mount_options(struct ceph_mount_options *new_fsopt, if (ret) return ret; + ret = strcmp_null(fsopt1->mon_addr, fsopt2->mon_addr); + if (ret) + return ret; + return ceph_compare_options(new_opt, fsc->client); } @@ -572,9 +688,13 @@ static int ceph_show_options(struct seq_file *m, struct dentry *root) if ((fsopt->flags & CEPH_MOUNT_OPT_NOCOPYFROM) == 0) seq_puts(m, ",copyfrom"); - if (fsopt->mds_namespace) + /* dump mds_namespace when old device syntax is in use */ + if (fsopt->mds_namespace && !fsopt->new_dev_syntax) seq_show_option(m, "mds_namespace", fsopt->mds_namespace); + if (fsopt->mon_addr) + seq_printf(m, ",mon_addr=%s", fsopt->mon_addr); + if (fsopt->flags & CEPH_MOUNT_OPT_CLEANRECOVER) seq_show_option(m, "recover_session", "clean"); @@ -1049,6 +1169,7 @@ static int ceph_setup_bdi(struct super_block *sb, struct ceph_fs_client *fsc) static int ceph_get_tree(struct fs_context *fc) { struct ceph_parse_opts_ctx *pctx = fc->fs_private; + struct ceph_mount_options *fsopt = pctx->opts; struct super_block *sb; struct ceph_fs_client *fsc; struct dentry *res; @@ -1060,6 +1181,8 @@ static int ceph_get_tree(struct fs_context *fc) if (!fc->source) return invalfc(fc, "No source"); + if (fsopt->new_dev_syntax && !fsopt->mon_addr) + return invalfc(fc, "No monitor address"); /* create client (which we may/may not use) */ fsc = create_fs_client(pctx->opts, pctx->copts); diff --git a/fs/ceph/super.h b/fs/ceph/super.h index c48bb30c8d70..8f71184b7c85 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -87,6 +87,8 @@ struct ceph_mount_options { unsigned int max_readdir; /* max readdir result (entries) */ unsigned int max_readdir_bytes; /* max readdir result (bytes) */ + bool new_dev_syntax; + /* * everything above this point can be memcmp'd; everything below * is handled in compare_mount_options() @@ -96,6 +98,7 @@ struct ceph_mount_options { char *mds_namespace; /* default NULL */ char *server_path; /* default NULL (means "/") */ char *fscache_uniq; /* default NULL */ + char *mon_addr; }; struct ceph_fs_client { From patchwork Wed Jul 14 10:05:53 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Venky Shankar X-Patchwork-Id: 12376563 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-19.4 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DD15EC07E9A for ; Wed, 14 Jul 2021 10:06:28 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C52E860FF2 for ; Wed, 14 Jul 2021 10:06:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238950AbhGNKJT (ORCPT ); Wed, 14 Jul 2021 06:09:19 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:40644 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239094AbhGNKJM (ORCPT ); Wed, 14 Jul 2021 06:09:12 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1626257180; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=FBH85MVFQXPuSuMKLXbXwQPzrS8jv8/jyfkKZxsdFMM=; b=Zf1aACIF56hgjCg/SDbjPJWpPxDUzaCiMWsljHKVVy9qLYciYwnqs1dOxtMYPivaimo4nc b+58xDIrGYVKVSDTCKQ4sUbj3kt4yQbgYrpwzAlF8B67DNSuP1sbUFv7OazsVpSFzqQlHX 1vca1WBFOXoYS6z86VY5swX6xsv8tqs= Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-139-Bu6VPSr7NPC9pW3_yv17wA-1; Wed, 14 Jul 2021 06:06:19 -0400 X-MC-Unique: Bu6VPSr7NPC9pW3_yv17wA-1 Received: by mail-pf1-f200.google.com with SMTP id s187-20020a625ec40000b02903288ce43fc0so1293238pfb.7 for ; Wed, 14 Jul 2021 03:06:19 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=FBH85MVFQXPuSuMKLXbXwQPzrS8jv8/jyfkKZxsdFMM=; b=pYJk4VUcbtnzx+Y//HJsKqDT/KK70MHLLwqlri4Cfx0vZThQ2Esji+bBV98yMIwtHw vMHITA2Ds9s8FofglenL2E7Xobn8jx2a7b08yjfNWRjs89Vw53mZUymXMiNaIGdCQt9f rNRe/6NFXC4zLyR3zktps6jqe5/SckYdfP4SVNZWwMfoz9ngXzoyKRFfYVVKRXrnO+rw aj9maL13RmMvOppsBvOfbZFk8waQiCY7n1LNmzbmAd4OcOsBXBJpSxjq9JU2GhFf7p/4 EqIpeSIz98e2XnRo3FFKi6PbCMvmGMlGC5LM/js8R5Fg04KSdsz1gvlUZRaALz/U1/pk +m/Q== X-Gm-Message-State: AOAM533cGv/zAOVPJv/lksCF3pIWC1LK6sybWM0gB5bfbbQ/MnK7XyvO 8mJ1HHUcY81+SxFJYUpos8Ykk+lr8J7k0xFmyesP69XwKqNWp9z8HanovaT+SGCxIBMNtrwX3Kb ZPSdtkoRAIsd0HP8Xst/M9Q== X-Received: by 2002:a17:90a:d596:: with SMTP id v22mr3071813pju.51.1626257178331; Wed, 14 Jul 2021 03:06:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyw4HClj6jY4VYSYzi5H++ZORrf8LZNi9GgE3n6sS4BHqI/22tblJ4MP97s3b4ikIUlI5PXrQ== X-Received: by 2002:a17:90a:d596:: with SMTP id v22mr3071795pju.51.1626257178173; Wed, 14 Jul 2021 03:06:18 -0700 (PDT) Received: from h3ckers-pride.redhat.com ([49.207.217.185]) by smtp.gmail.com with ESMTPSA id 125sm2227030pfg.52.2021.07.14.03.06.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jul 2021 03:06:17 -0700 (PDT) From: Venky Shankar To: jlayton@redhat.com, idryomov@gmail.com, lhenriques@suse.de Cc: pdonnell@redhat.com, ceph-devel@vger.kernel.org, Venky Shankar Subject: [PATCH v4 4/5] ceph: record updated mon_addr on remount Date: Wed, 14 Jul 2021 15:35:53 +0530 Message-Id: <20210714100554.85978-5-vshankar@redhat.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210714100554.85978-1-vshankar@redhat.com> References: <20210714100554.85978-1-vshankar@redhat.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: ceph-devel@vger.kernel.org Note that the new monitors are just shown in /proc/mounts. Ceph does not (re)connect to new monitors yet. Signed-off-by: Venky Shankar Signed-off-by: Luis Henriques --- fs/ceph/super.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/fs/ceph/super.c b/fs/ceph/super.c index d8c6168b7fcd..d3a5a3729c5b 100644 --- a/fs/ceph/super.c +++ b/fs/ceph/super.c @@ -1268,6 +1268,13 @@ static int ceph_reconfigure_fc(struct fs_context *fc) else ceph_clear_mount_opt(fsc, ASYNC_DIROPS); + if (strcmp(fsc->mount_options->mon_addr, fsopt->mon_addr)) { + kfree(fsc->mount_options->mon_addr); + fsc->mount_options->mon_addr = fsopt->mon_addr; + fsopt->mon_addr = NULL; + printk(KERN_NOTICE "ceph: monitor addresses recorded, but not used for reconnection"); + } + sync_filesystem(fc->root->d_sb); return 0; } From patchwork Wed Jul 14 10:05:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Venky Shankar X-Patchwork-Id: 12376565 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-19.4 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9747DC07E9C for ; Wed, 14 Jul 2021 10:06:29 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8256C60FED for ; Wed, 14 Jul 2021 10:06:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239029AbhGNKJU (ORCPT ); Wed, 14 Jul 2021 06:09:20 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:40289 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239072AbhGNKJR (ORCPT ); Wed, 14 Jul 2021 06:09:17 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1626257186; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=5z87lSglp1R+XOAVM/WPJyePD3cVLLHAqajJ2nmRuNY=; b=BtAzoPurZ0XheYkrmd4lLLeCsvCS/eGJrvveqd8GF2ucXBLpucv+IsMyWjs1Uql9QLSFt9 9vGlxcVkQRxHGIIdmFB+dIaWrl0+GfwayMIWCZcl8CylP7Hdpu0OtVyu+Mg/vXSPLFjTaf DCa6ZTBlyUIHhet6JNT58PHdm4RCLCs= Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-247-8Dri5kxRNzSkjBbay6SgVQ-1; Wed, 14 Jul 2021 06:06:25 -0400 X-MC-Unique: 8Dri5kxRNzSkjBbay6SgVQ-1 Received: by mail-pj1-f72.google.com with SMTP id c10-20020a17090a558ab029017019f7ec8fso972587pji.8 for ; Wed, 14 Jul 2021 03:06:25 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5z87lSglp1R+XOAVM/WPJyePD3cVLLHAqajJ2nmRuNY=; b=lt+d9jFfnaBT3JIuk8g7vgcpcEJxuErOyHxtgg7jgcFQy9FA/zBaY0gyCm8sURkEPv GrFtGtQEEXUcnC2xZQ+l6Sb5nA1zv5Lw9VWF77VzUp3/V0sohf0wHGd0L+oN7jknalNA kNPEmt2iharMC4GNGrPe+S6UZgz2UDBhCcqRv6eWPSpFlrVgCFhkR4LpJH+jCEFd2JXH ZvEXHXzNbkAt8u7Fcz+SrN6FDYYzNOTt3X6VPDtPU82dqfsGmLbpINW6VkzqTjJWdqSL V5lHnBPio9DuMEnlPPdS7CC5gspgwiev/Xuv+3kWAtdXO6JQnAXnOKvfJQC8069e3LBw /5oQ== X-Gm-Message-State: AOAM533zVbCDTX/Jhq9g93GjBLQPcMGDmljbdan13Su4oig3nRkmyAwU 84EZ11LgF+4kQX+3J+vnkW9KW2aVTA87vKnYCUor3kfJaSnqr73yCtWfZT1Hftry/zY3vNuk6Mh +tdg4NTD6CxGyC68vWHAtDg== X-Received: by 2002:a05:6a00:21c6:b029:2ff:e9:94f0 with SMTP id t6-20020a056a0021c6b02902ff00e994f0mr9358633pfj.73.1626257183676; Wed, 14 Jul 2021 03:06:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz6BH1KDkaDglMcsb1sHfAdf31lDRnWrfXVfrHBr6CWmn26IX5/bsCm08R0+f8SkbhC2prdFg== X-Received: by 2002:a05:6a00:21c6:b029:2ff:e9:94f0 with SMTP id t6-20020a056a0021c6b02902ff00e994f0mr9358614pfj.73.1626257183488; Wed, 14 Jul 2021 03:06:23 -0700 (PDT) Received: from h3ckers-pride.redhat.com ([49.207.217.185]) by smtp.gmail.com with ESMTPSA id 125sm2227030pfg.52.2021.07.14.03.06.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jul 2021 03:06:21 -0700 (PDT) From: Venky Shankar To: jlayton@redhat.com, idryomov@gmail.com, lhenriques@suse.de Cc: pdonnell@redhat.com, ceph-devel@vger.kernel.org, Venky Shankar Subject: [PATCH v4 5/5] doc: document new CephFS mount device syntax Date: Wed, 14 Jul 2021 15:35:54 +0530 Message-Id: <20210714100554.85978-6-vshankar@redhat.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210714100554.85978-1-vshankar@redhat.com> References: <20210714100554.85978-1-vshankar@redhat.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: ceph-devel@vger.kernel.org Signed-off-by: Venky Shankar --- Documentation/filesystems/ceph.rst | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/Documentation/filesystems/ceph.rst b/Documentation/filesystems/ceph.rst index 7d2ef4e27273..4942e018db85 100644 --- a/Documentation/filesystems/ceph.rst +++ b/Documentation/filesystems/ceph.rst @@ -82,7 +82,7 @@ Mount Syntax The basic mount syntax is:: - # mount -t ceph monip[:port][,monip2[:port]...]:/[subdir] mnt + # mount -t ceph user@fsid.fs_name=/[subdir] mnt -o mon_addr=monip1[:port][/monip2[:port]] You only need to specify a single monitor, as the client will get the full list when it connects. (However, if the monitor you specify @@ -90,16 +90,35 @@ happens to be down, the mount won't succeed.) The port can be left off if the monitor is using the default. So if the monitor is at 1.2.3.4:: - # mount -t ceph 1.2.3.4:/ /mnt/ceph + # mount -t ceph cephuser@07fe3187-00d9-42a3-814b-72a4d5e7d5be.cephfs=/ /mnt/ceph -o mon_addr=1.2.3.4 is sufficient. If /sbin/mount.ceph is installed, a hostname can be -used instead of an IP address. +used instead of an IP address and the cluster FSID can be left out +(as the mount helper will fill it in by reading the ceph configuration +file):: + # mount -t ceph cephuser@cephfs=/ /mnt/ceph -o mon_addr=mon-addr +Multiple monitor addresses can be passed by separating each address with a slash (`/`):: + + # mount -t ceph cephuser@cephfs=/ /mnt/ceph -o mon_addr=192.168.1.100/192.168.1.101 + +When using the mount helper, monitor address can be read from ceph +configuration file if available. Note that, the cluster FSID (passed as part +of the device string) is validated by checking it with the FSID reported by +the monitor. Mount Options ============= + mon_addr=ip_address[:port][/ip_address[:port]] + Monitor address to the cluster. This is used to bootstrap the + connection to the cluster. Once connection is established, the + monitor addresses in the monitor map are followed. + + fsid=cluster-id + FSID of the cluster (from `ceph fsid` command). + ip=A.B.C.D[:N] Specify the IP and/or port the client should bind to locally. There is normally not much reason to do this. If the IP is not