Received: by 2002:a05:7412:3b8b:b0:fc:a2b0:25d7 with SMTP id nd11csp2426717rdb; Mon, 12 Feb 2024 04:46:38 -0800 (PST) X-Google-Smtp-Source: AGHT+IHS5GFnjCcMiHKrKt+dvExS1fNf5OJeb7L8UuGHDn660j1L+0xKRyego2895jMCfvvgYXLr X-Received: by 2002:a17:90b:3e89:b0:297:11a7:e789 with SMTP id rj9-20020a17090b3e8900b0029711a7e789mr2706254pjb.45.1707741997806; Mon, 12 Feb 2024 04:46:37 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1707741997; cv=pass; d=google.com; s=arc-20160816; b=V8s05EY8kzBiPW+xYWBYtwQGRB9IjIR7VdbhQSVDO3RgHdmJq/9uO0qBvztpbWv/Bc pLg4hnt8WfDFA3f0qpTw+PeYyVCXGBTcfgvNnst4Ke9jDxAWr81goni3u78AwRbSgF9B zxQ+mkOIl1Q/QJbS00w/8r/YMwgiRPYht7ZUFOpz8SqqN83FplPi2iT1D+dvDITsgsBi tuJQ7PZfrmHkjyfZitR6csPVuZV7/hD5map8Am7f/Oe8pyqRfvNpxeeoZrvD3y1V9EMx CeIMUuu4eYhdzTYVmK3f9vwSjkKHi5bIgQn/39CWa5/W8Z2kLOVSFjG/bDnUK55LWxG8 1vAg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=in-reply-to:content-disposition:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:message-id:subject:cc :to:from:date:dkim-signature; bh=CDSPlvIYjBlKyfzOSysIpxi5bGhwenO4Xb+dpw1JB1E=; fh=/tiep2IU/KxYZRa3/eG8V9nNcI1e6pMu8Jsk6ntrjb4=; b=jFLiCUFFcGHGzVyLDWc/B9g1iOmie5DIsygny2KIE6RaJpKs6GlvLpKbXI90R7IQ6z 32upu15poCgxrQfjSdhVI6RATgq9u5lq+f+d+3ppz2QsiN344vAExgaXaiwyLDU0um1B 4ikGCmXyHeg6EPft0jANT0FaQSMoRHGj2PtsJggPYxYqazU5o+cXLdgw7tdDNSpyJdf2 PVWmmyM/pSgQHKIivvUXEr+J542hOATMjMVnTb2vXuxLLZHaEliu0IxniMrryIZfbBN3 zaTFH8y4E3Hn2JXoraN88qBwjUOGdJNT/S6Zf5xafp8kVdQtSGwhy0LijrS+bBkUvdgH eGSQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=IJO4yTxU; arc=pass (i=1 spf=pass spfdomain=redhat.com dkim=pass dkdomain=redhat.com dmarc=pass fromdomain=redhat.com); spf=pass (google.com: domain of linux-kernel+bounces-61570-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-61570-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com X-Forwarded-Encrypted: i=2; AJvYcCV+oH8wkDr+81RV00cxaE5bdIb+l4U54vcFOik9kGsweGMkyds6p9CD/SK2351onuwjRJ8mPrgADvW35qrLh61A0nmj6tdISCC26wLDmw== Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id s16-20020a17090aad9000b00298988142e2si27380pjq.84.2024.02.12.04.46.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Feb 2024 04:46:37 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-61570-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=IJO4yTxU; arc=pass (i=1 spf=pass spfdomain=redhat.com dkim=pass dkdomain=redhat.com dmarc=pass fromdomain=redhat.com); spf=pass (google.com: domain of linux-kernel+bounces-61570-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-61570-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 41847284F03 for ; Mon, 12 Feb 2024 12:46:04 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4DFF63A1DC; Mon, 12 Feb 2024 12:45:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="IJO4yTxU" Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BC2AD3A1A1 for ; Mon, 12 Feb 2024 12:45:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707741948; cv=none; b=iWE2wNIhaajVjE3GN45Fo+qyfKBVdNpRrhJk98a0+WaYddJCInZi0zYxuhk2wcWWyjKYX5q4afiy3jWOGm/ViZTfCzNIXFPzie52rsrc5fB4XhpGY6t3mYTLuuJmn/fZuMW48qDcxdLMO/GO3v6cTUFadKwGDcsUnFXToJJMaY8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707741948; c=relaxed/simple; bh=47Vc+He3k3RnRH0Ql7hR/kVezI3csD20gT8aPlqqG/w=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=hWilx0OCthbURvobHyNaXqWekAUfCn5f7UMxPSbl9h7VFvDEWnvhHvviMyHvqdpLBkZ0Nr0gM0E/cENbKKq74rV6+FMxucH1g6kI5y1eY8IoQtc5APZObjBa/Iyc7HLmAN3YCyriZW8X1gOleSSjp9ejPsADUDbkfWTZCl0FqJE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=IJO4yTxU; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1707741945; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=CDSPlvIYjBlKyfzOSysIpxi5bGhwenO4Xb+dpw1JB1E=; b=IJO4yTxU9HC6nXUps5gL36XZmVLsSWPrxmz02UIGsV/7CcQuzDpZbSx/C+YyqMmc6f3soX 8GhG8xi/vO7uxZ3WTwIcJtfXcmxUH7ut4BHk2hMW7oosMaDcF8MUzs5YTNoWWfpepdNqcW UVv2ijBgr1fuq1ol68Y5fqVDnTjwnSY= Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-417-ba70zfwLNsySkNpyQxSsgg-1; Mon, 12 Feb 2024 07:45:42 -0500 X-MC-Unique: ba70zfwLNsySkNpyQxSsgg-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 2CEB81C29EA0; Mon, 12 Feb 2024 12:45:42 +0000 (UTC) Received: from bfoster (unknown [10.22.8.118]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 9FCFBC2E1E6; Mon, 12 Feb 2024 12:45:41 +0000 (UTC) Date: Mon, 12 Feb 2024 07:47:00 -0500 From: Brian Foster To: Kent Overstreet Cc: Dave Chinner , brauner@kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, Jan Kara , Dave Chinner , "Darrick J. Wong" , Theodore Ts'o Subject: Re: [PATCH v2 3/7] fs: FS_IOC_GETUUID Message-ID: References: <20240206201858.952303-1-kent.overstreet@linux.dev> <20240206201858.952303-4-kent.overstreet@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.8 On Thu, Feb 08, 2024 at 04:57:02PM -0500, Kent Overstreet wrote: > On Wed, Feb 07, 2024 at 08:05:29AM -0500, Brian Foster wrote: > > On Tue, Feb 06, 2024 at 05:37:22PM -0500, Kent Overstreet wrote: > > > On Wed, Feb 07, 2024 at 09:01:05AM +1100, Dave Chinner wrote: > > > > On Tue, Feb 06, 2024 at 03:18:51PM -0500, Kent Overstreet wrote: > > > > > +static int ioctl_getfsuuid(struct file *file, void __user *argp) > > > > > +{ > > > > > + struct super_block *sb = file_inode(file)->i_sb; > > > > > + > > > > > + if (!sb->s_uuid_len) > > > > > + return -ENOIOCTLCMD; > > > > > + > > > > > + struct fsuuid2 u = { .len = sb->s_uuid_len, }; > > > > > + memcpy(&u.uuid[0], &sb->s_uuid, sb->s_uuid_len); > > > > > + > > > > > + return copy_to_user(argp, &u, sizeof(u)) ? -EFAULT : 0; > > > > > +} > > > > > > > > Can we please keep the declarations separate from the code? I always > > > > find this sort of implicit scoping of variables both difficult to > > > > read (especially in larger functions) and a landmine waiting to be > > > > tripped over. This could easily just be: > > > > > > > > static int ioctl_getfsuuid(struct file *file, void __user *argp) > > > > { > > > > struct super_block *sb = file_inode(file)->i_sb; > > > > struct fsuuid2 u = { .len = sb->s_uuid_len, }; > > > > > > > > .... > > > > > > > > and then it's consistent with all the rest of the code... > > > > > > The way I'm doing it here is actually what I'm transitioning my own code > > > to - the big reason being that always declaring variables at the tops of > > > functions leads to separating declaration and initialization, and worse > > > it leads people to declaring a variable once and reusing it for multiple > > > things (I've seen that be a source of real bugs too many times). > > > > > > > I still think this is of questionable value. I know I've mentioned > > similar concerns to Dave's here on the bcachefs list, but still have not > > really seen any discussion other than a bit of back and forth on the > > handful of generally accepted (in the kernel) uses of this sort of thing > > for limiting scope in loops/branches and such. > > > > I was skimming through some more recent bcachefs patches the other day > > (the journal write pipelining stuff) where I came across one or two > > medium length functions where this had proliferated, and I found it kind > > of annoying TBH. It starts to almost look like there are casts all over > > the place and it's a bit more tedious to filter out logic from the > > additional/gratuitous syntax, IMO. > > > > That's still just my .02, but there was also previous mention of > > starting/having discussion on this sort of style change. Is that still > > the plan? If so, before or after proliferating it throughout the > > bcachefs code? ;) I am curious if there are other folks in kernel land > > who think this makes enough sense that they'd plan to adopt it. Hm? > > That was the discussion :) > > bcachefs is my codebase, so yes, I intend to do it there. I really think > this is an instance where you and Dave are used to the way C has > historically forced us to do things; our brains get wired to read code a > certain way and changes are jarring. > Heh, fair enough. That's certainly your prerogative. I'm certainly not trying to tell you what to do or not with bcachefs. That's at least direct enough that it's clear it's not worth debating too much. ;) > But take a step back; if we were used to writing code the way I'm doing > it, and you were arguing for putting declarations at the tops of > functions, what would the arguments be? > I think my thought process would be similar. I.e., is the proposed benefit of such a change worth the tradeoffs? > I would say you're just breaking up the flow of ideas for no reason; a > chain of related statements now includes a declaration that isn't with > the actual logic. > > And bugs due to variable reuse, missed initialization - there's real > reasons not to do it that way. > And were I in that position, I don't think I would reduce a decision that affects readability/reviewability of my subsystem to a nontrivial degree (for other people, at least) to that single aspect. This would be the answer to the question: "is this worth considering?" Brian