Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp4152953pxj; Tue, 15 Jun 2021 16:57:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwO9D7CSIBzq/G7TrA1xyv1T+hw24GbxcFbya2CjaIje6ZOLuP8aLP8/4GK3DICXVTfKduC X-Received: by 2002:a17:906:17c4:: with SMTP id u4mr2120290eje.481.1623801464724; Tue, 15 Jun 2021 16:57:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623801464; cv=none; d=google.com; s=arc-20160816; b=TwVv5qSiXSroeCDzEbvPy/yOa+b4dGcGWLvSOv2kL8ocflxtWJTrMVAcRsEdIV/kLr C8M32q4Xdved3hwR1h/mkNNSpdVvPY2qL/e6MoLcyqGX3YCA/c232RF25PdEhPqOgOAl s8M3Z0iUj72mgfgrOMxFTO9evAehe9kRxy0BBMsyKYqaW4egcw+ZKEJAfv3SXmYpj8yQ iBj+g53mFe4d3PqVcVLY4H/oNfzlZ2se0NTPptboSW7DUn6grpVWY7bRaETo/XGLEHVd syEjXsRwLUpf/Mo++oF2MV/KWyfYnE/hAehPX7d+OnZOBybmFGC5CnSnbJZwcRlrE6nV AziQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=Kk3Z2/5GsBvxEqnef9JDmlaYPWK60+u9HXiwYF3PVw4=; b=tGxW9yedMuCfnimNQvrfUyYrhnXPtwYLlnsZYDEZLOFFRIwH+VHEEajh/cqArZUMJx z4fUNwOL1nNDuHTl3OiiPBJHnrsYofJTAd4RehQ9Ii9Jkzl7unW1IuziUsuOSRxHmRC/ EAgdbGQvRyS5Poh26OXhOJF5VB2IRe/oPimJ6ps0QKVjrG0vNzKrjOLABrQ9xrKk+2ik nvhwxg49JZqWt1S+N+jQ8A+ZqTyxYvgIufNOLpiiCsl9KEyd+GzVK3ME1girCYCekzXS iS4OZMxmUko4NENUq7Hu6mfWIyQqcaOooJeZcIJQR4813lx2RBHh+abEgFlFR+aq0nWn 5eEQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=collabora.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x11si480704ejb.48.2021.06.15.16.57.21; Tue, 15 Jun 2021 16:57:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=collabora.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231743AbhFOX6w (ORCPT + 99 others); Tue, 15 Jun 2021 19:58:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54838 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230082AbhFOX6r (ORCPT ); Tue, 15 Jun 2021 19:58:47 -0400 Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 713DEC061574; Tue, 15 Jun 2021 16:56:42 -0700 (PDT) Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: krisman) with ESMTPSA id 1A3A41F43336 From: Gabriel Krisman Bertazi To: amir73il@gmail.com Cc: kernel@collabora.com, djwong@kernel.org, tytso@mit.edu, david@fromorbit.com, jack@suse.com, dhowells@redhat.com, khazhy@google.com, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, Gabriel Krisman Bertazi Subject: [PATCH v2 10/14] fsnotify: Introduce helpers to send error_events Date: Tue, 15 Jun 2021 19:55:52 -0400 Message-Id: <20210615235556.970928-11-krisman@collabora.com> X-Mailer: git-send-email 2.31.0 In-Reply-To: <20210615235556.970928-1-krisman@collabora.com> References: <20210615235556.970928-1-krisman@collabora.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Introduce helpers for filesystems interested in reporting FS_ERROR events. Signed-off-by: Gabriel Krisman Bertazi --- Changes since v1: - Use the inode argument (Amir) - Protect s_fsnotify_marks with ifdef guard --- fs/notify/fsnotify.c | 2 +- include/linux/fsnotify.h | 20 ++++++++++++++++++++ include/linux/fsnotify_backend.h | 1 + 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/fs/notify/fsnotify.c b/fs/notify/fsnotify.c index 36205a769dde..ac05eb3fb368 100644 --- a/fs/notify/fsnotify.c +++ b/fs/notify/fsnotify.c @@ -491,7 +491,7 @@ int __fsnotify(__u32 mask, const struct fsnotify_event_info *event_info) */ parent = event_info->dir; } - sb = inode->i_sb; + sb = event_info->sb ?: inode->i_sb; /* * Optimization: srcu_read_lock() has a memory barrier which can diff --git a/include/linux/fsnotify.h b/include/linux/fsnotify.h index 8c2c681b4495..c0dbc5a65381 100644 --- a/include/linux/fsnotify.h +++ b/include/linux/fsnotify.h @@ -326,4 +326,24 @@ static inline void fsnotify_change(struct dentry *dentry, unsigned int ia_valid) fsnotify_dentry(dentry, mask); } +static inline int fsnotify_sb_error(struct super_block *sb, struct inode *inode, + int error) +{ +#ifdef CONFIG_FSNOTIFY + if (sb->s_fsnotify_marks) { + struct fs_error_report report = { + .error = error, + .inode = inode, + }; + + return __fsnotify(FS_ERROR, &(struct fsnotify_event_info) { + .data = &report, + .data_type = FSNOTIFY_EVENT_ERROR, + .inode = NULL, .cookie = 0, .sb = sb + }); + } +#endif + return 0; +} + #endif /* _LINUX_FS_NOTIFY_H */ diff --git a/include/linux/fsnotify_backend.h b/include/linux/fsnotify_backend.h index ea5f5c7cc381..5a32c5010f45 100644 --- a/include/linux/fsnotify_backend.h +++ b/include/linux/fsnotify_backend.h @@ -138,6 +138,7 @@ struct fsnotify_event_info { struct inode *dir; const struct qstr *name; struct inode *inode; + struct super_block *sb; u32 cookie; }; -- 2.31.0