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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5ADACE64002 for ; Thu, 21 Nov 2024 18:31:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E1C0F6B007B; Thu, 21 Nov 2024 13:31:35 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id DCC2C6B0082; Thu, 21 Nov 2024 13:31:35 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CBB576B0085; Thu, 21 Nov 2024 13:31:35 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id ACDAA6B007B for ; Thu, 21 Nov 2024 13:31:35 -0500 (EST) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 58E994148A for ; Thu, 21 Nov 2024 18:31:35 +0000 (UTC) X-FDA: 82810943628.21.1FA5034 Received: from mail-lj1-f178.google.com (mail-lj1-f178.google.com [209.85.208.178]) by imf21.hostedemail.com (Postfix) with ESMTP id C483E1C0010 for ; Thu, 21 Nov 2024 18:29:52 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=E5LOgw0F; spf=pass (imf21.hostedemail.com: domain of amir73il@gmail.com designates 209.85.208.178 as permitted sender) smtp.mailfrom=amir73il@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1732213831; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=q8sUkGeUy2sHCwOUXx/YOFYIvJypbi+uhVMOVlCFTao=; b=SoEXtefEdrE0avWgVveOP1HBXSCeEkxdM+zCeOUTJmZ6xbXZQGasnTZRms6vUahYIP7VOF V6tWy2uYT9nm5BknQZX5COI7N9A3sHyGwTb1Kxjw1i3of0GXMhhz/NjTGIRLcdPtrxLnqU xAwrer9CNM1wTRCXNCB+31ihQrc5fcA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1732213831; a=rsa-sha256; cv=none; b=HqUWD4xCTq+qjHWvTNCEkgRFaz1GJE8OCwVfiOWhd2A2ChsvTx+FCtqBGQifAAPRW1IHfz S6zgyVGn9cjBp7s3DtmqQZUXweyybDqIp1RAIMh/wmZm9Aw3Yu7ZjWR4fpqD4U6rIleTy2 5qW3iTEQoIsiocckNfhr+ms6d1p0zRE= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=E5LOgw0F; spf=pass (imf21.hostedemail.com: domain of amir73il@gmail.com designates 209.85.208.178 as permitted sender) smtp.mailfrom=amir73il@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-lj1-f178.google.com with SMTP id 38308e7fff4ca-2fb51e00c05so23249271fa.0 for ; Thu, 21 Nov 2024 10:31:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1732213891; x=1732818691; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=q8sUkGeUy2sHCwOUXx/YOFYIvJypbi+uhVMOVlCFTao=; b=E5LOgw0F0X0uhd4lImZTPfrMPsP4SYip1w2ngjJt2NrtjSxD+Rv+SsgE3EojL9wkc+ ZVZMTCbQaDvJfk8UA5+IaoooTdxzm9AMmif4nPRhACkmHW1gARmes1mnbUUxwr8MD9iK JGDSEkGvlgHewMF24kQFerM92XybtOw9gZgNy41Z5cpbgX/PmWynqdTJgNvGFUZzqYkX TT9i22W23uOoXMDgxQVPFg+BjuT2m7cwrcvLxTk/SA7K4f9137tfbm+bhT2UUVB5ogKD IgW9+fwi4JKRoOBF6CsUuCwzs9tauqcxn06KMX0M9wuo4mU8c3PvCA3cKFSUNPs+v10+ i1rg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732213891; x=1732818691; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=q8sUkGeUy2sHCwOUXx/YOFYIvJypbi+uhVMOVlCFTao=; b=IV44g4RYjVEWSUHbKyfGBrnN46fdsw3Dezw2oAtA6xzLzDExWx+uqEF2ION55ioaQN f9JUr3zBWyae/pGEuwsZR7ujWWMd/mpQKcZd8SmLGcunbAiB549KDpPZV8GRt86Szi4W +qRmQzGqwkBp8y0prIw966Qfg5Ss+1pLWSVGYogwwB9LiA5ICzUh+femCibwFNxyPvVw A7YNjvaG8QnaAMnP7QCw5O7lK33+KXSdBD2StyY0LFmJd1StaqZGRmPgVWhtM/qMc2BP 1FsIlg3R2Ut5g9QaBj3s2pMLx1p0YW7JntQofvsSnzTlaPAeVQgXYLvFkGv5bXVN5JQM yWiA== X-Forwarded-Encrypted: i=1; AJvYcCXMQC0kZY9O66gmckcGtzeK7GfyWT4Xo3olYflrc7X518FrBTUb1Hzo3dAihUOND9B7Idaov2Nnzw==@kvack.org X-Gm-Message-State: AOJu0YxB6sEn/jtSJAxTMU5fzo++6M2/wTmUful5pklrEPJ1tZZMYtet 7U2oXZA447gk6lUGB58cvzWPuumsmsGIhYXlw55nV5uxtYTH1Z+Ti1/HlD2qkI0WiE/YihtyZZ9 5eV90sZ9zSPjzu6f2/ATAVncDaEs= X-Gm-Gg: ASbGnctsusLBazgEb6tGP1oNpHJVmmeZ8A0hKDDUwqCQDkyOYcjHAR53uWkC5vWgnd1 YS8MbfT6FqDZ+MxeJEo+rw00U7m899gg= X-Google-Smtp-Source: AGHT+IEldLUO8T8htIjF2AQfaERgaC4UTkjSuef9nnywzNlaBFoQgol0xShwH40QKISC70XNYyKYcQsEtPoJAUUnBXU= X-Received: by 2002:a2e:be9e:0:b0:2ff:59dd:9242 with SMTP id 38308e7fff4ca-2ff8dcb1d15mr80129191fa.35.1732213891042; Thu, 21 Nov 2024 10:31:31 -0800 (PST) MIME-Version: 1.0 References: <20241121104428.wtlrfhadcvipkjia@quack3> <20241121163618.ubz7zplrnh66aajw@quack3> In-Reply-To: <20241121163618.ubz7zplrnh66aajw@quack3> From: Amir Goldstein Date: Thu, 21 Nov 2024 19:31:20 +0100 Message-ID: Subject: Re: [PATCH v8 10/19] fanotify: introduce FAN_PRE_ACCESS permission event To: Jan Kara Cc: Josef Bacik , kernel-team@fb.com, linux-fsdevel@vger.kernel.org, brauner@kernel.org, torvalds@linux-foundation.org, viro@zeniv.linux.org.uk, linux-xfs@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-mm@kvack.org, linux-ext4@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: 71ifmxhigtsrsq8pjw18r166c4ha5obc X-Rspam-User: X-Rspamd-Queue-Id: C483E1C0010 X-Rspamd-Server: rspam02 X-HE-Tag: 1732213792-968790 X-HE-Meta: U2FsdGVkX19yny46erswVTBnLZTG/w5d/TOVEM6TeNjaiO5ETd3m3jV85TWHJHGUbjJix6C5GQG48U5wj9Al15dLLwdjloaGbT7pwH2gArcwJjXyNVtDZapPRk5FdCUFveqFRsGbPd52R30TnQm4dRSaR7g41x+IVnolSff0JkO9AqUEh08N395iWPae1Dhd2DKmNQt2jjiBxtYv8jeirntqIR9+IjvtO9P8KUUHi8f2TALRUJl2q9AIUutnfXiECBTKpv0bLEMwMapFTzeBcF6lleOwdUN88OfTrm6cIwt6QTQ37ATCqRhkxqflDk1wlNPqSghBvq43N5YGQGuvTx8fFenuiYVt0r/l1cqCxzfVBot2GKCoaTvWx8qtUBWywtNeIdPqUu60H+HYoq+YJJ/wBGlt30qDtIJ87dg+8knK7A8haNrHXxytUxR797dIL1agkAT8NtyriuOqk/54zXmEeJl+vHRfKc1JYqrhQViq0kktEiyp0SSPAMs+lWPrTo2idSXUPUSY4WOKacJpcloPdM8HsF7d1JgegRc9ncPsvPYF1ixmtJmNvl8v1nCDdEzUbuvo3oNcKOW9eOxZn2vZqLdrjIMXSu6PUYOk7BUO394ppJfjVtWBzbT6Q+S6PsdNBmWkuJK/fKD7Daou1uBWTogPmFYdgSZoMeBTDhlo1fEAKjsGEHXZTlEmyjUw8EuhdA9P81bwKjVTASO2oHw6Ei8kUMh35vbqC9aeS7SamTxin3wLR+KEgjSmXCwTpUjUgTa/cCbfOKKPbhqXQnix+0FMWq6J04WYYBYXBeFIfKFijZZmkZ76Iy0IKzT/B16LckYr6f2EkrwtoAwAuDdUbadg5jt/ay9KOxxin/kS2armu3sYp8QouvvdnMeZhXnZaYGIHIHUkf+1D8oUvORdPTfwLVbofCdF2wnQg0KYvp3dsrQuZ+J98F+qzENtX5z0MXH4R8jws6J5vdW 2RK3HoF3 iA8oysJncKYpFGD4qjvIKq9p0vtgoYbm8q3tHEs1EQz7auFQiPvWRrb1b6qStFg8li1iDu5Rsnxi3E4yeFqaGWsHs/ZhvJkhEQp1MiyRPW8lvz0EudLafcbpiNFA2lqrJFDxwdQVuFcnGBBd+ARllSVut9nYLMm4JBx30vPozR/POsYqXeyiM1ViF4KS0RtUiQQVB8ef5epUzrwG7JYbA9rRXQTutolGeIjOJNzqHCO3gZts+EmklOBXKOVpBqk2qjp+04LOIfZ7A03ev8hcmug/Tqu/5vyda6FXscBKsKryvqGFfpraesTcJ6eqwvKPTs3st1j06D5hmb7pebJBZ42jkPgaChY12MwMZ8+Pyrc08kJXHLXtmQ3+stxvMgqBYZo9rwptC6/9Jgzk= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Thu, Nov 21, 2024 at 5:36=E2=80=AFPM Jan Kara wrote: > > On Thu 21-11-24 15:18:36, Amir Goldstein wrote: > > On Thu, Nov 21, 2024 at 11:44=E2=80=AFAM Jan Kara wrote: > > > > > > On Fri 15-11-24 10:30:23, Josef Bacik wrote: > > > > From: Amir Goldstein > > > > > > > > Similar to FAN_ACCESS_PERM permission event, but it is only allowed= with > > > > class FAN_CLASS_PRE_CONTENT and only allowed on regular files and d= irs. > > > > > > > > Unlike FAN_ACCESS_PERM, it is safe to write to the file being acces= sed > > > > in the context of the event handler. > > > > > > > > This pre-content event is meant to be used by hierarchical storage > > > > managers that want to fill the content of files on first read acces= s. > > > > > > > > Signed-off-by: Amir Goldstein > > > > > > Here I was wondering about one thing: > > > > > > > + /* > > > > + * Filesystems need to opt-into pre-content evnets (a.k.a HSM= ) > > > > + * and they are only supported on regular files and directori= es. > > > > + */ > > > > + if (mask & FANOTIFY_PRE_CONTENT_EVENTS) { > > > > + if (!(path->mnt->mnt_sb->s_iflags & SB_I_ALLOW_HSM)) > > > > + return -EINVAL; > > > > + if (!is_dir && !d_is_reg(path->dentry)) > > > > + return -EINVAL; > > > > + } > > > > > > AFAICS, currently no pre-content events are generated for directories= . So > > > perhaps we should refuse directories here as well for now? I'd like t= o > > > > readdir() does emit PRE_ACCESS (without a range) > > Ah, right. > > > and also always emitted ACCESS_PERM. > > I know that and it's one of those mostly useless events AFAICT. > > > my POC is using that PRE_ACCESS to populate > > directories on-demand, although the functionality is incomplete without= the > > "populate on lookup" event. > > Exactly. Without "populate on lookup" doing "populate on readdir" is ok f= or > a demo but not really usable in practice because you can get spurious > ENOENT from a lookup. > > > > avoid the mistake of original fanotify which had some events availabl= e on > > > directories but they did nothing and then you have to ponder hard whe= ther > > > you're going to break userspace if you actually start emitting them..= . > > > > But in any case, the FAN_ONDIR built-in filter is applicable to PRE_ACC= ESS. > > Well, I'm not so concerned about filtering out uninteresting events. I'm > more concerned about emitting the event now and figuring out later that w= e > need to emit it in different places or with some other info when actual > production users appear. > > But I've realized we must allow pre-content marks to be placed on dirs so > that such marks can be placed on parents watching children. What we'd nee= d > to forbid is a combination of FAN_ONDIR and FAN_PRE_ACCESS, wouldn't we? Yes, I think that can work well for now. Thanks, Amir.