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 C4E7ACE8E70 for ; Thu, 24 Oct 2024 13:06:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 537056B0095; Thu, 24 Oct 2024 09:06:22 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4E6BD6B0096; Thu, 24 Oct 2024 09:06:22 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3ADF36B0098; Thu, 24 Oct 2024 09:06:22 -0400 (EDT) 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 1E2926B0095 for ; Thu, 24 Oct 2024 09:06:22 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id D41CD121232 for ; Thu, 24 Oct 2024 13:06:04 +0000 (UTC) X-FDA: 82708518690.06.1AD7C12 Received: from mail-qt1-f171.google.com (mail-qt1-f171.google.com [209.85.160.171]) by imf09.hostedemail.com (Postfix) with ESMTP id 94CDC14000B for ; Thu, 24 Oct 2024 13:06:06 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=U4ceS0iV; spf=pass (imf09.hostedemail.com: domain of amir73il@gmail.com designates 209.85.160.171 as permitted sender) smtp.mailfrom=amir73il@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1729775101; a=rsa-sha256; cv=none; b=MoQric8XKGyDTXCXAxFGuqSeYez5H4g9E1z3xPVa6v1cs2ZniMHqdSyYe9QjgSStcNaqjh J//tlVMgNZ5ODc9PLdxLV1Z8JsOut5TBmA3YvHmvFWuf879has677MrZE5gMXmrMWhYkog DTpTeDGBrJqluJy41JZ2nyS8UjFtR8A= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=U4ceS0iV; spf=pass (imf09.hostedemail.com: domain of amir73il@gmail.com designates 209.85.160.171 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=1729775101; 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=EV440ACCLF9AlGZ+8I23qHeuAgKIxh1fOgjLQ6Jdp94=; b=Bh1o+8sYhYyP2P4RtmFM2O9fpi/vGuFapZGbUCZXCLOkamomGzqxdj+E2Pq084wrxOX9Ab z1GJjHSfJuGte9Q28+Q3ZE0PZCwTefXOT+l/BHNZv4PVtIfQ6oSrGO0V8GirrR04oUgOjb g57awDRcjJ1foy8b2OCRLwHLEDl1bGw= Received: by mail-qt1-f171.google.com with SMTP id d75a77b69052e-46096aadaf0so5642481cf.2 for ; Thu, 24 Oct 2024 06:06:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1729775179; x=1730379979; 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=EV440ACCLF9AlGZ+8I23qHeuAgKIxh1fOgjLQ6Jdp94=; b=U4ceS0iV/IJ0mxplUi5ehrUa7XjyUlVBwcve9wOjHWlsBU2V/+9JmIH/a1wQlZirAO Ch8VwcOmz1cG/DmArfNmezFEKu29H0lc32RPsYVbCu2qcmvrIrR10TOqMWCgGQLRt9rv Ow0LG4FttbXvxKcRR8JeH/y+KIlLbaWHNgzwPoZhzGAhA6PTJ0sHcTPRNqc/Q9gKywFU rAKlNxFTfOiTTQvyyuTvJqfYmvFzoRyULH15lZZ/w/9AF9Ah2LnWiq9bjWOQc0CNnOur IbQcTHmHUoHi0kGqKjQu3/Q1qvF5SLfco+vhL3oSx4V8V34z7C6ItuStgKiO3xPFeDwC v1EQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729775179; x=1730379979; 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=EV440ACCLF9AlGZ+8I23qHeuAgKIxh1fOgjLQ6Jdp94=; b=d6dpZyj9v0DrHgjpUsV55JHvSaf2S2Y0Em5XfOCpzt1qBpceB3MEDJgbczxz376LE/ h2UhxZwLce7D8Dcnfv08rT6+qbp0ZUeulO2SeYdkumrVflLtmfVUihESG6T6JD3mBDCB mh7aJjd0GZNzhdEJYSXei4OPlXaUk03VebqU+3dHkpIROMbSZ+mZJXoN2rHDqRHZIQyb RRkZTQbHggONYUakjpSR6iFAJ01hyXNIVGf+T/AvJOKH2kNl6yPi82D2eUIiyLVuN4jQ KIo3doIq7EQ3SFGZQA9WtBMHWNKVDGqk5rU9rdqOLHa8F+Sa9EGa8bawXiJ1cfbb8gay fJlA== X-Forwarded-Encrypted: i=1; AJvYcCXMRSzGz+8i3Ug07qO+oh2LeAATY8G62bDI73kuAnt/JVf5PyVxt9goE7gbdDUx7J9GIgBiBEks2A==@kvack.org X-Gm-Message-State: AOJu0YxEpj3BZVDREJaZDQ9p/7d/CR1k5EXKYmqYjgpcaTS7PldtgJGj CtOpEgaRWJGxq6dDymz6DDnWMw/gX/B+zAxbJmuZTZxag0w+9ETSiUvxQPwVQnYebwFIzIMqqyN Wq0vE5/FPnDqV4cfFNSw8OGyq9YU= X-Google-Smtp-Source: AGHT+IEIz8fnfbns+VURqZ8Fl6RXgEBHOkqEMI4OdzbZoLgol68YL2Busr8J0hKYCSW/XqtN8XJgmuR8iMUv5K38FlE= X-Received: by 2002:ac8:5b8d:0:b0:460:39be:10a8 with SMTP id d75a77b69052e-461146d6ef7mr65129111cf.32.1729775178536; Thu, 24 Oct 2024 06:06:18 -0700 (PDT) MIME-Version: 1.0 References: <4b235bf62c99f1f1196edc9da4258167314dc3c3.1725481503.git.josef@toxicpanda.com> In-Reply-To: <4b235bf62c99f1f1196edc9da4258167314dc3c3.1725481503.git.josef@toxicpanda.com> From: Amir Goldstein Date: Thu, 24 Oct 2024 15:06:07 +0200 Message-ID: Subject: Re: [PATCH v5 03/18] fsnotify: generate pre-content permission event on open To: Josef Bacik Cc: kernel-team@fb.com, linux-fsdevel@vger.kernel.org, jack@suse.cz, brauner@kernel.org, linux-xfs@vger.kernel.org, linux-bcachefs@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: egiqthfru7ycpnujaz41yg66knbysngz X-Rspamd-Queue-Id: 94CDC14000B X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1729775166-676796 X-HE-Meta: U2FsdGVkX1+2kYdcxcOXWD5THwRwxYJPqxnuPx3+tJhiH4ThO0THBQ3mStkX9RaFziB9WTB9ywj0bGLzW0fh+Ftlrp76KuMvjN4Z8M3YJcl1McvgPAuSUJqJ8xEHrHcv7UBh0cORdmztP5AGtjqULme8i+74s3T06yiQWO3SgZduoJT1CXfdscdxfu2wEGrY6Vd7FKySQ1Zlf4tV/tUXz03fSlHTpI3v/MXY2RkiCM9u0/y53y0CMdss/fXbQCUn8pa0VROm0An60BeruJqCU19x65pKayfstjZCHDVqKaRxWpth9AEuO+SPMp+wi1H246/nc3TCkKwsI8+0zISs/xj5t33tGHD1J4V6gqBIkSe2Io/mtXTql3C2vnA3X1skrFPOZO61XPGI28Jr4HbNq4U5wIqI9tI7nQR0td5EOza8cbI8pmCVq4f9kzwPQcN/tYAMJu2vsLxSYrQly+vfSpvXVMer9McxbJM+CgNcUv1ZTcyOrR5/OEZlAw2H6EUr3utNNVEJ5GJk8NeAzMVbjOq37FBXMYYL/5DvPTizBiUvNIa13pukNZrjcQAt8SpOrOPmnJploA1YnkmfrSnaO7h+rnYKSBHmMgFKIfdz0EFsnsaZO88g8HfzZxWI1Ah6IP0rtmw79HnR97h1ucacA1ZyKwiS0mH0HGxl3dXa3XZKakczNmZW/goNXnAyHE4rD3BpvF08wIZoJdwihXjnsipvtni4XXcpqYQLMF/JOazbrNvX0zTiGdRvBVs8i/1mLwE6GQqFr03/LkVuPv24SKrb3NBCxHMSSb2IegxaNBxQu4V4jMHni5JW4hiQNMNvvxFXnRZZvErgdbnm1WVnpa+h8XGD4Eyf4LAQG0IJaBsjIhcnIQ6Vbq0RWeRYkMcsoEOp+Yp1LwpUiMvweOdAhAy58KVa1npERuQ88xPXMhOZKGhQ7PBzVKtxyTZFTuaspIxAC3RqxkbVQNcFx/t 50WRp6D+ NOV7UUpvN6XFkVSdZEjTRO3bfArCz4yx2b9iGMr+G2DvAFlbq1oYvn+kNWcfko5W/cr6bMJQ1vmRZuPeOJTKHnQpiWQi4yV/+zr6tLOhbh6o0nAox1XOAhkOqBI1XI0D5+M0697GjSZhxkdSafs3rJqmuJBDBRaft9+cFqM+RUxXL/rBTS+uGhwVt3rz1UFVq85Hc0zlZVippSH4Inn/EEXO94uf/pqenRl5dPrp1T+n952M5TEKwFZ5rFDOGr+KKQTWCeXMMpykOtw4AoN/3swAU/zqNiyHdATEXQEsPT/qwjwzDiR8YTqldwjHm51THBlIUdfBFVpE/T9qheIbwzea18WPFVCcwKlYFQZ6IiQAR0rLxkV5uQXu4pltlmCWBjT/60390WZj9c+dqCqDqUGW4u/lETB8qEgJjl7q8wRGBCTM= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000267, 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 Wed, Sep 4, 2024 at 10:29=E2=80=AFPM Josef Bacik = wrote: > > From: Amir Goldstein > > FS_PRE_ACCESS or FS_PRE_MODIFY will be generated on open depending on > file open mode. The pre-content event will be generated in addition to > FS_OPEN_PERM, but without sb_writers held and after file was truncated > in case file was opened with O_CREAT and/or O_TRUNC. > > The event will have a range info of (0..0) to provide an opportunity > to fill entire file content on open. > > Signed-off-by: Amir Goldstein > Reviewed-by: Christian Brauner > --- > fs/namei.c | 9 +++++++++ > include/linux/fsnotify.h | 10 +++++++++- > 2 files changed, 18 insertions(+), 1 deletion(-) > > diff --git a/fs/namei.c b/fs/namei.c > index 3a4c40e12f78..c16487e3742d 100644 > --- a/fs/namei.c > +++ b/fs/namei.c > @@ -3735,6 +3735,15 @@ static int do_open(struct nameidata *nd, > } > if (do_truncate) > mnt_drop_write(nd->path.mnt); > + > + /* > + * This permission hook is different than fsnotify_open_perm() ho= ok. > + * This is a pre-content hook that is called without sb_writers h= eld > + * and after the file was truncated. > + */ > + if (!error) > + error =3D fsnotify_file_perm(file, MAY_OPEN); > + Josef, Please change that for v6 to: error =3D fsnotify_file_area_perm(file, MAY_OPEN, &file->f_pos, 0); ... > return error; > } > > diff --git a/include/linux/fsnotify.h b/include/linux/fsnotify.h > index 7600a0c045ba..fb3837b8de4c 100644 > --- a/include/linux/fsnotify.h > +++ b/include/linux/fsnotify.h > @@ -168,6 +168,10 @@ static inline int fsnotify_file_area_perm(struct fil= e *file, int perm_mask, > fsnotify_mask =3D FS_PRE_MODIFY; > else if (perm_mask & (MAY_READ | MAY_ACCESS)) > fsnotify_mask =3D FS_PRE_ACCESS; > + else if (perm_mask & MAY_OPEN && file->f_mode & FMODE_WRITER) > + fsnotify_mask =3D FS_PRE_MODIFY; > + else if (perm_mask & MAY_OPEN) > + fsnotify_mask =3D FS_PRE_ACCESS; > else > return 0; > > @@ -176,10 +180,14 @@ static inline int fsnotify_file_area_perm(struct fi= le *file, int perm_mask, > > /* > * fsnotify_file_perm - permission hook before file access > + * > + * Called from read()/write() with perm_mask MAY_READ/MAY_WRITE. > + * Called from open() with MAY_OPEN without sb_writers held and after th= e file > + * was truncated. Note that this is a different event from fsnotify_open= _perm(). > */ > static inline int fsnotify_file_perm(struct file *file, int perm_mask) > { > - return fsnotify_file_area_perm(file, perm_mask, NULL, 0); > + return fsnotify_file_area_perm(file, perm_mask, &file->f_pos, 0); > } ... and drop this change, because this change will make readdir() start reporting odd file ranges and HSM won't be able to tell the difference between an opendir() and a readdir(). And I will send an extra patch for reporting an event with range [size..size] for truncate(size). Thanks, Amir.