From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qk1-f172.google.com (mail-qk1-f172.google.com [209.85.222.172]) (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 096583D8907 for ; Tue, 21 Apr 2026 14:30:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776781819; cv=none; b=HqDZhHma1LnHzMQurpZvZf9wAj/mUnj1PLTeZRVuvzfw7oti0nOkwa4o4BVDBzyFVvS3ZdYC8OFOOqQjer7c0yQdO3lUlQ/EMl/m3sevcP0sLTnQf353V9mugWFeFyDFawfxuoWbz2/qfepWTX1ps5q0EyUhHlQmB8bO3w89HNE= 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.172 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-f172.google.com with SMTP id af79cd13be357-8ec37d52c0dso207035785a.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=PYlP6j+JHeOaPCWKfzgrTV+lWZ+WmuOjgCI/qPGuf2tTh4XFAy8PgtQWSyGjpmpZkr KxeNPqcLFvnyGMyIb3p0BzA/A6lySCqWJh3eT4ccFnoDdotyP8A5dOyCeF2yMLG4knzQ rB0EqD2oY/vqeMmVPF+8x69bnsk2gqqGp/xi0ZyPWsA2QCT5JpIOcPIvrG4e5cOKCiyN UURoOXLnb31wODE64NWN0efxC+fE/L2FcKGWPhX2GgLfK4vBeXUm1P0GgLcKvCc99v6j itZBKhkKRzhljmR73ef6ouVkLppHa57DJsvvjg6Zuc04lUE5CVyQ0lm3QaIm33Ec4Q9h Bmkw== X-Forwarded-Encrypted: i=1; AFNElJ/qukQHrITRL+s6IlnuXIWrns4pcxz0tQ45UZqcr6FcnNmMDqak1OEB/2XLuBM3pkbL83C2V6V+YNEeXA4=@vger.kernel.org X-Gm-Message-State: AOJu0YwVtx4YhTjB1gSgTLE/JMPaeUubW/oFCUCSHfNaDf/6FnMIkfoS Fxk62djclbI+Q/AE60dY64r5l21ZifBR/dyJR3v6nLRPQi5IyrL2yWtevYbGg1N/MHE= X-Gm-Gg: AeBDievSlbZ7tV5t9CA4nj9PbzarlkSTO8tHLkKIKpw5lbwDe7wlkTjb4uzDeQ8FRDS oLNiCNHbHp5oVhjRKW4ZPf6aobB3KxhQx/mEUWQOjM8p8raqgoj4ANiANELzDTK+vqLnITKR5nN J4+XT4nRLis2vStU5xcKcypJ1qPn5WgobI3UAY8Dpabihvo3izZeFVFnSTEwjIvjdHQzQEjA1NA n8Y7dNCCjaUd8yNwczF65QrZCNNYf6pbTelssSFAslFqnGzHHjinYfWrs0+xB5KvQXo+/QGOSoy mKlkD+qdZDlECPWu5Jo1sT5sbt3DgXRVGh8d7IAqWw0fHKP2Bhzoi9kqk79yFATe5OqO+9VPb6q EFNlFwC5h3sP9AE84yVn7pVLZ4NwcCcKam2sNdJJRbXNfyo2Nzh2Dr6ZI2WEi1L8obX+pJSrxD0 gSqywCGJvGhZITTw3dx/V5mwXtD7auPao6/24FpYW8KdzPkaw= 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-kernel@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