From patchwork Sun Feb 11 23:15:10 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Max Kellermann X-Patchwork-Id: 199559 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:50ea:b0:106:860b:bbdd with SMTP id r10csp2145915dyd; Sun, 11 Feb 2024 15:31:14 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCXh16NIYAmYMSmhjHne9S1X31qzWtAnZ13pUvbqMu4R0U9aNtGjTH3csh5ep4hOGwvJaxmWw/zoJtmwVk1oGptAoUeJ6A== X-Google-Smtp-Source: AGHT+IEvkuejLw39UNFAeX4vdDoeX75TBP+a29f89pT0vGFmgABlDf7nUrO9K2UW8DwxolwDh1hF X-Received: by 2002:a17:906:d922:b0:a37:726f:86b5 with SMTP id rn2-20020a170906d92200b00a37726f86b5mr2715854ejb.65.1707694274041; Sun, 11 Feb 2024 15:31:14 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1707694274; cv=pass; d=google.com; s=arc-20160816; b=LSmHow74DtPfEOhZw9pJ/WNxjv7YYv5TgSKPCJtglef/GA7i9puE3pa5puzHrQvAvF y4NCGWD9LZEGwg7GkMAccaeRI3VYwYngaOlsSgQ7wcgB5a27sLJfhVWPJ1vOJehjCXCu 0ch+59K8sZfipZb2ARlfUC48tdnOf36s1OZ3e79HvhOJbGLXlZ7uoocAZHmCBbvvV+NF AB8LX3qgyCWtdV1jsFANiLhhVE9fhHfFycP4OsnbugUkitiUWiQd2hHj5nBP/ODTPs/p yzGfpbC/wgksK6BcSK3zd491gd4nFAphkqZB9GGMRzCRKG0S2uo0nsOQXnMry+FoMSYk SQEg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=ULoKxp+mUpIb8o5pOMUhCUk1LDRRY2hj78IQ7Yi6k2Q=; fh=Fxlfaq6FXAgQnaNk2DYrTOFJtzBqOKjVUa3ojx+9ztM=; b=E3P9qz89lbTL5QdLXjmPb8nhJSnVw4lWcu0a5XvA6P1mJXJezlpSYVyTbVgfMrb3lA dyz+tNs4+diTr39mImWAq9OBfK21deNX++ryVigaNwLNkZwiQmWSwkISt4CXx/J4qlpj HJ+I7snit0hBwVr+rZ8GTIHx/jFg9BLE27A8FlSiSWV3+dcyGl9IfTSQF8dHNAVn8Rq1 f8eOIgwGvGzB1uN04K6uxlcmd4Qt9Y2sy2Uct/hlxkQsha5Svr8AZkCwPfXv3vW5d5d4 JYtG94kUys97Yt0zYduuJwB29TbDVSaJ2zBN2ecbj+UKWlRjYEOEtoxbGvNRAr6dUNjL TDCg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@ionos.com header.s=google header.b=MVzosV7q; arc=pass (i=1 spf=pass spfdomain=ionos.com dkim=pass dkdomain=ionos.com dmarc=pass fromdomain=ionos.com); spf=pass (google.com: domain of linux-kernel+bounces-61011-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-61011-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=ionos.com X-Forwarded-Encrypted: i=2; AJvYcCVzOC8isiO3uHxBg5xe3i6u9WHPxpd5cv4HdKehcoUGQflLoxXHNNO8pzl8/8SARj4uFPqsdv7lWeIPECXzwW2rLHAlQw== Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id t23-20020a17090616d700b00a3bdd15edddsi3150974ejd.580.2024.02.11.15.31.13 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Feb 2024 15:31:14 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-61011-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; dkim=pass header.i=@ionos.com header.s=google header.b=MVzosV7q; arc=pass (i=1 spf=pass spfdomain=ionos.com dkim=pass dkdomain=ionos.com dmarc=pass fromdomain=ionos.com); spf=pass (google.com: domain of linux-kernel+bounces-61011-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-61011-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=ionos.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id A075B1F25BBB for ; Sun, 11 Feb 2024 23:23:01 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7C3EC3B789; Sun, 11 Feb 2024 23:16:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="MVzosV7q" Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) (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 B7D7A2B9D5 for ; Sun, 11 Feb 2024 23:16:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707693366; cv=none; b=RGsPulz14/OP+ttBRIfL6OdGhbzztWs/qkJMbUODs1kmcYSL5uciaeGFXoljCPnyY6JvIZP7uxdm3IPhQ8koFyIJqUlaCOTP9SFpZGU6/MN03dYCzAwbs5Kv6qZ41d+LKpYptUKDhRo4bacGE2MS8qBe8LvpX5Boaoj8c4Ol2Yg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707693366; c=relaxed/simple; bh=Jk9++ZI9K5g/l3vneedAtiFBwT5nQ9V1AG9tXtn14Z4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=sC047IkBQC0kXGe0N7w5H5I0i6reECRQYTlUxGn2jP0CiBmTO8bUvU072aunhgd/XgehcIWbQAGGisudUj9Wwsak4qkTmljmV5/5Dm8ZNko82Q81NfmjpSABjdNgR2HCjbBkx2gtEH0RJ1KpNcEzPRBX7vliUhbvlAq04DUf79g= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ionos.com; spf=pass smtp.mailfrom=ionos.com; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b=MVzosV7q; arc=none smtp.client-ip=209.85.167.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Received: by mail-lf1-f52.google.com with SMTP id 2adb3069b0e04-511490772f6so3220488e87.2 for ; Sun, 11 Feb 2024 15:16:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1707693359; x=1708298159; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ULoKxp+mUpIb8o5pOMUhCUk1LDRRY2hj78IQ7Yi6k2Q=; b=MVzosV7qT3WPCmVp8PJWTcUtAXXDFzC2TPN1Jfoax5nBZN5FgLR816zgHmd9skyh32 eM1qS/LOjFII9kBzAWaiywYTh8oKxZEyjwNBCUA3SFDf6eCjZaVR7vdEOKSgGLlRlLzu LKcjuui6DHpRm+b5Eg4/E0u5c8F47hANI7SXmeYLlFBRLePFT0DXThCpWQIkThOYW64l 65Zj6YcUE4yNGceEx3xWmxMJKv0HDthHI9vJfTSfiJY7T3wpTGiLig9IXyeyaclowOWf bSBlG8bpHAdZmwuA+ou8k2RtDc0EQvNMiSsHR9DtyQWr24JHZU7Lf2Zd7SA2eBYry8/P 9uCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707693359; x=1708298159; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ULoKxp+mUpIb8o5pOMUhCUk1LDRRY2hj78IQ7Yi6k2Q=; b=vNMRxPY3hYftL/VO5kQ5iVmw/w72IXSCczsH4AXvl6h3X5ni8G2OEF8aA+3ybZdt/B zAEsRr/+DaD+LaQCv69JHr3lE95jvkOnBLyB7uOrHAxYRb7qp7SFh1tcEgzL39dcWVje Ex6CQsKrNqrASWra+5w+uY0+r5tkL2wywVVy1kPV69PzzRVrt7awgxpqUA2JtnNZQy+K 8hvTU60uiDIpR6oE9MAUIdlzL3WCtX2rCVVXKbdM9PZUJWS/DeFsnpywumnh0h+BbLZI aY0tRUrLXkOAScrp/39s9XT6Gp9OGE+uma1HbwgKgYBkAab+KwRxAwblLjZ0CbHjZdmM 2Tpg== X-Gm-Message-State: AOJu0YzUkmLkEn1/mKk+dn6iTebyVSrOsDtcFy1gTzTs0nANqq9izaFK MxgOHNFh80gee7FQc8OaStByuKUc9PPakBcABOEKM5NZV8DKcIDWSawsDvYgMO48ARup3TUpgP7 C X-Received: by 2002:a05:6512:158f:b0:511:47f7:62e0 with SMTP id bp15-20020a056512158f00b0051147f762e0mr4491136lfb.21.1707693359355; Sun, 11 Feb 2024 15:15:59 -0800 (PST) Received: from raven.blarg.de (p200300dc6f267100023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f26:7100:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id et13-20020a056402378d00b0055d19c9daf2sm2170180edb.15.2024.02.11.15.15.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Feb 2024 15:15:58 -0800 (PST) From: Max Kellermann To: linux-kernel@vger.kernel.org Cc: Max Kellermann Subject: [PATCH v4 27/35] quota.h: move declarations to quota_types.h Date: Mon, 12 Feb 2024 00:15:10 +0100 Message-Id: <20240211231518.349442-28-max.kellermann@ionos.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240211231518.349442-1-max.kellermann@ionos.com> References: <20240211231518.349442-1-max.kellermann@ionos.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1790647230732013665 X-GMAIL-MSGID: 1790647230732013665 By providing declarations in a lean header, we can reduce header dependencies. Signed-off-by: Max Kellermann --- fs/gfs2/incore.h | 1 + fs/xfs/xfs_qm.h | 1 + fs/xfs/xfs_qm_syscalls.c | 2 ++ fs/xfs/xfs_quotaops.c | 1 + fs/xfs/xfs_super.c | 1 + fs/xfs/xfs_trans_dquot.c | 2 ++ include/linux/fs.h | 2 +- include/linux/quota.h | 33 +----------------- include/linux/quota_types.h | 68 +++++++++++++++++++++++++++++++++++++ 9 files changed, 78 insertions(+), 33 deletions(-) create mode 100644 include/linux/quota_types.h diff --git a/fs/gfs2/incore.h b/fs/gfs2/incore.h index 95a334d64da2..94f945dc4bdb 100644 --- a/fs/gfs2/incore.h +++ b/fs/gfs2/incore.h @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include diff --git a/fs/xfs/xfs_qm.h b/fs/xfs/xfs_qm.h index d5c9fc4ba591..bb111cbc3567 100644 --- a/fs/xfs/xfs_qm.h +++ b/fs/xfs/xfs_qm.h @@ -9,6 +9,7 @@ #include "xfs_dquot_item.h" #include "xfs_dquot.h" +struct qc_dqblk; struct xfs_inode; extern struct kmem_cache *xfs_dqtrx_cache; diff --git a/fs/xfs/xfs_qm_syscalls.c b/fs/xfs/xfs_qm_syscalls.c index 392cb39cc10c..1de4443bed40 100644 --- a/fs/xfs/xfs_qm_syscalls.c +++ b/fs/xfs/xfs_qm_syscalls.c @@ -19,6 +19,8 @@ #include "xfs_qm.h" #include "xfs_icache.h" +#include + int xfs_qm_scall_quotaoff( xfs_mount_t *mp, diff --git a/fs/xfs/xfs_quotaops.c b/fs/xfs/xfs_quotaops.c index 9c162e69976b..eda56d032734 100644 --- a/fs/xfs/xfs_quotaops.c +++ b/fs/xfs/xfs_quotaops.c @@ -15,6 +15,7 @@ #include "xfs_icache.h" #include "xfs_qm.h" +#include static void xfs_qm_fill_state( diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index 5013d71143c2..615ba5b1bd1c 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c @@ -49,6 +49,7 @@ #include #include #include +#include static const struct super_operations xfs_super_operations; diff --git a/fs/xfs/xfs_trans_dquot.c b/fs/xfs/xfs_trans_dquot.c index aa00cf67ad72..94214f0baa2b 100644 --- a/fs/xfs/xfs_trans_dquot.c +++ b/fs/xfs/xfs_trans_dquot.c @@ -18,6 +18,8 @@ #include "xfs_trace.h" #include "xfs_error.h" +#include + STATIC void xfs_trans_alloc_dqinfo(xfs_trans_t *); /* diff --git a/include/linux/fs.h b/include/linux/fs.h index 1cfe76f7544e..a7e65358ebc0 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -260,7 +260,7 @@ struct iattr { /* * Includes for diskquotas. */ -#include +#include /* * Maximum number of layers of fs stack. Needs to be limited to diff --git a/include/linux/quota.h b/include/linux/quota.h index 956281c84850..2a3040e61072 100644 --- a/include/linux/quota.h +++ b/include/linux/quota.h @@ -32,9 +32,8 @@ #ifndef _LINUX_QUOTA_ #define _LINUX_QUOTA_ -#include +#include #include -#include #include #include @@ -45,7 +44,6 @@ #include #include #include -#include #undef USRQUOTA #undef GRPQUOTA @@ -61,9 +59,6 @@ enum quota_type { #define QTYPE_MASK_GRP (1 << GRPQUOTA) #define QTYPE_MASK_PRJ (1 << PRJQUOTA) -typedef __kernel_uid32_t qid_t; /* Type in which we store ids in memory */ -typedef long long qsize_t; /* Type in which we store sizes */ - struct kqid { /* Type in which we store the quota identifier */ union { kuid_t uid; @@ -213,24 +208,6 @@ struct mem_dqblk { time64_t dqb_itime; /* time limit for excessive inode use */ }; -/* - * Data for one quotafile kept in memory - */ -struct quota_format_type; - -struct mem_dqinfo { - struct quota_format_type *dqi_format; - int dqi_fmt_id; /* Id of the dqi_format - used when turning - * quotas on after remount RW */ - struct list_head dqi_dirty_list; /* List of dirty dquots [dq_list_lock] */ - unsigned long dqi_flags; /* DFQ_ flags [dq_data_lock] */ - unsigned int dqi_bgrace; /* Space grace time [dq_data_lock] */ - unsigned int dqi_igrace; /* Inode grace time [dq_data_lock] */ - qsize_t dqi_max_spc_limit; /* Maximum space limit [static] */ - qsize_t dqi_max_ino_limit; /* Maximum inode limit [static] */ - void *dqi_priv; -}; - struct super_block; /* Mask for flags passed to userspace */ @@ -517,14 +494,6 @@ static inline void quota_send_warning(struct kqid qid, dev_t dev, } #endif /* CONFIG_QUOTA_NETLINK_INTERFACE */ -struct quota_info { - unsigned int flags; /* Flags for diskquotas on this device */ - struct rw_semaphore dqio_sem; /* Lock quota file while I/O in progress */ - struct inode *files[MAXQUOTAS]; /* inodes of quotafiles */ - struct mem_dqinfo info[MAXQUOTAS]; /* Information for each quota type */ - const struct quota_format_ops *ops[MAXQUOTAS]; /* Operations for each type */ -}; - int register_quota_format(struct quota_format_type *fmt); void unregister_quota_format(struct quota_format_type *fmt); diff --git a/include/linux/quota_types.h b/include/linux/quota_types.h new file mode 100644 index 000000000000..7f52ee2604bb --- /dev/null +++ b/include/linux/quota_types.h @@ -0,0 +1,68 @@ +/* + * Copyright (c) 1982, 1986 Regents of the University of California. + * All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Robert Elz at The University of Melbourne. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +#ifndef _LINUX_QUOTA_TYPES_ +#define _LINUX_QUOTA_TYPES_ + +#include +#include +#include + +typedef __kernel_uid32_t qid_t; /* Type in which we store ids in memory */ +typedef long long qsize_t; /* Type in which we store sizes */ + +/* + * Data for one quotafile kept in memory + */ +struct quota_format_type; + +struct mem_dqinfo { + struct quota_format_type *dqi_format; + int dqi_fmt_id; /* Id of the dqi_format - used when turning + * quotas on after remount RW */ + struct list_head dqi_dirty_list; /* List of dirty dquots [dq_list_lock] */ + unsigned long dqi_flags; /* DFQ_ flags [dq_data_lock] */ + unsigned int dqi_bgrace; /* Space grace time [dq_data_lock] */ + unsigned int dqi_igrace; /* Inode grace time [dq_data_lock] */ + qsize_t dqi_max_spc_limit; /* Maximum space limit [static] */ + qsize_t dqi_max_ino_limit; /* Maximum inode limit [static] */ + void *dqi_priv; +}; + +struct quota_info { + unsigned int flags; /* Flags for diskquotas on this device */ + struct rw_semaphore dqio_sem; /* Lock quota file while I/O in progress */ + struct inode *files[MAXQUOTAS]; /* inodes of quotafiles */ + struct mem_dqinfo info[MAXQUOTAS]; /* Information for each quota type */ + const struct quota_format_ops *ops[MAXQUOTAS]; /* Operations for each type */ +}; + +#endif /* _LINUX_QUOTA_TYPES_ */