From mboxrd@z Thu Jan 1 00:00:00 1970 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=-1.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_PASS 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 86EBCC43381 for ; Tue, 19 Mar 2019 17:53:12 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 659AD2146E for ; Tue, 19 Mar 2019 17:53:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727178AbfCSRxL (ORCPT ); Tue, 19 Mar 2019 13:53:11 -0400 Received: from mx1.redhat.com ([209.132.183.28]:57114 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726612AbfCSRxL (ORCPT ); Tue, 19 Mar 2019 13:53:11 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 2670589C42 for ; Tue, 19 Mar 2019 17:53:11 +0000 (UTC) Received: from [10.33.36.12] (unknown [10.33.36.12]) by smtp.corp.redhat.com (Postfix) with ESMTP id 045555C1A1; Tue, 19 Mar 2019 17:53:07 +0000 (UTC) Subject: Re: [PATCH v2 1/2] gfs2: Convert gfs2 to fs_context To: David Howells Cc: cluster-devel@redhat.com, linux-fsdevel@vger.kernel.org References: <20190319160436.20817-2-anprice@redhat.com> <20190319160436.20817-1-anprice@redhat.com> <11353.1553015136@warthog.procyon.org.uk> From: Andrew Price Message-ID: <040cfbf7-9f27-b90b-262d-15a4e07eab32@redhat.com> Date: Tue, 19 Mar 2019 17:53:07 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 MIME-Version: 1.0 In-Reply-To: <11353.1553015136@warthog.procyon.org.uk> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Tue, 19 Mar 2019 17:53:11 +0000 (UTC) Sender: linux-fsdevel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org On 19/03/2019 17:05, David Howells wrote: > Andrew Price wrote: > >> + pr_warn("-o debug and -o errors=panic are mutually exclusive\n"); >> + return -EINVAL; > > return invalf(fc, "gfs2: -o debug and -o errors=panic are mutually exclusive"); Thanks. > > (Note: no "\n") > >> + if (result.int_32 > 0) >> + args->ar_quota = opt_quota_values[result.int_32]; >> + else if (result.negated) >> + args->ar_quota = GFS2_QUOTA_OFF; >> + else >> + args->ar_quota = GFS2_QUOTA_ON; > > I recommend checking result.negated first. OK > >> + /* Not allowed to change locking details */ >> + if (strcmp(newargs->ar_lockproto, oldargs->ar_lockproto) || >> + strcmp(newargs->ar_locktable, oldargs->ar_locktable) || >> + strcmp(newargs->ar_hostdata, oldargs->ar_hostdata)) >> + return -EINVAL; > > Use errorf(). (Not invalf - the parameter isn't exactly invalid, it's just > that you're not allowed to do this operation). Yes, that makes more sense. >> + error = gfs2_make_fs_ro(sdp); >> + else >> + error = gfs2_make_fs_rw(sdp); >> + if (error) >> + return error; > > Might want to call errorf() here too. > >> - s = sget(&gfs2_fs_type, test_gfs2_super, set_meta_super, flags, >> + s = sget(&gfs2_fs_type, test_meta_super, set_meta_super, flags, > > Try and use sget_fc() please. That happens in patch 2/2 for gfs2meta. I might just roll both patches together in v3 so there's no intermediate churn. > If you look at the fuse patchset I cc'd you on, > there's a commit there that adds a ->bdev and ->bdev_mode to fs_context that > may be of use to you. Yes, that looks useful - thanks. > Can you use vfs_get_block_super()? It might be possible if we can rearrange things so that this can be done outside of the function: if (args->ar_meta) fc->root = dget(sdp->sd_master_dir); else fc->root = dget(sdp->sd_root_dir); but we can't do that in our fill_super() because it needs to be selected whether we have an existing mount or not. > Would it be of use to export > test_bdev_super_fc() and set_bdev_super_fc()? There's only a little maintenance value in it, I think, but we could certainly use them in gfs2 if we can't solve the fc->root selection issue. Andy