From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qk1-f181.google.com (mail-qk1-f181.google.com [209.85.222.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CEFE83A4F58 for ; Tue, 21 Apr 2026 14:30:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.181 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776781819; cv=none; b=liF/IkRazeiN15Bh0EM63NMItVNu+d+K71DH+BoIP0gQCFy6BVcK+MJ1/5/V2udTy/OOedAbN6OGgI7Igb4KsNMesWJ0VqXAAKANxWFKiGDuIocQGuRuZe2pg4OQqFYGJlTD0QwRQmAqevTNv+w5Yh6ud0cyU7SX5aEXBZI5B0Q= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776781819; c=relaxed/simple; bh=OOpDos/Z9VaSP4OAHAzHjn2FVBZGB3TMPAJ8x0XR0vE=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=unAu8grm4aQU3yrVBpFPdUIJRTMFBvue87/TbACYCJRWZgVCLoVqeCRcv/fofylLH5a3eRTBtJc6yIfSKjkh4oeb1qTa9ohSsfv4kdbmujZbkGuhyQJCBQdXgyxo3jR+ZZCz40MYYb19pUNxg7+odweaBVxUce7/qLy0eFa820c= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=gourry.net; spf=pass smtp.mailfrom=gourry.net; dkim=pass (2048-bit key) header.d=gourry.net header.i=@gourry.net header.b=HNkNC2gI; arc=none smtp.client-ip=209.85.222.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=gourry.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gourry.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gourry.net header.i=@gourry.net header.b="HNkNC2gI" Received: by mail-qk1-f181.google.com with SMTP id af79cd13be357-8ec37d52c0dso207035185a.0 for ; Tue, 21 Apr 2026 07:30:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gourry.net; s=google; t=1776781817; x=1777386617; darn=vger.kernel.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=J5FC0V63oKQuJOmL33I9jXWd+zejUzRlce9wtAa95Fk=; b=HNkNC2gI2eee0tIfC7zlTHK7o7liYfOU+2qWrUmMuIJhiv808HBeCaTB00/dh1kfEc 75GibcrGetQgVIcD/DGPJ5RtqR91E6MZzRcOezTyV8FtTqc+B4JVXIR4lRsy7Th0UfNH Oh5TpA0f+5JkuzRqs+QQFPEZNImMjLBkW1q9CXsKQpyEuUvrhLCGEpKGttnFqofxB5QU v/NyiNdDAsnNozXE3Ite2steK0jDTBwuQznep6tHX9RyEtIt3y8xmyJDJLHiqvX5/JqR VvVU30LAv80bt/gsCSp2zvZvBBidUjYNGQ7UbuwNksfaX0QiGtjg0GoYL0xq9y6VYwl5 8v1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776781817; x=1777386617; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=J5FC0V63oKQuJOmL33I9jXWd+zejUzRlce9wtAa95Fk=; b=mWeTbfqU7Jb4Petaw+UQ+yX1RQ4+BXuzRCy5eAfOvr0ueD/MSqienN0ea9c59pVfx5 LhGSSJpLXXN/F48w0HZyVkHkYGOe358TgZpdkm/51rdhTIOoYkqm+TPp+rkigh2NNUSW 7N5z1Zr0fYOjiGo0luqh77epYAtQ9ZnfaEn2gAAiSkhtGBaFGlpeFBJ7KALXiU7AGhLc 5UM9Hl/pUqWgfagP8n7OZFuGzCcZXVQ+ykS0A7e9ETCWteI2ZV6YGFSExRgBfdZ1zBBJ UU9E7KKKVITjjtl/1sRg8cSexeC2XOKjipRA55CjRtGhgxgjgrwPUzpV6FQVaCTHgIfJ H2aA== X-Forwarded-Encrypted: i=1; AFNElJ9g6vTh5cUBvRugAzysHDULdfmRoeQ357BubU5kZxEO3GchLZ6z1s7V42sc+l9blINuVlg97ExOlNY=@vger.kernel.org X-Gm-Message-State: AOJu0YxOef4g89ndKg0D/uuzucFcYMlTB5yMA2v9V480DQ/jrRtSp/l8 ZMpJQSTfiFGAKPdutNBh/Im17ODJPW/sqrpNgGYr83U5aVZVjvShaDMfEmCFuvOGS6U= X-Gm-Gg: AeBDiesbXPxbj+0S43yTwRWfGFkjdgBrz/2oyYjxhsx1uo3ADodJf4C6nGT4VAKwZS6 g8KBBlLEyy1ftZbwUlWrBBUwrCOouTFD/EWDbMWHxx4TOWNRFHQ2N71jEQi6FByLdDSv9Rq7NFH uucwNt+pB+bz9H4vBg0ZaboznWl9oXf6gggvw7/C9/m4dPMX/50X8y8eUUiknOlFPM6/tjTqf+c 9b5lZxV5oSqjAMslD9fzE19IFygddgw1SXK1y6M2K7SZs8g2un/jXy6rklbzPE0RZuoncqF3NgI b57aBm+4/8HY7xzO7lQC/5FpyqFbswePMKmUQb5EaS2zv0PdkFmRzwoS1Pipkj0SHts+xjATqVi mFpNopzzi64rTQhRDd93MntHXaS27HvMCEkKyl7rsJxKXQB6IvK3MQu1prVz4JSVOtf5WWmYjHz FHf4NBT6DqcE1n+4LFt9b7mIgGQVWc9e8aw3NXmgJYMuXxXx8= X-Received: by 2002:a05:620a:17a3:b0:8ee:e011:a77a with SMTP id af79cd13be357-8eee011add0mr229077285a.13.1776781814650; Tue, 21 Apr 2026 07:30:14 -0700 (PDT) Received: from gourry-fedora-PF4VCD3F ([2607:fb90:a81f:533:271b:a845:9f29:eff0]) by smtp.gmail.com with ESMTPSA id af79cd13be357-8eb19632130sm612607285a.41.2026.04.21.07.30.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2026 07:30:14 -0700 (PDT) Date: Tue, 21 Apr 2026 10:30:08 -0400 From: Gregory Price To: Joanne Koong Cc: John Groves , "David Hildenbrand (Arm)" , "Darrick J. Wong" , Miklos Szeredi , Bernd Schubert , John Groves , Dan Williams , Bernd Schubert , Alison Schofield , John Groves , Jonathan Corbet , Shuah Khan , Vishal Verma , Dave Jiang , Matthew Wilcox , Jan Kara , Alexander Viro , Christian Brauner , Randy Dunlap , Jeff Layton , Amir Goldstein , Jonathan Cameron , Stefan Hajnoczi , Josef Bacik , Bagas Sanjaya , Chen Linxuan , James Morse , Fuad Tabba , Sean Christopherson , Shivank Garg , Ackerley Tng , Aravind Ramesh , Ajay Joshi , "venkataravis@micron.com" , "linux-doc@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "nvdimm@lists.linux.dev" , "linux-cxl@vger.kernel.org" , "linux-fsdevel@vger.kernel.org" , djbw@kernel.org Subject: Re: [PATCH V10 00/10] famfs: port into fuse Message-ID: References: <20260414185740.GA604658@frogsfrogsfrogs> Precedence: bulk X-Mailing-List: linux-doc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: On Mon, Apr 20, 2026 at 08:12:17PM -0700, Joanne Koong wrote: > On Sun, Apr 19, 2026 at 5:27 PM Gregory Price wrote: > > > > struct fuse_dax_fmap_ops { > > char name[FUSE_DAX_FMAP_OPS_NAME_LEN]; // 16 bytes > > int (*dax_fmap_parse)(struct fuse_dax_fmap_parse_ctx *ctx); > > Just a note for later, if the bpf approach gets pursued further: > instead of making this a dax specific ops, I think this needs to be > integrated interface-wise with Darrick's fuse-iomap work since he does > the same thing. I think dax_fmap_parse() could be renamed to something > like iomap_setup(), where userspace can use this to do any sort of > generic setup, whether that's mapping related or dax related or not. > In my mind, the dax vs non dax distinction is handled by the fuse > iomap plumbing that chooses which iomap entry points to call, but > beyond that, the callbacks and struct ops themselves should be > generic enough to be shared between the two. > I think this is reasonable. I'm not a FUSE wizard either, but I would presume the iomap_setup() process would just essentially be John's existing GET_FMAP / GET_DAXDEV code bundled. GET_DAXDEV happens lazily to save him the round-trips to userland if the DAXDEVs have already been seen previously. I think your proposal does in fact save him further round trips, and it would probably solve the performance impact he saw from porting to FUSE. > > And otherwise, imap_begin() works exactly as Joanne proposed, but with > > in-kernel cached data instead of the bpfmap. > > > > const struct dax_simple_meta *meta = (const struct dax_simple_meta *) > > bpf_fuse_dax_resolve_get_meta(ctx, 0, sizeof(*meta)); > > another note for later, if the benchmarks prove promising and after > the LSF discussions we decide to go with this approach: imo we > could/should repurpose this into a generic > bpf_fuse_iomap_get_inode_meta() that returns a bounded pointer into > whatever opaque blob was cached on the inode during iomap_setup(), > where it'd be a generic kfunc serving both the dax and non-dax case > for any kind of mapping layout > Note that Christian Brauner just said he preferred not having dedicated bpf storage in struct inode [1]. sans BPF, is there value in such a metadata blob existing? If there was a generic format, then I suppose the blob storage would not be BPF specific, it would just overload it (simple union). [1] https://lore.kernel.org/linux-fsdevel/20260421-arsch-gelernt-e0b5bcd8a7ff@brauner/T/#m8fea90f5ed4a1b23bdc2563d978948b263b2030b ~Gregory