From ecf3529a0c1f4ad3e911b7babffc505fc051707a Mon Sep 17 00:00:00 2001 From: DistroBaker Date: Tue, 10 Nov 2020 12:13:33 +0000 Subject: [PATCH] Merged update from upstream sources This is an automated DistroBaker update from upstream sources. If you do not know what this is about or would like to opt out, contact the OSCI team. Source: https://src.fedoraproject.org/rpms/quota.git#46caab50684a295721df911b22f3e67e2447cc95 --- .gitignore | 1 + ...-4.05-COPYING-Update-mailing-address.patch | 106 --------- quota-4.05-Fix-ignoring-disabled-quotas.patch | 49 ----- ...Fix-limits-setting-on-XFS-filesystem.patch | 42 ---- ...-grace-time-overflows-for-XFS-quotas.patch | 104 --------- ...-for-quota_nld-PID-file-configurable.patch | 74 ------- ...out-failures-for-NFS-consistent-with.patch | 112 ---------- ...igure.ac-fix-pkg_check_modules-calls.patch | 73 ------- ...eriod-expirations-past-y2038-for-XFS.patch | 109 ---------- quota-4.05-quota-Add-filesystem-option.patch | 115 ---------- ...quota-Add-synopsis-for-project-quota.patch | 34 --- ...FS_DQ_TIMER_MASK-for-individual-xfs-.patch | 39 ---- ...-quota-type-to-QCMD-for-Q_XFS_GETQST.patch | 56 ----- ...checking-of-filesystems-with-hidded-.patch | 42 ---- ...on-Suggest-using-quota-feature-for-e.patch | 205 ------------------ ...not-leak-dquot-structures-on-failure.patch | 68 ------ ...ot-return-partial-list-from-getprivs.patch | 61 ------ ...taops-Make-error-string-translatable.patch | 32 --- ...r-message-when-cannot-connect-to-rpc.patch | 127 ----------- ...-failure-to-obtain-quota-information.patch | 73 ------- ...y-that-CC_TO-gets-resolved-through-L.patch | 34 --- quota-4.05-warnquota-Fix-help-text.patch | 33 --- ...05-warnquota-Free-LDAP-error-message.patch | 36 --- ...lize-all-members-of-a-configparams-s.patch | 61 ------ ...also-additional-error-info-for-LDAP-.patch | 82 ------- ...arnquota-Properly-detect-LDAP-errors.patch | 42 ---- ...a-4.06-warnquota-configuration-tunes.patch | 50 +++-- quota.spec | 129 ++--------- sources | 2 +- 29 files changed, 51 insertions(+), 1940 deletions(-) delete mode 100644 quota-4.05-COPYING-Update-mailing-address.patch delete mode 100644 quota-4.05-Fix-ignoring-disabled-quotas.patch delete mode 100644 quota-4.05-Fix-limits-setting-on-XFS-filesystem.patch delete mode 100644 quota-4.05-Handle-grace-time-overflows-for-XFS-quotas.patch delete mode 100644 quota-4.05-Make-a-directory-for-quota_nld-PID-file-configurable.patch delete mode 100644 quota-4.05-Make-messages-about-failures-for-NFS-consistent-with.patch delete mode 100644 quota-4.05-Revert-configure.ac-fix-pkg_check_modules-calls.patch delete mode 100644 quota-4.05-Support-grace-period-expirations-past-y2038-for-XFS.patch delete mode 100644 quota-4.05-quota-Add-filesystem-option.patch delete mode 100644 quota-4.05-quota-Add-synopsis-for-project-quota.patch delete mode 100644 quota-4.05-quota-tools-Set-FS_DQ_TIMER_MASK-for-individual-xfs-.patch delete mode 100644 quota-4.05-quota-tools-pass-quota-type-to-QCMD-for-Q_XFS_GETQST.patch delete mode 100644 quota-4.05-quotacheck-Skip-checking-of-filesystems-with-hidded-.patch delete mode 100644 quota-4.05-quotacheck-quotaon-Suggest-using-quota-feature-for-e.patch delete mode 100644 quota-4.05-quotaops-Do-not-leak-dquot-structures-on-failure.patch delete mode 100644 quota-4.05-quotaops-Do-not-return-partial-list-from-getprivs.patch delete mode 100644 quota-4.05-quotaops-Make-error-string-translatable.patch delete mode 100644 quota-4.05-rpc-Clarify-error-message-when-cannot-connect-to-rpc.patch delete mode 100644 quota-4.05-setquota-Report-failure-to-obtain-quota-information.patch delete mode 100644 quota-4.05-warnquota-Clarify-that-CC_TO-gets-resolved-through-L.patch delete mode 100644 quota-4.05-warnquota-Fix-help-text.patch delete mode 100644 quota-4.05-warnquota-Free-LDAP-error-message.patch delete mode 100644 quota-4.05-warnquota-Initialize-all-members-of-a-configparams-s.patch delete mode 100644 quota-4.05-warnquota-Print-also-additional-error-info-for-LDAP-.patch delete mode 100644 quota-4.05-warnquota-Properly-detect-LDAP-errors.patch rename quota-4.04-warnquota-configuration-tunes.patch => quota-4.06-warnquota-configuration-tunes.patch (66%) diff --git a/.gitignore b/.gitignore index 55691d5..91d0060 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ quota-3.17.tar.gz /ldap-scripts.tar.gz /quota-4.04.tar.gz /quota-4.05.tar.gz +/quota-4.06.tar.gz diff --git a/quota-4.05-COPYING-Update-mailing-address.patch b/quota-4.05-COPYING-Update-mailing-address.patch deleted file mode 100644 index 3896eb2..0000000 --- a/quota-4.05-COPYING-Update-mailing-address.patch +++ /dev/null @@ -1,106 +0,0 @@ -From b6bb53e1124e6b813fe4de5682b9d9a9f8a1fba8 Mon Sep 17 00:00:00 2001 -From: Jan Kara -Date: Tue, 2 Apr 2019 16:54:49 +0200 -Subject: [PATCH] COPYING: Update mailing address -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Signed-off-by: Jan Kara -Signed-off-by: Petr Písař ---- - COPYING | 28 ++++++++++++++-------------- - 1 file changed, 14 insertions(+), 14 deletions(-) - -diff --git a/COPYING b/COPYING -index 784e9cf..bb6a5e0 100644 ---- a/COPYING -+++ b/COPYING -@@ -1,16 +1,16 @@ - This package, the quota tools, are made available under the GNU Public License - version 2. ------------------------------------------------------------------------ -+----------------------------------------------------------------------- - -- GNU GENERAL PUBLIC LICENSE -- Version 2, June 1991 -+ GNU GENERAL PUBLIC LICENSE -+ Version 2, June 1991 - -- Copyright (C) 1989, 1991 Free Software Foundation, Inc. -- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -+ Copyright (C) 1989, 1991 Free Software Foundation, Inc., -+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -- Preamble -+ Preamble - - The licenses for most software are designed to take away your - freedom to share and change it. By contrast, the GNU General Public -@@ -19,7 +19,7 @@ software--to make sure the software is free for all its users. This - General Public License applies to most of the Free Software - Foundation's software and to any other program whose authors commit to - using it. (Some other Free Software Foundation software is covered by --the GNU Library General Public License instead.) You can apply it to -+the GNU Lesser General Public License instead.) You can apply it to - your programs, too. - - When we speak of free software, we are referring to freedom, not -@@ -59,8 +59,8 @@ patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and - modification follow. -- -- GNU GENERAL PUBLIC LICENSE -+ -+ GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -@@ -114,7 +114,7 @@ above, provided that you also meet all of these conditions: - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) -- -+ - These requirements apply to the modified work as a whole. If - identifiable sections of that work are not derived from the Program, - and can be reasonably considered independent and separate works in -@@ -172,7 +172,7 @@ access to copy from a designated place, then offering equivalent - access to copy the source code from the same place counts as - distribution of the source code, even though third parties are not - compelled to copy the source along with the object code. -- -+ - 4. You may not copy, modify, sublicense, or distribute the Program - except as expressly provided under this License. Any attempt - otherwise to copy, modify, sublicense or distribute the Program is -@@ -229,7 +229,7 @@ impose that choice. - - This section is intended to make thoroughly clear what is believed to - be a consequence of the rest of this License. -- -+ - 8. If the distribution and/or use of the Program is restricted in - certain countries either by patents or by copyrighted interfaces, the - original copyright holder who places the Program under this License -@@ -259,7 +259,7 @@ make exceptions for this. Our decision will be guided by the two goals - of preserving the free status of all derivatives of our free software and - of promoting the sharing and reuse of software generally. - -- NO WARRANTY -+ NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY - FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -@@ -281,4 +281,4 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER - PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE - POSSIBILITY OF SUCH DAMAGES. - -- END OF TERMS AND CONDITIONS -+ END OF TERMS AND CONDITIONS --- -2.20.1 - diff --git a/quota-4.05-Fix-ignoring-disabled-quotas.patch b/quota-4.05-Fix-ignoring-disabled-quotas.patch deleted file mode 100644 index 6aad8de..0000000 --- a/quota-4.05-Fix-ignoring-disabled-quotas.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 110b4a4011655fb650f82c88312ba44d7e249060 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Fri, 21 Feb 2020 10:00:05 +0100 -Subject: [PATCH] Fix ignoring disabled quotas -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -quota(1) command ignores file systems without enabled quotas. (In -contrast to "quota -f".) This works for local file systems and it used -to work for NFS file system until commit 4cd287f3fa38 ("rpc: Clarify error -message when cannot connect to rpc.rquotad"). quota(1) command now reports -an error whenever at least one NFS-mounted file system has disabled the -quotas. This renders the tool unusable. - -This patch readds an exception for the ENOENT errno that was removed -with the commit probably by a mistake. - -[JK: Improve commit message, make getprivs() print more descriptive -message in case quota is not enabled] - -Signed-off-by: Petr Písař -Signed-off-by: Jan Kara ---- - quotaops.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/quotaops.c b/quotaops.c -index 1a8d7fe..ff4d16e 100644 ---- a/quotaops.c -+++ b/quotaops.c -@@ -127,11 +127,13 @@ struct dquot *getprivs(qid_t id, struct quota_handle **handles, int ignore_noquo - char *estr; - - /* If rpc.rquotad is not running, filesystem might be just without quotas... */ -- if (ignore_noquota && errno == ECONNREFUSED) -+ if (ignore_noquota && (errno == ENOENT || errno == ECONNREFUSED)) - continue; - - if (errno == ECONNREFUSED) { - estr = _("Cannot connect to RPC quota service"); -+ } else if (errno == ENOENT) { -+ estr = _("Quota not enabled"); - } else { - estr = strerror(errno); - } --- -2.21.1 - diff --git a/quota-4.05-Fix-limits-setting-on-XFS-filesystem.patch b/quota-4.05-Fix-limits-setting-on-XFS-filesystem.patch deleted file mode 100644 index 92de36d..0000000 --- a/quota-4.05-Fix-limits-setting-on-XFS-filesystem.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 13bb8c2daca0f1c1099ce6ba9dcb23319f7955d0 Mon Sep 17 00:00:00 2001 -From: Jan Kara -Date: Wed, 20 May 2020 16:22:52 +0200 -Subject: [PATCH 2/2] Fix limits setting on XFS filesystem -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -xfs_commit_dquot() always set FS_DQ_LIMIT_MASK when calling -Q_XFS_SETQLIM. So far this wasn't a problem since quota tools didn't -support setting of anything else for XFS but now that kernel will start -supporting setting of grace times for XFS, we need to be more careful -and set limits bits only if we really want to update them. Also -FS_DQ_LIMIT_MASK contains real-time limits as well. Quota tools -currently don't support them in any way so avoid telling kernel to set -them. - -Reviewed-by: Eric Sandeen -Signed-off-by: Jan Kara -Signed-off-by: Petr Písař ---- - quotaio_xfs.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/quotaio_xfs.c b/quotaio_xfs.c -index a4d6f67..3333bb1 100644 ---- a/quotaio_xfs.c -+++ b/quotaio_xfs.c -@@ -165,7 +165,9 @@ static int xfs_commit_dquot(struct dquot *dquot, int flags) - if (flags & COMMIT_USAGE) /* block usage */ - xdqblk.d_fieldmask |= FS_DQ_BCOUNT; - } else { -- xdqblk.d_fieldmask |= FS_DQ_LIMIT_MASK; -+ if (flags & COMMIT_LIMITS) /* warn/limit */ -+ xdqblk.d_fieldmask |= FS_DQ_BSOFT | FS_DQ_BHARD | -+ FS_DQ_ISOFT | FS_DQ_IHARD; - if (flags & COMMIT_TIMES) /* indiv grace period */ - xdqblk.d_fieldmask |= FS_DQ_TIMER_MASK; - } --- -2.25.4 - diff --git a/quota-4.05-Handle-grace-time-overflows-for-XFS-quotas.patch b/quota-4.05-Handle-grace-time-overflows-for-XFS-quotas.patch deleted file mode 100644 index 81f93aa..0000000 --- a/quota-4.05-Handle-grace-time-overflows-for-XFS-quotas.patch +++ /dev/null @@ -1,104 +0,0 @@ -From e777f46f3044ade15908dbb4c925dbb66556a595 Mon Sep 17 00:00:00 2001 -From: Jan Kara -Date: Mon, 21 Sep 2020 13:30:32 +0200 -Subject: [PATCH 2/2] Handle grace time overflows for XFS quotas -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Add checks and error handling to report when grace times set for XFS -quotas would overflow. - -Signed-off-by: Jan Kara -Signed-off-by: Petr Písař ---- - quotaio_xfs.c | 26 +++++++++++++++++--------- - quotaio_xfs.h | 3 +++ - 2 files changed, 20 insertions(+), 9 deletions(-) - -diff --git a/quotaio_xfs.c b/quotaio_xfs.c -index 9854ec2..2db1c0c 100644 ---- a/quotaio_xfs.c -+++ b/quotaio_xfs.c -@@ -65,6 +65,11 @@ static inline int want_bigtime(time_t timer) - return timer > INT32_MAX || timer < INT32_MIN; - } - -+static inline int timer_fits_xfs_dqblk(time_t timer) -+{ -+ return timer >= FS_DQUOT_TIMER_MIN && timer <= FS_DQUOT_TIMER_MAX; -+} -+ - /* - * Convert XFS kernel quota format to utility format - */ -@@ -83,7 +88,7 @@ static inline void xfs_kern2utildqblk(struct util_dqblk *u, struct xfs_kern_dqbl - /* - * Convert utility quota format to XFS kernel format - */ --static inline void xfs_util2kerndqblk(struct xfs_kern_dqblk *k, struct util_dqblk *u) -+static inline int xfs_util2kerndqblk(struct xfs_kern_dqblk *k, struct util_dqblk *u) - { - memset(k, 0, sizeof(struct xfs_kern_dqblk)); - k->d_ino_hardlimit = u->dqb_ihardlimit; -@@ -92,10 +97,16 @@ static inline void xfs_util2kerndqblk(struct xfs_kern_dqblk *k, struct util_dqbl - k->d_blk_softlimit = u->dqb_bsoftlimit << 1; - k->d_icount = u->dqb_curinodes; - k->d_bcount = u->dqb_curspace >> 9; -+ if (!timer_fits_xfs_dqblk(u->dqb_itime) || -+ !timer_fits_xfs_dqblk(u->dqb_btime)) { -+ errno = ERANGE; -+ return -1; -+ } - if (want_bigtime(u->dqb_itime) || want_bigtime(u->dqb_btime)) - k->d_fieldmask |= FS_DQ_BIGTIME; - xfs_util2kerndqblk_ts(k, &k->d_itimer, &k->d_itimer_hi, u->dqb_itime); - xfs_util2kerndqblk_ts(k, &k->d_btimer, &k->d_btimer_hi, u->dqb_btime); -+ return 0; - } - - /* -@@ -176,7 +187,8 @@ static int xfs_commit_dquot(struct dquot *dquot, int flags) - if (!XFS_USRQUOTA(h) && !XFS_GRPQUOTA(h) && !XFS_PRJQUOTA(h)) - return 0; - -- xfs_util2kerndqblk(&xdqblk, &dquot->dq_dqb); -+ if (xfs_util2kerndqblk(&xdqblk, &dquot->dq_dqb) < 0) -+ return -1; - if (XFS_USRQUOTA(h)) - xdqblk.d_flags |= XFS_USER_QUOTA; - else if (XFS_GRPQUOTA(h)) -@@ -198,13 +210,9 @@ static int xfs_commit_dquot(struct dquot *dquot, int flags) - } - - qcmd = QCMD(Q_XFS_SETQLIM, h->qh_type); -- if (quotactl(qcmd, h->qh_quotadev, id, (void *)&xdqblk) < 0) { -- ; -- } -- else { -- return 0; -- } -- return -1; -+ if (quotactl(qcmd, h->qh_quotadev, id, (void *)&xdqblk) < 0) -+ return -1; -+ return 0; - } - - /* -diff --git a/quotaio_xfs.h b/quotaio_xfs.h -index e0c2a62..28dc27e 100644 ---- a/quotaio_xfs.h -+++ b/quotaio_xfs.h -@@ -85,6 +85,9 @@ typedef struct fs_disk_quota { - char d_padding4[8]; /* yet more padding */ - } fs_disk_quota_t; - -+#define FS_DQUOT_TIMER_MAX (((__s64)1 << 39) - 1) -+#define FS_DQUOT_TIMER_MIN (-((__s64)1 << 39)) -+ - /* - * These fields are sent to Q_XSETQLIM to specify fields that need to change. - */ --- -2.25.4 - diff --git a/quota-4.05-Make-a-directory-for-quota_nld-PID-file-configurable.patch b/quota-4.05-Make-a-directory-for-quota_nld-PID-file-configurable.patch deleted file mode 100644 index 51a9aa2..0000000 --- a/quota-4.05-Make-a-directory-for-quota_nld-PID-file-configurable.patch +++ /dev/null @@ -1,74 +0,0 @@ -From bbcf9eedb2299ab55a0ae208e196eb2ca59ad97e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Thu, 30 May 2019 13:20:25 +0200 -Subject: [PATCH] Make a directory for quota_nld PID file configurable -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -While Filesystem Hierarchy Standard prescribes /var/run path for -storing PID files, some (systemd-based) distributions uses /run. - -This patch adds a --with-pid-dir=DIRECTORY option to the ./configure -script. The option enables to change the path. Default one is -/var/run as used to be until now. - -(I did not use $localstatedir environment variable because Autoconf -manual allows using "precious" variables only in a makefile.) - -Signed-off-by: Petr Písař ---- - configure.ac | 10 ++++++++++ - quota_nld.c | 4 ++-- - 2 files changed, 12 insertions(+), 2 deletions(-) - -diff --git a/configure.ac b/configure.ac -index b783568..3cb57c5 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -277,6 +277,15 @@ AS_IF([test "$with_proc_mounts" != "no"], [ - AC_DEFINE_UNQUOTED([ALT_MTAB], ["$with_proc_mounts"], [File with mounted filesystems]) - ]) - -+AC_ARG_WITH([pid-dir], -+ [AS_HELP_STRING([--with-pid-dir=DIRECTORY], [Create PID files in this directory instead of /var/run])], -+ [with_pid_dir="$withval"] -+) -+AS_IF([test "X$with_pid_dir" == "X" -o "$with_pid_dir" == "yes" -o "$with_pid_dir" == "no"],[ -+ with_pid_dir="/var/run" -+]) -+AC_DEFINE_UNQUOTED([PID_DIR], ["$with_pid_dir"], [Directory for PID files]) -+ - AC_DEFINE_UNQUOTED([COMPILE_OPTS], ["$COMPILE_OPTS"], [Configuration options]) - - AC_CONFIG_FILES([ -@@ -297,6 +306,7 @@ Build configuration: - libwrap: ${build_libwrap} - netlink: ${build_netlink} - nls: ${enable_nls} -+ pid-dir: ${with_pid_dir} - proc-mounts: ${with_proc_mounts} - rpc: ${build_rpc} - rpcsetquota: ${enable_rpcsetquota} -diff --git a/quota_nld.c b/quota_nld.c -index ac24bdb..72d99a9 100644 ---- a/quota_nld.c -+++ b/quota_nld.c -@@ -403,12 +403,12 @@ static char *build_pid_file_name(void) - errstr(_("Undefined program name.\n")); - return NULL; - } -- pid_name = malloc(9 + strlen(progname) + 4 + 1); -+ pid_name = malloc(strlen(PID_DIR) + 1 + strlen(progname) + 4 + 1); - if (!pid_name) { - errstr(_("Not enough memory to build PID file name.\n")); - return NULL; - } -- sprintf(pid_name, "/var/run/%s.pid", progname); -+ sprintf(pid_name, "%s/%s.pid", PID_DIR, progname); - return pid_name; - } - --- -2.20.1 - diff --git a/quota-4.05-Make-messages-about-failures-for-NFS-consistent-with.patch b/quota-4.05-Make-messages-about-failures-for-NFS-consistent-with.patch deleted file mode 100644 index f78274b..0000000 --- a/quota-4.05-Make-messages-about-failures-for-NFS-consistent-with.patch +++ /dev/null @@ -1,112 +0,0 @@ -From a4b0af23e1e3761825e9d4ac075e3fcae8ab91cb Mon Sep 17 00:00:00 2001 -From: Jan Kara -Date: Fri, 24 May 2019 12:03:27 +0200 -Subject: [PATCH 1/4] Make messages about failures for NFS consistent with - local filesystems -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Currently, some types for failures when fetching quota information for -NFS filesystem were silent (e.g. when rpc.rquotad was not running) while -others were reporting error message (e.g. when rpc connection failed). -There's no big difference in these for the user / administrator and also -is inconsistent with how we deal with local filesystems - there we -report error if the filesystem was explicitely specified on command line -and silently ignore it for "scan all" operations. - -So change error reporting for NFS to report errors about quota not being -supported if and only if filesystem was explicitely specified on command -line. - -Signed-off-by: Jan Kara -Signed-off-by: Petr Písař ---- - edquota.c | 4 ++-- - quota.c | 2 +- - quotaops.c | 2 +- - setquota.c | 6 +++--- - 4 files changed, 7 insertions(+), 7 deletions(-) - -diff --git a/edquota.c b/edquota.c -index 912f833..a77106c 100644 ---- a/edquota.c -+++ b/edquota.c -@@ -176,7 +176,7 @@ static void copy_prototype(int argc, char **argv, struct quota_handle **handles) - protoprivs = getprivs(protoid, handles, 0); - while (argc-- > 0) { - id = name2id(*argv, quotatype, !!(flags & FL_NUMNAMES), NULL); -- curprivs = getprivs(id, handles, 0); -+ curprivs = getprivs(id, handles, !dirname); - if (!curprivs) - die(1, _("Cannot get quota information for user %s\n"), *argv); - argv++; -@@ -296,7 +296,7 @@ int main(int argc, char **argv) - else { - for (; argc > 0; argc--, argv++) { - id = name2id(*argv, quotatype, !!(flags & FL_NUMNAMES), NULL); -- curprivs = getprivs(id, handles, 0); -+ curprivs = getprivs(id, handles, !dirname); - if (!curprivs) - die(1, _("Cannot get quota information for user %s.\n"), *argv); - if (flags & FL_EDIT_TIMES) { -diff --git a/quota.c b/quota.c -index 8235013..be494e3 100644 ---- a/quota.c -+++ b/quota.c -@@ -168,7 +168,7 @@ static int showquotas(int type, qid_t id, int mntcnt, char **mnt) - ((flags & FL_NOAUTOFS) ? MS_NO_AUTOFS : 0) - | ((flags & FL_LOCALONLY) ? MS_LOCALONLY : 0) - | ((flags & FL_NFSALL) ? MS_NFS_ALL : 0)); -- qlist = getprivs(id, handles, !!(flags & FL_QUIETREFUSE)); -+ qlist = getprivs(id, handles, !mntcnt || (flags & FL_QUIETREFUSE)); - if (!qlist) { - over = 1; - goto out_handles; -diff --git a/quotaops.c b/quotaops.c -index 976e6b3..ad29fd9 100644 ---- a/quotaops.c -+++ b/quotaops.c -@@ -125,7 +125,7 @@ struct dquot *getprivs(qid_t id, struct quota_handle **handles, int quiet) - - if (!(q = handles[i]->qh_ops->read_dquot(handles[i], id))) { - /* If rpc.rquotad is not running filesystem might be just without quotas... */ -- if (errno != ENOENT && (errno != ECONNREFUSED || !quiet)) { -+ if (!quiet || (errno != ENOENT && errno != ECONNREFUSED)) { - int olderrno = errno; - - id2name(id, handles[i]->qh_type, name); -diff --git a/setquota.c b/setquota.c -index bfd6682..08fdbfc 100644 ---- a/setquota.c -+++ b/setquota.c -@@ -314,7 +314,7 @@ static int setlimits(struct quota_handle **handles) - struct dquot *q, *protoq, *protoprivs = NULL, *curprivs; - int ret = 0; - -- curprivs = getprivs(id, handles, 0); -+ curprivs = getprivs(id, handles, !!(flags & FL_ALL)); - if (flags & FL_PROTO) { - protoprivs = getprivs(protoid, handles, 0); - for (q = curprivs, protoq = protoprivs; q && protoq; q = q->dq_next, protoq = protoq->dq_next) { -@@ -435,7 +435,7 @@ static int batch_setlimits(struct quota_handle **handles) - int ret = 0; - - while (!read_entry(&id, &isoftlimit, &ihardlimit, &bsoftlimit, &bhardlimit)) { -- curprivs = getprivs(id, handles, 0); -+ curprivs = getprivs(id, handles, !!(flags & FL_ALL)); - for (q = curprivs; q; q = q->dq_next) { - q->dq_dqb.dqb_bsoftlimit = bsoftlimit; - q->dq_dqb.dqb_bhardlimit = bhardlimit; -@@ -474,7 +474,7 @@ static int setindivgraces(struct quota_handle **handles) - int ret = 0; - struct dquot *q, *curprivs; - -- curprivs = getprivs(id, handles, 0); -+ curprivs = getprivs(id, handles, !!(flags & FL_ALL)); - for (q = curprivs; q; q = q->dq_next) { - if (q->dq_dqb.dqb_bsoftlimit && toqb(q->dq_dqb.dqb_curspace) > q->dq_dqb.dqb_bsoftlimit) - q->dq_dqb.dqb_btime = toset.dqb_btime; --- -2.20.1 - diff --git a/quota-4.05-Revert-configure.ac-fix-pkg_check_modules-calls.patch b/quota-4.05-Revert-configure.ac-fix-pkg_check_modules-calls.patch deleted file mode 100644 index e28d5f1..0000000 --- a/quota-4.05-Revert-configure.ac-fix-pkg_check_modules-calls.patch +++ /dev/null @@ -1,73 +0,0 @@ -From 00d61f21bfa3ccf40826ce22de12cfeeab8a40a5 Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -Date: Mon, 1 Apr 2019 02:23:59 +0300 -Subject: [PATCH] Revert "configure.ac: fix pkg_check_modules calls" -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -CFLAGS and LIBS are variables that users are entitled to modify in order -to compile the package, so do not tamper with CFLAGS and LIBS. - -COM_ERR_CFLAGS, EXT2FS_CFLAGS, DBUS_CFLAGS, LIBNL3_CFLAGS, TIRPC_CFLAGS, -COMM_ERR_LIBS, EXT2FS_LIBS, DBUS_LIBS, LIBNL3_LIBS, and TIRPC_LIBS -should be used directly where appropriate and apparently they already -are. - -This reverts commit b54d97d677481287faa5d6b98c92f111141c1af3. - -Signed-off-by: Dmitry V. Levin -Signed-off-by: Jan Kara -Signed-off-by: Petr Písař ---- - configure.ac | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/configure.ac b/configure.ac -index e8e6412..ff7b9df 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -104,13 +104,13 @@ AC_ARG_ENABLE([ext2direct], - ) - AS_IF([test "x$enable_ext2direct" != "xno"], [ - build_ext2direct="yes" -- PKG_CHECK_MODULES([COM_ERR],[com_err], [CFLAGS="$CFLAGS $COM_ERR_CFLAGS" LIBS="$LIBS $COMM_ERR_LIBS"], [ -+ PKG_CHECK_MODULES([COM_ERR],[com_err], [], [ - build_ext2direct="no" - AS_IF([test "x$enable_ext2direct" = "xyes"], [ - AC_MSG_ERROR([Ext2direct requested but required com_err library not found]) - ]) - ]) -- PKG_CHECK_MODULES([EXT2FS],[ext2fs], [CFLAGS="$CFLAGS $EXT2FS_CFLAGS" LIBS="$LIBS $EXT2FS_LIBS"], [ -+ PKG_CHECK_MODULES([EXT2FS],[ext2fs], [], [ - build_ext2direct="no" - AS_IF([test "x$enable_ext2direct" = "xyes"], [ - AC_MSG_ERROR([Ext2direct requested but required ext2fs library not found]) -@@ -138,13 +138,13 @@ AC_ARG_ENABLE([netlink], - ) - AS_IF([test "x$enable_netlink" != "xno"], [ - build_netlink="yes" -- PKG_CHECK_MODULES([DBUS], [dbus-1], [CFLAGS="$CFLAGS $DBUS_CFLAGS" LIBS="$LIBS $DBUS_LIBS"], [ -+ PKG_CHECK_MODULES([DBUS], [dbus-1], [], [ - build_netlink="no" - AS_IF([test "x$enable_netlink" = "xyes"] , [ - AC_MSG_ERROR([Required dbus libraries for quota netlink daemon not found.]) - ]) - ]) -- PKG_CHECK_MODULES([LIBNL3], [libnl-3.0 >= 3.1 libnl-genl-3.0], [CFLAGS="$CFLAGS $LIBNL3_CFLAGS" LIBS="$LIBS $LIBNL3_LIBS"], [ -+ PKG_CHECK_MODULES([LIBNL3], [libnl-3.0 >= 3.1 libnl-genl-3.0], [], [ - build_netlink="no" - AS_IF([test "x$enable_netlink" = "xyes"] , [ - AC_MSG_ERROR([Required libnl3 libraries for quota netlink daemon not found.]) -@@ -207,7 +207,7 @@ AS_IF([test x"$enable_rpc" != "xno"], [ - build_rpc="no" - ]) - -- PKG_CHECK_MODULES([TIRPC], [libtirpc], [CFLAGS="$CFLAGS $TIRPC_CFLAGS" LIBS="$LIBS $TIRPC_LIBS"], [ -+ PKG_CHECK_MODULES([TIRPC], [libtirpc], [], [ - AS_IF([test x"$enable_rpc" = "xyes"], [ - AC_MSG_ERROR([could not locate required libtirpc]) - ], [ --- -2.20.1 - diff --git a/quota-4.05-Support-grace-period-expirations-past-y2038-for-XFS.patch b/quota-4.05-Support-grace-period-expirations-past-y2038-for-XFS.patch deleted file mode 100644 index 2af74cd..0000000 --- a/quota-4.05-Support-grace-period-expirations-past-y2038-for-XFS.patch +++ /dev/null @@ -1,109 +0,0 @@ -From 16b60cb9e315ed0e859dba6bea0f206d674d519f Mon Sep 17 00:00:00 2001 -From: "Darrick J. Wong" -Date: Sat, 5 Sep 2020 09:50:26 -0700 -Subject: [PATCH 1/2] Support grace period expirations past y2038 for XFS -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Add the ability to interpret the larger quota grace period expiration -timestamps that the kernel can export via struct xfs_kern_dqblk. - -Signed-off-by: Darrick J. Wong -Signed-off-by: Jan Kara -Signed-off-by: Petr Písař ---- - quotaio_xfs.c | 33 +++++++++++++++++++++++++++++---- - quotaio_xfs.h | 11 ++++++++++- - 2 files changed, 39 insertions(+), 5 deletions(-) - -diff --git a/quotaio_xfs.c b/quotaio_xfs.c -index 3333bb1..9854ec2 100644 ---- a/quotaio_xfs.c -+++ b/quotaio_xfs.c -@@ -42,6 +42,29 @@ scan_dquots: xfs_scan_dquots, - report: xfs_report - }; - -+static inline time_t xfs_kern2utildqblk_ts(const struct xfs_kern_dqblk *k, -+ __s32 timer, __s8 timer_hi) -+{ -+ if (k->d_fieldmask & FS_DQ_BIGTIME) -+ return (__u32)timer | (__s64)timer_hi << 32; -+ return timer; -+} -+ -+static inline void xfs_util2kerndqblk_ts(const struct xfs_kern_dqblk *k, -+ __s32 *timer_lo, __s8 *timer_hi, time_t timer) -+{ -+ *timer_lo = timer; -+ if (k->d_fieldmask & FS_DQ_BIGTIME) -+ *timer_hi = timer >> 32; -+ else -+ *timer_hi = 0; -+} -+ -+static inline int want_bigtime(time_t timer) -+{ -+ return timer > INT32_MAX || timer < INT32_MIN; -+} -+ - /* - * Convert XFS kernel quota format to utility format - */ -@@ -53,8 +76,8 @@ static inline void xfs_kern2utildqblk(struct util_dqblk *u, struct xfs_kern_dqbl - u->dqb_bsoftlimit = k->d_blk_softlimit >> 1; - u->dqb_curinodes = k->d_icount; - u->dqb_curspace = ((qsize_t)k->d_bcount) << 9; -- u->dqb_itime = k->d_itimer; -- u->dqb_btime = k->d_btimer; -+ u->dqb_itime = xfs_kern2utildqblk_ts(k, k->d_itimer, k->d_itimer_hi); -+ u->dqb_btime = xfs_kern2utildqblk_ts(k, k->d_btimer, k->d_btimer_hi); - } - - /* -@@ -69,8 +92,10 @@ static inline void xfs_util2kerndqblk(struct xfs_kern_dqblk *k, struct util_dqbl - k->d_blk_softlimit = u->dqb_bsoftlimit << 1; - k->d_icount = u->dqb_curinodes; - k->d_bcount = u->dqb_curspace >> 9; -- k->d_itimer = u->dqb_itime; -- k->d_btimer = u->dqb_btime; -+ if (want_bigtime(u->dqb_itime) || want_bigtime(u->dqb_btime)) -+ k->d_fieldmask |= FS_DQ_BIGTIME; -+ xfs_util2kerndqblk_ts(k, &k->d_itimer, &k->d_itimer_hi, u->dqb_itime); -+ xfs_util2kerndqblk_ts(k, &k->d_btimer, &k->d_btimer_hi, u->dqb_btime); - } - - /* -diff --git a/quotaio_xfs.h b/quotaio_xfs.h -index be7f86f..e0c2a62 100644 ---- a/quotaio_xfs.h -+++ b/quotaio_xfs.h -@@ -72,7 +72,10 @@ typedef struct fs_disk_quota { - __s32 d_btimer; /* similar to above; for disk blocks */ - __u16 d_iwarns; /* # warnings issued wrt num inodes */ - __u16 d_bwarns; /* # warnings issued wrt disk blocks */ -- __s32 d_padding2; /* padding2 - for future use */ -+ __s8 d_itimer_hi; /* upper 8 bits of timer values */ -+ __s8 d_btimer_hi; -+ __s8 d_rtbtimer_hi; -+ __s8 d_padding2; /* padding2 - for future use */ - __u64 d_rtb_hardlimit; /* absolute limit on realtime blks */ - __u64 d_rtb_softlimit; /* preferred limit on RT disk blks */ - __u64 d_rtbcount; /* # realtime blocks owned */ -@@ -114,6 +117,12 @@ typedef struct fs_disk_quota { - #define FS_DQ_RTBCOUNT (1<<14) - #define FS_DQ_ACCT_MASK (FS_DQ_BCOUNT | FS_DQ_ICOUNT | FS_DQ_RTBCOUNT) - -+/* -+ * Quota expiration timestamps are 40-bit signed integers, with the upper 8 -+ * bits encoded in the _hi fields. -+ */ -+#define FS_DQ_BIGTIME (1<<15) -+ - /* - * Various flags related to quotactl(2). Only relevant to XFS filesystems. - */ --- -2.25.4 - diff --git a/quota-4.05-quota-Add-filesystem-option.patch b/quota-4.05-quota-Add-filesystem-option.patch deleted file mode 100644 index 2914db2..0000000 --- a/quota-4.05-quota-Add-filesystem-option.patch +++ /dev/null @@ -1,115 +0,0 @@ -From 4aac5400dfd61416ffe7ff912f32061854e57e45 Mon Sep 17 00:00:00 2001 -From: Jan Kara -Date: Mon, 21 Sep 2020 13:28:45 +0200 -Subject: [PATCH] quota: Add --filesystem option -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Add option --filesystem to specify filesystem to report quotas for while -still maintaining the capability of specifying also names to report -quotas for. - -Signed-off-by: Jan Kara -Signed-off-by: Petr Písař ---- - quota.1 | 9 +++++++++ - quota.c | 23 +++++++++++++++++++---- - 2 files changed, 28 insertions(+), 4 deletions(-) - -diff --git a/quota.1 b/quota.1 -index 8166853..f2195a1 100644 ---- a/quota.1 -+++ b/quota.1 -@@ -142,6 +142,15 @@ device. - .B -f, --filesystem-list - report quotas only for filesystems specified on command line. - .TP -+.B --filesystem=\f2path\f1 -+report quotas only for filesystem -+.BR path . -+This option can be specified multiple types and quota will be reported for each -+specified filesystem. Unlike command line option -+.B -f -+remaining command like arguments are still treated as user / group / project names -+to report. -+.TP - .B -m, --no-mixed-pathnames - Currently, pathnames of NFSv4 mountpoints are sent without leading slash in the path. - .BR rpc.rquotad -diff --git a/quota.c b/quota.c -index b453ee3..a6ed61f 100644 ---- a/quota.c -+++ b/quota.c -@@ -82,6 +82,9 @@ static void usage(void) - -F, --format=formatname display quota of a specific format\n\ - -f, --filesystem-list display quota information only for given\n\ - filesystems\n\ -+ --filesystem=path display quota information only for given\n\ -+ filesystem, remaining command line arguments\n\ -+ are still treated as user/group/project names\n\ - -A, --all-nfs display quota for all NFS mountpoints\n\ - -m, --no-mixed-pathnames trim leading slashes from NFSv4 mountpoints\n\ - --show-mntpoint show mount point of the file system in output\n\ -@@ -287,6 +290,8 @@ int main(int argc, char **argv) - { - int ngroups; - gid_t gidset[NGROUPS_MAX], *gidsetp; -+ char **fsnames = NULL; -+ int fscount = 0; - int i, ret, type = 0; - struct option long_opts[] = { - { "help", 0, NULL, 'h' }, -@@ -309,6 +314,7 @@ int main(int argc, char **argv) - { "no-mixed-pathnames", 0, NULL, 'm' }, - { "show-mntpoint", 0, NULL, 257 }, - { "hide-device", 0, NULL, 258 }, -+ { "filesystem", 1, NULL, 259 }, - { NULL, 0, NULL, 0 } - }; - -@@ -377,6 +383,13 @@ int main(int argc, char **argv) - case 258: - flags &= ~FL_SHOW_DEVICE; - break; -+ case 259: -+ fscount++; -+ fsnames = reallocarray(fsnames, fscount, sizeof(char *)); -+ if (!fsnames) -+ die(1, _("Not enough memory for filesystem names")); -+ fsnames[fscount - 1] = optarg; -+ break; - case 'V': - version(); - exit(0); -@@ -390,8 +403,10 @@ int main(int argc, char **argv) - - if (!(flags & FL_USER) && !(flags & FL_GROUP) && !(flags & FL_PROJECT)) - flags |= FL_USER; -- if (flags & FL_FSLIST && flags & (FL_LOCALONLY | FL_NOAUTOFS)) -+ if (((flags & FL_FSLIST) || fscount) && flags & (FL_LOCALONLY | FL_NOAUTOFS)) - errstr(_("Warning: Ignoring -%c when filesystem list specified.\n"), flags & FL_LOCALONLY ? 'l' : 'i'); -+ if (fscount && flags & FL_FSLIST) -+ die(1, "Cannot use both --filesystem and -f"); - - init_kernel_interface(); - -@@ -432,12 +447,12 @@ int main(int argc, char **argv) - - if (flags & FL_USER) - for (; argc > 0; argc--, argv++) -- ret |= showquotas(USRQUOTA, user2uid(*argv, !!(flags & FL_NUMNAMES), NULL), 0, NULL); -+ ret |= showquotas(USRQUOTA, user2uid(*argv, !!(flags & FL_NUMNAMES), NULL), fscount, fsnames); - else if (flags & FL_GROUP) - for (; argc > 0; argc--, argv++) -- ret |= showquotas(GRPQUOTA, group2gid(*argv, !!(flags & FL_NUMNAMES), NULL), 0, NULL); -+ ret |= showquotas(GRPQUOTA, group2gid(*argv, !!(flags & FL_NUMNAMES), NULL), fscount, fsnames); - else if (flags & FL_PROJECT) - for (; argc > 0; argc--, argv++) -- ret |= showquotas(PRJQUOTA, project2pid(*argv, !!(flags & FL_NUMNAMES), NULL), 0, NULL); -+ ret |= showquotas(PRJQUOTA, project2pid(*argv, !!(flags & FL_NUMNAMES), NULL), fscount, fsnames); - return ret; - } --- -2.25.4 - diff --git a/quota-4.05-quota-Add-synopsis-for-project-quota.patch b/quota-4.05-quota-Add-synopsis-for-project-quota.patch deleted file mode 100644 index 1d7a410..0000000 --- a/quota-4.05-quota-Add-synopsis-for-project-quota.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 75930ad1b962ceae08e8c2415b42794cd95ff874 Mon Sep 17 00:00:00 2001 -From: Jan Kara -Date: Mon, 21 Sep 2020 13:26:29 +0200 -Subject: [PATCH] quota: Add synopsis for project quota -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Signed-off-by: Jan Kara -Signed-off-by: Petr Písař ---- - quota.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/quota.c b/quota.c -index be494e3..b453ee3 100644 ---- a/quota.c -+++ b/quota.c -@@ -54,10 +54,11 @@ char *progname; - - static void usage(void) - { -- errstr( "%s%s%s%s%s", -+ errstr( "%s%s%s%s%s%s", - _("Usage: quota [-guPqvswim] [-l | [-Q | -A]] [-F quotaformat]\n"), - _("\tquota [-qvswim] [-l | [-Q | -A]] [-F quotaformat] -u username ...\n"), - _("\tquota [-qvswim] [-l | [-Q | -A]] [-F quotaformat] -g groupname ...\n"), -+ _("\tquota [-qvswim] [-l | [-Q | -A]] [-F quotaformat] -P projectname ...\n"), - _("\tquota [-qvswugPQm] [-F quotaformat] -f filesystem ...\n"), - _("\n\ - -u, --user display quota for user\n\ --- -2.25.4 - diff --git a/quota-4.05-quota-tools-Set-FS_DQ_TIMER_MASK-for-individual-xfs-.patch b/quota-4.05-quota-tools-Set-FS_DQ_TIMER_MASK-for-individual-xfs-.patch deleted file mode 100644 index b12b3f7..0000000 --- a/quota-4.05-quota-tools-Set-FS_DQ_TIMER_MASK-for-individual-xfs-.patch +++ /dev/null @@ -1,39 +0,0 @@ -From be96da2353669d433b0abddb85b26ccaf35e3451 Mon Sep 17 00:00:00 2001 -From: Eric Sandeen -Date: Thu, 14 May 2020 12:17:29 +0200 -Subject: [PATCH 1/2] quota-tools: Set FS_DQ_TIMER_MASK for individual xfs - grace times -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -xfs quota code doesn't currently allow increasing an individual -user's grace time, but kernel patches are in development for this. - -In order for setquota to be able to send this update via -setquota -T, we need to add the FS_DQ_TIMER_MASK when we are trying -to update the grace times on an individual user's dquot. - -Signed-off-by: Eric Sandeen -Signed-off-by: Jan Kara -Signed-off-by: Petr Písař ---- - quotaio_xfs.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/quotaio_xfs.c b/quotaio_xfs.c -index b22c7b4..a4d6f67 100644 ---- a/quotaio_xfs.c -+++ b/quotaio_xfs.c -@@ -166,6 +166,8 @@ static int xfs_commit_dquot(struct dquot *dquot, int flags) - xdqblk.d_fieldmask |= FS_DQ_BCOUNT; - } else { - xdqblk.d_fieldmask |= FS_DQ_LIMIT_MASK; -+ if (flags & COMMIT_TIMES) /* indiv grace period */ -+ xdqblk.d_fieldmask |= FS_DQ_TIMER_MASK; - } - - qcmd = QCMD(Q_XFS_SETQLIM, h->qh_type); --- -2.25.4 - diff --git a/quota-4.05-quota-tools-pass-quota-type-to-QCMD-for-Q_XFS_GETQST.patch b/quota-4.05-quota-tools-pass-quota-type-to-QCMD-for-Q_XFS_GETQST.patch deleted file mode 100644 index d1e987e..0000000 --- a/quota-4.05-quota-tools-pass-quota-type-to-QCMD-for-Q_XFS_GETQST.patch +++ /dev/null @@ -1,56 +0,0 @@ -From fdd774bf08e56872ae4c0420e0f01efa25e715d6 Mon Sep 17 00:00:00 2001 -From: Eric Sandeen -Date: Fri, 8 May 2020 14:36:46 -0500 -Subject: [PATCH] quota-tools: pass quota type to QCMD for Q_XFS_GETQSTAT -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Older kernels ignored the type sent to Q_XFS_GETQSTAT, and returned -timer information for the first quota type which was found to be -enabled. - -As of 555b2c3da1fc ("quota: honor quota type in Q_XGETQSTAT[V] calls") -the kernel now honors the quota type requested, so send that from the -Q_XFS_GETQSTAT calls in quota tools. - -Older kernels ignore the type altogether, so this change should be -backwards compatible with no change in behavior. - -Signed-off-by: Eric Sandeen -Signed-off-by: Jan Kara -Signed-off-by: Petr Písař ---- - quotaio_xfs.c | 2 +- - quotaon_xfs.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/quotaio_xfs.c b/quotaio_xfs.c -index 56daf89..b22c7b4 100644 ---- a/quotaio_xfs.c -+++ b/quotaio_xfs.c -@@ -81,7 +81,7 @@ static int xfs_init_io(struct quota_handle *h) - struct xfs_mem_dqinfo info; - int qcmd; - -- qcmd = QCMD(Q_XFS_GETQSTAT, 0); -+ qcmd = QCMD(Q_XFS_GETQSTAT, h->qh_type); - memset(&info, 0, sizeof(struct xfs_mem_dqinfo)); - if (quotactl(qcmd, h->qh_quotadev, 0, (void *)&info) < 0) - return -1; -diff --git a/quotaon_xfs.c b/quotaon_xfs.c -index d557a75..d137240 100644 ---- a/quotaon_xfs.c -+++ b/quotaon_xfs.c -@@ -32,7 +32,7 @@ static int xfs_state_check(int qcmd, int type, int flags, const char *dev, int r - if (flags & STATEFLAG_ALL) - return 0; /* noop */ - -- if (quotactl(QCMD(Q_XFS_GETQSTAT, 0), dev, 0, (void *)&info) < 0) { -+ if (quotactl(QCMD(Q_XFS_GETQSTAT, type), dev, 0, (void *)&info) < 0) { - errstr(_("quotactl() on %s: %s\n"), dev, strerror(errno)); - return -1; - } --- -2.25.4 - diff --git a/quota-4.05-quotacheck-Skip-checking-of-filesystems-with-hidded-.patch b/quota-4.05-quotacheck-Skip-checking-of-filesystems-with-hidded-.patch deleted file mode 100644 index 0ae3917..0000000 --- a/quota-4.05-quotacheck-Skip-checking-of-filesystems-with-hidded-.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 61e57e73a6c63ad50825182ca80bc2a5fcb3e1e2 Mon Sep 17 00:00:00 2001 -From: Jan Kara -Date: Tue, 30 Jul 2019 17:25:46 +0200 -Subject: [PATCH] quotacheck: Skip checking of filesystems with hidded quota - files early -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Currently when filesystem tracks quotas in hidden quota files (but is -also capable of tracking it in regular files), we scan the whole -filesystem and only after that find out we cannot actually make use of -newly created quota files. Just detect this case before scanning the fs -and skip it. - -Signed-off-by: Jan Kara -Signed-off-by: Petr Písař ---- - quotacheck.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/quotacheck.c b/quotacheck.c -index 2cdf475..1311c10 100644 ---- a/quotacheck.c -+++ b/quotacheck.c -@@ -1181,11 +1181,11 @@ static int check_all(void) - continue; - } - cfmt = fmt; -- if (uwant && me_hasquota(mnt, USRQUOTA)) -+ if (uwant && me_hasquota(mnt, USRQUOTA) && mnt->me_qfmt[USRQUOTA] != QF_META) - ucheck = 1; - else - ucheck = 0; -- if (gwant && me_hasquota(mnt, GRPQUOTA)) -+ if (gwant && me_hasquota(mnt, GRPQUOTA) && mnt->me_qfmt[GRPQUOTA] != QF_META) - gcheck = 1; - else - gcheck = 0; --- -2.21.0 - diff --git a/quota-4.05-quotacheck-quotaon-Suggest-using-quota-feature-for-e.patch b/quota-4.05-quotacheck-quotaon-Suggest-using-quota-feature-for-e.patch deleted file mode 100644 index a4e31ce..0000000 --- a/quota-4.05-quotacheck-quotaon-Suggest-using-quota-feature-for-e.patch +++ /dev/null @@ -1,205 +0,0 @@ -From 7b89abbc983d6cf7f1baf52a9ad90211eee02103 Mon Sep 17 00:00:00 2001 -From: Jan Kara -Date: Mon, 19 Oct 2020 17:44:46 +0200 -Subject: [PATCH] quotacheck,quotaon: Suggest using quota feature for ext4 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Ext4 supports quota using internal quota files for quite some time. -Suggest using this quota feature instead of external quota files if the -kernel is new enough since external quota files on ext4 will be -deprecated. - -Signed-off-by: Jan Kara -Signed-off-by: Petr Písař ---- - quotacheck.c | 59 +++++++++++++++++++++++++++++++--------------------- - quotaon.c | 11 ++++++++++ - quotasys.c | 27 ++++++++++++++++++++++++ - quotasys.h | 3 +++ - 4 files changed, 76 insertions(+), 24 deletions(-) - -diff --git a/quotacheck.c b/quotacheck.c -index 1311c10..5810ced 100644 ---- a/quotacheck.c -+++ b/quotacheck.c -@@ -1130,8 +1130,8 @@ static int compatible_fs_qfmt(char *fstype, int fmt) - return !!strcmp(fstype, MNTTYPE_GFS2); - } - --/* Parse kernel version and warn if not using journaled quotas */ --static void warn_if_jquota_supported(void) -+/* Parse kernel version and return 1 if journaled quota is supported */ -+static int kernel_supports_jquota(void) - { - struct utsname stats; - int v; -@@ -1139,28 +1139,25 @@ static void warn_if_jquota_supported(void) - - if (uname(&stats) < 0) { - errstr(_("Cannot get system info: %s\n"), strerror(errno)); -- return; -+ return 0; - } - if (strcmp(stats.sysname, "Linux")) -- return; -+ return 0; - - v = strtol(stats.release, &errch, 10); - if (v < 2) -- return; -+ return 0; - if (v >= 3) -- goto warn; -+ return 1; - if (*errch != '.') -- return; -+ return 0; - v = strtol(errch + 1, &errch, 10); - if (*errch != '.' || v < 6) -- return; -+ return 0; - v = strtol(errch + 1, &errch, 10); - if (v < 11) -- return; --warn: -- errstr(_("Your kernel probably supports journaled quota but you are " -- "not using it. Consider switching to journaled quota to avoid" -- " running quotacheck after an unclean shutdown.\n")); -+ return 0; -+ return 1; - } - - /* Return 0 in case of success, non-zero otherwise. */ -@@ -1202,17 +1199,31 @@ static int check_all(void) - debug(FL_DEBUG, _("Detected quota format %s\n"), fmt2name(cfmt)); - } - -- if (flags & (FL_VERBOSE | FL_DEBUG) && -- !str_hasmntopt(mnt->me_opts, MNTOPT_USRJQUOTA) && -- !str_hasmntopt(mnt->me_opts, MNTOPT_GRPJQUOTA) && -- !warned && -- (!strcmp(mnt->me_type, MNTTYPE_EXT3) || -- !strcmp(mnt->me_type, MNTTYPE_EXT4) || -- !strcmp(mnt->me_type, MNTTYPE_NEXT3) || -- !strcmp(mnt->me_type, MNTTYPE_EXT4DEV) || -- !strcmp(mnt->me_type, MNTTYPE_REISER))) { -- warned = 1; -- warn_if_jquota_supported(); -+ if (flags & (FL_VERBOSE | FL_DEBUG) && !warned) { -+ if (!strcmp(mnt->me_type, MNTTYPE_EXT4) && -+ ext4_supports_quota_feature()) { -+ warned = 1; -+ errstr(_("Your kernel probably supports ext4 " -+ "quota feature but you are using " -+ "external quota files. Please switch " -+ "your filesystem to use ext4 quota " -+ "feature as external quota files on " -+ "ext4 are deprecated.\n")); -+ } else if (!str_hasmntopt(mnt->me_opts, MNTOPT_USRJQUOTA) && -+ !str_hasmntopt(mnt->me_opts, MNTOPT_GRPJQUOTA) && -+ (!strcmp(mnt->me_type, MNTTYPE_EXT3) || -+ !strcmp(mnt->me_type, MNTTYPE_EXT4) || -+ !strcmp(mnt->me_type, MNTTYPE_NEXT3) || -+ !strcmp(mnt->me_type, MNTTYPE_EXT4DEV) || -+ !strcmp(mnt->me_type, MNTTYPE_REISER)) && -+ kernel_supports_jquota()) { -+ warned = 1; -+ errstr(_("Your kernel probably supports " -+ "journaled quota but you are not " -+ "using it. Consider switching to " -+ "journaled quota to avoid running " -+ "quotacheck after an unclean shutdown.\n")); -+ } - } - - checked++; -diff --git a/quotaon.c b/quotaon.c -index 508e57e..aceb6ec 100644 ---- a/quotaon.c -+++ b/quotaon.c -@@ -243,6 +243,7 @@ static int v2_newstate(struct mount_entry *mnt, int type, char *file, int flags, - */ - static int newstate(struct mount_entry *mnt, int type, char *extra) - { -+ static int warned; - int sflags, ret = 0; - - sflags = flags & FL_OFF ? STATEFLAG_OFF : STATEFLAG_ON; -@@ -269,6 +270,16 @@ static int newstate(struct mount_entry *mnt, int type, char *extra) - - if (!me_hasquota(mnt, type)) - return 0; -+ if (flags & FL_VERBOSE && !warned && -+ !strcmp(mnt->me_type, MNTTYPE_EXT4) && -+ ext4_supports_quota_feature()) { -+ warned = 1; -+ errstr(_("Your kernel probably supports ext4 quota " -+ "feature but you are using external quota " -+ "files. Please switch your filesystem to use " -+ "ext4 quota feature as external quota files " -+ "on ext4 are deprecated.\n")); -+ } - if (fmt == -1) { - if (get_qf_name(mnt, type, QF_VFSV0, - NF_FORMAT, &extra) >= 0) -diff --git a/quotasys.c b/quotasys.c -index d8c0e48..885fb1f 100644 ---- a/quotasys.c -+++ b/quotasys.c -@@ -24,6 +24,7 @@ - #include - #include - #include -+#include - - #include "pot.h" - #include "bylabel.h" -@@ -1597,3 +1598,29 @@ void end_mounts_scan(void) - check_dirs = NULL; - check_dirs_cnt = 0; - } -+ -+/* Parse kernel version and return 1 if ext4 supports quota feature */ -+int ext4_supports_quota_feature(void) -+{ -+ struct utsname stats; -+ int v; -+ char *errch; -+ -+ if (uname(&stats) < 0) { -+ errstr(_("Cannot get system info: %s\n"), strerror(errno)); -+ return 0; -+ } -+ if (strcmp(stats.sysname, "Linux")) -+ return 0; -+ v = strtol(stats.release, &errch, 10); -+ if (v < 4) -+ return 0; -+ if (v > 4) -+ return 1; -+ if (*errch != '.') -+ return 0; -+ v = strtol(errch + 1, &errch, 10); -+ if (*errch != '.' || v < 9) -+ return 0; -+ return 1; -+} -diff --git a/quotasys.h b/quotasys.h -index 05f8ad5..841251e 100644 ---- a/quotasys.h -+++ b/quotasys.h -@@ -203,6 +203,9 @@ struct mount_entry *get_next_mount(void); - /* Free all structures associated with mountpoints scan */ - void end_mounts_scan(void); - -+/* Parse kernel version and return 1 if ext4 supports quota feature */ -+int ext4_supports_quota_feature(void); -+ - /* Quota output formats */ - #define QOF_ERROR -1 - #define QOF_DEFAULT 0 --- -2.25.4 - diff --git a/quota-4.05-quotaops-Do-not-leak-dquot-structures-on-failure.patch b/quota-4.05-quotaops-Do-not-leak-dquot-structures-on-failure.patch deleted file mode 100644 index 9090359..0000000 --- a/quota-4.05-quotaops-Do-not-leak-dquot-structures-on-failure.patch +++ /dev/null @@ -1,68 +0,0 @@ -From 7942290a0a6230fcc56eae42bf436e6eeca88777 Mon Sep 17 00:00:00 2001 -From: Jan Kara -Date: Fri, 24 May 2019 12:25:15 +0200 -Subject: [PATCH 3/4] quotaops: Do not leak dquot structures on failure -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Some error paths in getprivs() were not properly freeing already fetched -structures. Free them properly in case of error. - -Signed-off-by: Jan Kara -Signed-off-by: Petr Písař ---- - quotaops.c | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) - -diff --git a/quotaops.c b/quotaops.c -index 3d65490..e067d29 100644 ---- a/quotaops.c -+++ b/quotaops.c -@@ -80,7 +80,7 @@ struct dquot *getprivs(qid_t id, struct quota_handle **handles, int ignore_noquo - if (euid != id && euid != 0) { - uid2user(id, name); - errstr(_("%s (uid %d): Permission denied\n"), name, id); -- return (struct dquot *)NULL; -+ goto out_err; - } - break; - case GRPQUOTA: -@@ -92,7 +92,7 @@ struct dquot *getprivs(qid_t id, struct quota_handle **handles, int ignore_noquo - if (!gidsetp) { - gid2group(id, name); - errstr(_("%s (gid %d): gid set allocation (%d): %s\n"), name, id, ngroups, strerror(errno)); -- return (struct dquot *)NULL; -+ goto out_err; - } - } - else -@@ -103,7 +103,7 @@ struct dquot *getprivs(qid_t id, struct quota_handle **handles, int ignore_noquo - free(gidsetp); - gid2group(id, name); - errstr(_("%s (gid %d): error while trying getgroups(): %s\n"), name, id, strerror(errno)); -- return (struct dquot *)NULL; -+ goto out_err; - } - - for (j = 0; j < ngroups; j++) -@@ -115,7 +115,7 @@ struct dquot *getprivs(qid_t id, struct quota_handle **handles, int ignore_noquo - gid2group(id, name); - errstr(_("%s (gid %d): Permission denied\n"), - name, id); -- return (struct dquot *)NULL; -+ goto out_err; - } - break; - default: -@@ -134,6 +134,7 @@ struct dquot *getprivs(qid_t id, struct quota_handle **handles, int ignore_noquo - id2name(id, handles[i]->qh_type, name); - errstr(_("error while getting quota from %s for %s (id %u): %s\n"), - handles[i]->qh_quotadev, name, id, strerror(olderrno)); -+out_err: - freeprivs(qhead); - return NULL; - } --- -2.20.1 - diff --git a/quota-4.05-quotaops-Do-not-return-partial-list-from-getprivs.patch b/quota-4.05-quotaops-Do-not-return-partial-list-from-getprivs.patch deleted file mode 100644 index 13e07d0..0000000 --- a/quota-4.05-quotaops-Do-not-return-partial-list-from-getprivs.patch +++ /dev/null @@ -1,61 +0,0 @@ -From e6decbfe6c44935584954ab01c8be2f5d02acf1b Mon Sep 17 00:00:00 2001 -From: Jan Kara -Date: Fri, 24 May 2019 12:21:46 +0200 -Subject: [PATCH 2/4] quotaops: Do not return partial list from getprivs() -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -When we failed to get some dquots from NFS server, we just reported -error, didn't include the dquot in the list built in getprivs() but -otherwise continued operation. Fail getprivs() in case of error instead -so that the failure propagates properly to the caller. - -Signed-off-by: Jan Kara -Signed-off-by: Petr Písař ---- - quotaops.c | 19 +++++++++++-------- - 1 file changed, 11 insertions(+), 8 deletions(-) - -diff --git a/quotaops.c b/quotaops.c -index ad29fd9..3d65490 100644 ---- a/quotaops.c -+++ b/quotaops.c -@@ -61,7 +61,7 @@ void update_grace_times(struct dquot *q) - /* - * Collect the requested quota information. - */ --struct dquot *getprivs(qid_t id, struct quota_handle **handles, int quiet) -+struct dquot *getprivs(qid_t id, struct quota_handle **handles, int ignore_noquota) - { - struct dquot *q, *qtail = NULL, *qhead = NULL; - int i; -@@ -124,15 +124,18 @@ struct dquot *getprivs(qid_t id, struct quota_handle **handles, int quiet) - #endif - - if (!(q = handles[i]->qh_ops->read_dquot(handles[i], id))) { -+ int olderrno = errno; -+ - /* If rpc.rquotad is not running filesystem might be just without quotas... */ -- if (!quiet || (errno != ENOENT && errno != ECONNREFUSED)) { -- int olderrno = errno; -+ if (ignore_noquota && -+ (errno == ENOENT || errno == ECONNREFUSED)) -+ continue; - -- id2name(id, handles[i]->qh_type, name); -- errstr(_("error while getting quota from %s for %s (id %u): %s\n"), -- handles[i]->qh_quotadev, name, id, strerror(olderrno)); -- } -- continue; -+ id2name(id, handles[i]->qh_type, name); -+ errstr(_("error while getting quota from %s for %s (id %u): %s\n"), -+ handles[i]->qh_quotadev, name, id, strerror(olderrno)); -+ freeprivs(qhead); -+ return NULL; - } - if (qhead == NULL) - qhead = q; --- -2.20.1 - diff --git a/quota-4.05-quotaops-Make-error-string-translatable.patch b/quota-4.05-quotaops-Make-error-string-translatable.patch deleted file mode 100644 index 54dba05..0000000 --- a/quota-4.05-quotaops-Make-error-string-translatable.patch +++ /dev/null @@ -1,32 +0,0 @@ -From d9996b2b6b3cdcd41485804eabadbf576506c8fa Mon Sep 17 00:00:00 2001 -From: Jan Kara -Date: Tue, 28 May 2019 16:39:22 +0200 -Subject: [PATCH] quotaops: Make error string translatable -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Add forgotten translation quotes to the error string. - -Signed-off-by: Jan Kara -Signed-off-by: Petr Písař ---- - quotaops.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/quotaops.c b/quotaops.c -index 16475e8..1a8d7fe 100644 ---- a/quotaops.c -+++ b/quotaops.c -@@ -131,7 +131,7 @@ struct dquot *getprivs(qid_t id, struct quota_handle **handles, int ignore_noquo - continue; - - if (errno == ECONNREFUSED) { -- estr = "Cannot connect to RPC quota service"; -+ estr = _("Cannot connect to RPC quota service"); - } else { - estr = strerror(errno); - } --- -2.20.1 - diff --git a/quota-4.05-rpc-Clarify-error-message-when-cannot-connect-to-rpc.patch b/quota-4.05-rpc-Clarify-error-message-when-cannot-connect-to-rpc.patch deleted file mode 100644 index 257f2fe..0000000 --- a/quota-4.05-rpc-Clarify-error-message-when-cannot-connect-to-rpc.patch +++ /dev/null @@ -1,127 +0,0 @@ -From 4cd287f3fa3838a31eb6636366f8ce26ee6e1425 Mon Sep 17 00:00:00 2001 -From: Jan Kara -Date: Tue, 28 May 2019 10:52:49 +0200 -Subject: [PATCH] rpc: Clarify error message when cannot connect to rpc.rquotad -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Currently when RPC rquota service is not registered, we report somewhat -confusing "No such file of directory" error. For other errors when -creating rquota request we report "Connection refused". There's no big -difference for user between these errors and neither of them tells what -really happened. So just unify handling of these errors and report more -general error telling the user where the problem is. - -Signed-off-by: Jan Kara -Signed-off-by: Petr Písař ---- - quotaops.c | 14 +++++++++----- - rquota_client.c | 14 -------------- - 2 files changed, 9 insertions(+), 19 deletions(-) - -diff --git a/quotaops.c b/quotaops.c -index e067d29..16475e8 100644 ---- a/quotaops.c -+++ b/quotaops.c -@@ -124,16 +124,20 @@ struct dquot *getprivs(qid_t id, struct quota_handle **handles, int ignore_noquo - #endif - - if (!(q = handles[i]->qh_ops->read_dquot(handles[i], id))) { -- int olderrno = errno; -+ char *estr; - -- /* If rpc.rquotad is not running filesystem might be just without quotas... */ -- if (ignore_noquota && -- (errno == ENOENT || errno == ECONNREFUSED)) -+ /* If rpc.rquotad is not running, filesystem might be just without quotas... */ -+ if (ignore_noquota && errno == ECONNREFUSED) - continue; - -+ if (errno == ECONNREFUSED) { -+ estr = "Cannot connect to RPC quota service"; -+ } else { -+ estr = strerror(errno); -+ } - id2name(id, handles[i]->qh_type, name); - errstr(_("error while getting quota from %s for %s (id %u): %s\n"), -- handles[i]->qh_quotadev, name, id, strerror(olderrno)); -+ handles[i]->qh_quotadev, name, id, estr); - out_err: - freeprivs(qhead); - return NULL; -diff --git a/rquota_client.c b/rquota_client.c -index a3a4ae3..7f8e821 100644 ---- a/rquota_client.c -+++ b/rquota_client.c -@@ -148,7 +148,6 @@ int rpc_rquota_get(struct dquot *dquot) - } args; - char *fsname_tmp, *host, *pathname; - struct timeval timeout = { 2, 0 }; -- int rquotaprog_not_registered = 0; - int ret; - - /* -@@ -210,8 +209,6 @@ int rpc_rquota_get(struct dquot *dquot) - } - else { - result = NULL; -- if (rpc_createerr.cf_stat == RPC_PROGNOTREGISTERED) -- rquotaprog_not_registered = 1; - } - - if (result == NULL || !result->status) { -@@ -251,16 +248,12 @@ int rpc_rquota_get(struct dquot *dquot) - clnt_destroy(clnt); - } else { - result = NULL; -- if (rpc_createerr.cf_stat == RPC_PROGNOTREGISTERED) -- rquotaprog_not_registered = 1; - } - } - } - free(fsname_tmp); - if (result) - ret = result->status; -- else if (rquotaprog_not_registered) -- ret = Q_NOQUOTA; - else - ret = -1; - return rquota_err(ret); -@@ -280,7 +273,6 @@ int rpc_rquota_set(int qcmd, struct dquot *dquot) - } args; - char *fsname_tmp, *host, *pathname; - struct timeval timeout = { 2, 0 }; -- int rquotaprog_not_registered = 0; - int ret; - - /* RPC limits values to 32b variables. Prevent value wrapping. */ -@@ -340,8 +332,6 @@ int rpc_rquota_set(int qcmd, struct dquot *dquot) - } - else { - result = NULL; -- if (rpc_createerr.cf_stat == RPC_PROGNOTREGISTERED) -- rquotaprog_not_registered = 1; - } - - if (result == NULL || !result->status) { -@@ -383,16 +373,12 @@ int rpc_rquota_set(int qcmd, struct dquot *dquot) - clnt_destroy(clnt); - } else { - result = NULL; -- if (rpc_createerr.cf_stat == RPC_PROGNOTREGISTERED) -- rquotaprog_not_registered = 1; - } - } - } - free(fsname_tmp); - if (result) - ret = result->status; -- else if (rquotaprog_not_registered) -- ret = Q_NOQUOTA; - else - ret = -1; - return rquota_err(ret); --- -2.20.1 - diff --git a/quota-4.05-setquota-Report-failure-to-obtain-quota-information.patch b/quota-4.05-setquota-Report-failure-to-obtain-quota-information.patch deleted file mode 100644 index 2c438ac..0000000 --- a/quota-4.05-setquota-Report-failure-to-obtain-quota-information.patch +++ /dev/null @@ -1,73 +0,0 @@ -From daba90fb6d9b8c8f1361457bf2bea7b18f4e35ec Mon Sep 17 00:00:00 2001 -From: Jan Kara -Date: Fri, 24 May 2019 12:53:32 +0200 -Subject: [PATCH 4/4] setquota: Report failure to obtain quota information -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -setquota currently silently ignored when it could not obtain quota -information to update and just skipped updating for the filesystem. Make -it report error and exit properly. - -Signed-off-by: Jan Kara -Signed-off-by: Petr Písař ---- - setquota.c | 18 ++++++++++++++++++ - 1 file changed, 18 insertions(+) - -diff --git a/setquota.c b/setquota.c -index 08fdbfc..993d920 100644 ---- a/setquota.c -+++ b/setquota.c -@@ -315,8 +315,17 @@ static int setlimits(struct quota_handle **handles) - int ret = 0; - - curprivs = getprivs(id, handles, !!(flags & FL_ALL)); -+ if (!curprivs) { -+ errstr(_("Error getting quota information to update.\n")); -+ return -1; -+ } - if (flags & FL_PROTO) { - protoprivs = getprivs(protoid, handles, 0); -+ if (!protoprivs) { -+ errstr(_("Error getting prototype quota information.\n")); -+ ret = -1; -+ goto out; -+ } - for (q = curprivs, protoq = protoprivs; q && protoq; q = q->dq_next, protoq = protoq->dq_next) { - q->dq_dqb.dqb_bsoftlimit = protoq->dq_dqb.dqb_bsoftlimit; - q->dq_dqb.dqb_bhardlimit = protoq->dq_dqb.dqb_bhardlimit; -@@ -337,6 +346,7 @@ static int setlimits(struct quota_handle **handles) - } - if (putprivs(curprivs, COMMIT_LIMITS) == -1) - ret = -1; -+out: - freeprivs(curprivs); - return ret; - } -@@ -436,6 +446,10 @@ static int batch_setlimits(struct quota_handle **handles) - - while (!read_entry(&id, &isoftlimit, &ihardlimit, &bsoftlimit, &bhardlimit)) { - curprivs = getprivs(id, handles, !!(flags & FL_ALL)); -+ if (!curprivs) { -+ errstr(_("Error getting quota information to update.\n")); -+ return -1; -+ } - for (q = curprivs; q; q = q->dq_next) { - q->dq_dqb.dqb_bsoftlimit = bsoftlimit; - q->dq_dqb.dqb_bhardlimit = bhardlimit; -@@ -475,6 +489,10 @@ static int setindivgraces(struct quota_handle **handles) - struct dquot *q, *curprivs; - - curprivs = getprivs(id, handles, !!(flags & FL_ALL)); -+ if (!curprivs) { -+ errstr(_("Error getting quota information to update.\n")); -+ return -1; -+ } - for (q = curprivs; q; q = q->dq_next) { - if (q->dq_dqb.dqb_bsoftlimit && toqb(q->dq_dqb.dqb_curspace) > q->dq_dqb.dqb_bsoftlimit) - q->dq_dqb.dqb_btime = toset.dqb_btime; --- -2.20.1 - diff --git a/quota-4.05-warnquota-Clarify-that-CC_TO-gets-resolved-through-L.patch b/quota-4.05-warnquota-Clarify-that-CC_TO-gets-resolved-through-L.patch deleted file mode 100644 index 5075b2f..0000000 --- a/quota-4.05-warnquota-Clarify-that-CC_TO-gets-resolved-through-L.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 662e9e93babc9be39bb2d6267ffe428703ca137e Mon Sep 17 00:00:00 2001 -From: Jan Kara -Date: Thu, 12 Sep 2019 10:18:01 +0200 -Subject: [PATCH] warnquota: Clarify that CC_TO gets resolved through LDAP -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Clarify that CC_TO field from warnquota.conf gets resolved through LDAP -lookup similarly to normal message recifient. - -Signed-off-by: Jan Kara -Petr Písař: Ported to Fedora 32. -Signed-off-by: Petr Písař ---- - warnquota.conf | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/warnquota.conf b/warnquota.conf -index 7e00947..34bfe53 100644 ---- a/warnquota.conf -+++ b/warnquota.conf -@@ -8,6 +8,8 @@ MAIL_CMD = "/usr/sbin/sendmail -t" - FROM = "root@example.com" - # but they don't have to be: - SUBJECT = NOTE: You are exceeding your allocated disk space limits -+# Note that if LDAP is configured, the name in CC_TO gets looked up in LDAP -+# to obtain email address similarly to email recipient address. - CC_TO = "root@example.com" - # If you set this variable CC will be used only when user has less than - # specified grace time left (examples of possible times: 5 seconds, 1 minute, --- -2.21.0 - diff --git a/quota-4.05-warnquota-Fix-help-text.patch b/quota-4.05-warnquota-Fix-help-text.patch deleted file mode 100644 index 0e812c5..0000000 --- a/quota-4.05-warnquota-Fix-help-text.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 1ae10f8692981285ad52af9e9ae3e5f16201b187 Mon Sep 17 00:00:00 2001 -From: Jan Kara -Date: Mon, 12 Aug 2019 16:31:31 +0200 -Subject: [PATCH] warnquota: Fix help text -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The help text was wrongly saying that -v is equivalent to --version. -It should be -V. - -Signed-off-by: Jan Kara -Signed-off-by: Petr Písař ---- - warnquota.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/warnquota.c b/warnquota.c -index 5158094..606b7cc 100644 ---- a/warnquota.c -+++ b/warnquota.c -@@ -1042,7 +1042,7 @@ static void usage(void) - -q, --quota-tab=quotatab-file non-default quotatab\n\ - -a, --admins-file=admins-file non-default admins file\n\ - -h, --help display this help message and exit\n\ ---v, --version display version information and exit\n\n")); -+-V, --version display version information and exit\n\n")); - errstr(_("Bugs to %s\n"), PACKAGE_BUGREPORT); - wc_exit(1); - } --- -2.21.0 - diff --git a/quota-4.05-warnquota-Free-LDAP-error-message.patch b/quota-4.05-warnquota-Free-LDAP-error-message.patch deleted file mode 100644 index af8a680..0000000 --- a/quota-4.05-warnquota-Free-LDAP-error-message.patch +++ /dev/null @@ -1,36 +0,0 @@ -From a543b200cdd1e798383cc1070e51ad13ff424543 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Tue, 5 Nov 2019 12:11:14 +0100 -Subject: [PATCH] warnquota: Free LDAP error message -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -ldap_get_option(3) documents that a pointer set by -LDAP_OPT_DIAGNOSTIC_MESSAGE must be freed with ldap_memfree(3). - -Signed-off-by: Petr Písař ---- - warnquota.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/warnquota.c b/warnquota.c -index d54b4c1..f6b42d5 100644 ---- a/warnquota.c -+++ b/warnquota.c -@@ -190,8 +190,11 @@ static void print_ldap_error(int err, char *prefix) - sstrncat(outbuf, ": %s\n", LDAP_ERR_BUF_SIZE); - errstr(outbuf, ldap_err2string(err)); - ldap_get_option(ldapconn, LDAP_OPT_DIAGNOSTIC_MESSAGE, (void *)&msg); -- if (msg && strcmp(msg, "")) -+ if (msg) { -+ if (strcmp(msg, "")) - errstr(_("Additional error info: %s\n"), msg); -+ ldap_memfree(msg); -+ } - } - - static int setup_ldap(struct configparams *config) --- -2.21.0 - diff --git a/quota-4.05-warnquota-Initialize-all-members-of-a-configparams-s.patch b/quota-4.05-warnquota-Initialize-all-members-of-a-configparams-s.patch deleted file mode 100644 index bd8f10c..0000000 --- a/quota-4.05-warnquota-Initialize-all-members-of-a-configparams-s.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 50c3f30d610ed9979a1291422e8641e05f881212 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Tue, 5 Nov 2019 14:20:46 +0100 -Subject: [PATCH] warnquota: Initialize all members of a configparams structure -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Running warnquota under valgrind reported many "Conditional jump or -move depends on uninitialised value" mistakes because readconfigfile() -did not initizalize ldap_bindpw member if some of the configuration -options were missing from the configuration file. - -This patch simply initializes all bytes of the configparams structure -to 0 instead of settting each of the members explicitly. - -Signed-off-by: Petr Písař ---- - warnquota.c | 8 +------- - 1 file changed, 1 insertion(+), 7 deletions(-) - -diff --git a/warnquota.c b/warnquota.c -index f6b42d5..2882fee 100644 ---- a/warnquota.c -+++ b/warnquota.c -@@ -759,13 +759,13 @@ static int readconfigfile(const char *filename, struct configparams *config) - char *locale; - - /* set default values */ -+ memset(config, 0, sizeof(*config)); - sstrncpy(config->mail_cmd, MAIL_CMD, CNF_BUFFER); - sstrncpy(config->from, FROM, CNF_BUFFER); - sstrncpy(config->subject, SUBJECT, CNF_BUFFER); - sstrncpy(config->cc_to, CC_TO, CNF_BUFFER); - sstrncpy(config->support, SUPPORT, CNF_BUFFER); - sstrncpy(config->phone, PHONE, CNF_BUFFER); -- (config->charset)[0] = '\0'; - setlocale(LC_ALL, NULL); - locale = setlocale(LC_MESSAGES, NULL); - #ifdef HAVE_NL_LANGINFO -@@ -775,17 +775,11 @@ static int readconfigfile(const char *filename, struct configparams *config) - } - #endif - maildev[0] = 0; -- config->user_signature = config->user_message = config->group_signature = config->group_message = NULL; - config->cc_before = -1; - - #ifdef USE_LDAP_MAIL_LOOKUP -- config->use_ldap_mail = 0; -- config->ldap_starttls = 0; - config->ldap_tls = LDAP_OPT_X_TLS_NEVER; - config->ldap_vers = LDAP_VERSION3; -- config->ldap_port = config->ldap_is_setup = 0; -- config->ldap_host[0] = 0; -- config->ldap_uri[0] = 0; - #endif - - if (!(fp = fopen(filename, "r"))) { --- -2.21.0 - diff --git a/quota-4.05-warnquota-Print-also-additional-error-info-for-LDAP-.patch b/quota-4.05-warnquota-Print-also-additional-error-info-for-LDAP-.patch deleted file mode 100644 index 4742fc2..0000000 --- a/quota-4.05-warnquota-Print-also-additional-error-info-for-LDAP-.patch +++ /dev/null @@ -1,82 +0,0 @@ -From 52ead0d37dcbce59338dcb765527712c9ee656e1 Mon Sep 17 00:00:00 2001 -From: Jan Kara -Date: Thu, 12 Sep 2019 10:06:38 +0200 -Subject: [PATCH] warnquota: Print also additional error info for LDAP errors -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -LDAP library provides additional error information in some cases. Print -it make debugging LDAP setup easier. - -Signed-off-by: Jan Kara -Signed-off-by: Petr Písař ---- - warnquota.c | 26 +++++++++++++++++++++----- - 1 file changed, 21 insertions(+), 5 deletions(-) - -diff --git a/warnquota.c b/warnquota.c -index 24d7410..d54b4c1 100644 ---- a/warnquota.c -+++ b/warnquota.c -@@ -178,6 +178,22 @@ static void wc_exit(int ex_stat) - } - - #ifdef USE_LDAP_MAIL_LOOKUP -+ -+#define LDAP_ERR_BUF_SIZE 1024 -+ -+static void print_ldap_error(int err, char *prefix) -+{ -+ char *msg = NULL; -+ char outbuf[LDAP_ERR_BUF_SIZE]; -+ -+ sstrncpy(outbuf, prefix, LDAP_ERR_BUF_SIZE); -+ sstrncat(outbuf, ": %s\n", LDAP_ERR_BUF_SIZE); -+ errstr(outbuf, ldap_err2string(err)); -+ ldap_get_option(ldapconn, LDAP_OPT_DIAGNOSTIC_MESSAGE, (void *)&msg); -+ if (msg && strcmp(msg, "")) -+ errstr(_("Additional error info: %s\n"), msg); -+} -+ - static int setup_ldap(struct configparams *config) - { - int ret; -@@ -187,7 +203,7 @@ static int setup_ldap(struct configparams *config) - ret = ldap_initialize(&ldapconn, config->ldap_uri); - - if (ret != LDAP_SUCCESS) { -- errstr(_("ldap_initialize() failed: %s\n"), ldap_err2string(ret)); -+ print_ldap_error(ret, _("ldap_initialize() failed")); - return -1; - } - -@@ -196,13 +212,13 @@ static int setup_ldap(struct configparams *config) - ldap_set_option(ldapconn, LDAP_OPT_X_TLS_REQUIRE_CERT, &(config->ldap_tls)); - ret = ldap_start_tls_s(ldapconn, NULL, NULL); - if (ret != LDAP_SUCCESS) { -- errstr(_("ldap_start_tls_s() failed: %s\n"), ldap_err2string(ret)); -- return -1; -+ print_ldap_error(ret, _("ldap_start_tls_s() failed")); -+ return -1; - } - } - ret = ldap_sasl_bind_s(ldapconn, config->ldap_binddn, LDAP_SASL_SIMPLE, &cred, NULL, NULL, NULL); - if (ret != LDAP_SUCCESS) { -- errstr(_("ldap_sasl_bind_s() failed: %s\n"), ldap_err2string(ret)); -+ print_ldap_error(ret, _("ldap_sasl_bind_s() failed")); - return -1; - } - return 0; -@@ -428,7 +444,7 @@ static char *lookup_user(struct configparams *config, char *user) - - if (ret != LDAP_SUCCESS) { - errstr(_("Error with %s.\n"), user); -- errstr(_("ldap_search_ext_s() failed: %s\n"), ldap_err2string(ret)); -+ print_ldap_error(ret, _("ldap_search_ext_s() failed")); - return NULL; - } - --- -2.21.0 - diff --git a/quota-4.05-warnquota-Properly-detect-LDAP-errors.patch b/quota-4.05-warnquota-Properly-detect-LDAP-errors.patch deleted file mode 100644 index 9ec11f7..0000000 --- a/quota-4.05-warnquota-Properly-detect-LDAP-errors.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 3615f3ec7dd3c867a8394640c0fc4736189315df Mon Sep 17 00:00:00 2001 -From: Jan Kara -Date: Thu, 5 Sep 2019 16:29:08 +0200 -Subject: [PATCH] warnquota: Properly detect LDAP errors -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -ldap_search_ext_s() and ldap_sasl_bind_s() can return also positive -error result codes. Catch them properly. - -Signed-off-by: Jan Kara -Signed-off-by: Petr Písař ---- - warnquota.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/warnquota.c b/warnquota.c -index 53da671..24d7410 100644 ---- a/warnquota.c -+++ b/warnquota.c -@@ -201,7 +201,7 @@ static int setup_ldap(struct configparams *config) - } - } - ret = ldap_sasl_bind_s(ldapconn, config->ldap_binddn, LDAP_SASL_SIMPLE, &cred, NULL, NULL, NULL); -- if(ret < 0) { -+ if (ret != LDAP_SUCCESS) { - errstr(_("ldap_sasl_bind_s() failed: %s\n"), ldap_err2string(ret)); - return -1; - } -@@ -426,7 +426,7 @@ static char *lookup_user(struct configparams *config, char *user) - searchbuf, NULL, 0, NULL, NULL, NULL, - 0, &result); - -- if (ret < 0) { -+ if (ret != LDAP_SUCCESS) { - errstr(_("Error with %s.\n"), user); - errstr(_("ldap_search_ext_s() failed: %s\n"), ldap_err2string(ret)); - return NULL; --- -2.21.0 - diff --git a/quota-4.04-warnquota-configuration-tunes.patch b/quota-4.06-warnquota-configuration-tunes.patch similarity index 66% rename from quota-4.04-warnquota-configuration-tunes.patch rename to quota-4.06-warnquota-configuration-tunes.patch index 9030e2e..3f4e38f 100644 --- a/quota-4.04-warnquota-configuration-tunes.patch +++ b/quota-4.06-warnquota-configuration-tunes.patch @@ -1,4 +1,4 @@ -From 67a0dbf6434552e720b0d311597553b3a76f779e Mon Sep 17 00:00:00 2001 +From 6400cf65afed09c63d96cc62b1e7eee964bdb6cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Tue, 23 Aug 2011 13:45:15 +0200 Subject: [PATCH] warnquota configuration tunes @@ -8,19 +8,20 @@ Content-Transfer-Encoding: 8bit Rest of changes (378a64006bb1e818e84a1c77808563b802b028fa) not accepted by upstream (we had root@... addresses and more enterprise -wordings usually there). +wordings usually there). Later improved by the upstream in +0efb2331f1c39c9665fb6e92e83c7d080b877de1. Signed-off-by: Petr Písař --- warnquota.c | 2 +- - warnquota.conf | 17 ++++++++--------- - 2 files changed, 9 insertions(+), 10 deletions(-) + warnquota.conf | 16 ++++++++-------- + 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/warnquota.c b/warnquota.c -index 0d911e4..2c8e084 100644 +index 2882fee..48d79c0 100644 --- a/warnquota.c +++ b/warnquota.c -@@ -837,7 +837,7 @@ cc_parse_err: +@@ -883,7 +883,7 @@ cc_parse_err: } #ifdef USE_LDAP_MAIL_LOOKUP else if (!strcmp(var, "LDAP_MAIL")) { @@ -30,33 +31,36 @@ index 0d911e4..2c8e084 100644 else config->use_ldap_mail = 0; diff --git a/warnquota.conf b/warnquota.conf -index b06f81f..7e00947 100644 +index 5bbd0ab..366c3e0 100644 --- a/warnquota.conf +++ b/warnquota.conf -@@ -4,17 +4,16 @@ - # and even blank lines +@@ -19,20 +19,20 @@ FAIL = "configure /etc/warnquota.conf before running warnquota" + # + # command used for sending mails + # +-MAIL_CMD = "/usr/lib/sendmail -t" ++MAIL_CMD = "/usr/sbin/sendmail -t" - # values can be quoted: --#MAIL_CMD = "/usr/my/sendmail/instead/sendmail -t" --MAIL_CMD = "/bin/echo" --FROM = "bas@example.com" -+MAIL_CMD = "/usr/sbin/sendmail -t" -+FROM = "root@example.com" - # but they don't have to be: --SUBJECT = Hey, user, clean up your account! --CC_TO = "sysadm@example.com" -+SUBJECT = NOTE: You are exceeding your allocated disk space limits + # + # Standard mail fields +-FROM = "root@localhost" +-SUBJECT = "Your account quota has exceeded!" ++FROM = "root@example.com" ++SUBJECT = "You are exceeding your allocated disk space limits" + # Note that if LDAP is configured, the name in CC_TO gets looked up in LDAP + # to obtain email address similarly to email recipient address. +-CC_TO = "root@localhost" +CC_TO = "root@example.com" # If you set this variable CC will be used only when user has less than # specified grace time left (examples of possible times: 5 seconds, 1 minute, # 12 hours, 5 days) # CC_BEFORE = 2 days --SUPPORT = "support@example.com" +-SUPPORT = "root@localhost" +SUPPORT = "root@example.com" - PHONE = "(123) 456-1111 or (222) 333-4444" + PHONE = "123 456 789" # Text in the beginning of the mail (if not specified, default text is used) # This way text can be split to more lines -@@ -22,11 +21,11 @@ PHONE = "(123) 456-1111 or (222) 333-4444" +@@ -40,11 +40,11 @@ PHONE = "123 456 789" # The expressions %i, %h, %d, and %% are substituted for user/group name, # host name, domain name, and '%' respectively. For backward compatibility # %s behaves as %i but is deprecated. @@ -72,5 +76,5 @@ index b06f81f..7e00947 100644 GROUP_MESSAGE = Hello,|\ your group %i is using too much disk space at %h.|\ -- -2.13.5 +2.25.4 diff --git a/quota.spec b/quota.spec index a290b11..4e7c581 100644 --- a/quota.spec +++ b/quota.spec @@ -1,24 +1,23 @@ -# Scan ext file systems directly to increase performace of a quota +# Scan ext file systems directly to increase the performace of a quota # initialization and check %bcond_without quota_enables_extdirect # Use netlink to monitor quota usage and warn interactive users %bcond_without quota_enables_netlink -# Enable getting quotas over remotely +# Enable getting quotas remotely over network %bcond_without quota_enables_rpc -# Allow setting quota remotely +# Allow setting quota remotely over network %bcond_without quota_enables_rpcsetquota -# Disable TCP Wrappers guard in RPC quota daemon +# Disable TCP Wrappers guard in the RPC quota daemon %bcond_with quota_enables_tcpwrappers Name: quota Epoch: 1 -Version: 4.05 -Release: 17%{?dist} +Version: 4.06 +Release: 1%{?dist} Summary: System administration tools for monitoring users' disk usage # quota_nld.c, quotaio_xfs.h: GPLv2 # bylabel.c copied from util-linux: GPLv2+ -# doc/quotas.ms, edquota.c: BSD -# COPYING: GPLv2 text and license declaration +# COPYING: GPLv2 text and a license declaration ## Only in quota-rpc binary package # rquota_server.c: GPLv2+ ## Only in quota-rpc and quota-nls binary packages @@ -49,79 +48,17 @@ Summary: System administration tools for monitoring users' disk usage # Makefile.in: FSFULLR # missing: GPLv2+ with exception # mkinstalldirs: Public Domain -License: BSD and GPLv2 and GPLv2+ -URL: http://sourceforge.net/projects/linuxquota/ -Source0: http://downloads.sourceforge.net/linuxquota/%{name}-%{version}.tar.gz -Source1: quota_nld.service -Source2: quota_nld.sysconfig -Source3: rpc-rquotad.service -Source4: rpc-rquotad.sysconfig -# Not accepted changes (378a64006bb1e818e84a1c77808563b802b028fa) -Patch0: quota-4.04-warnquota-configuration-tunes.patch -Patch1: quota-4.03-Validate-upper-bound-of-RPC-port.patch -# Fix modifying CFLAGS and LDFLAGS by pkgconfig, in upstream after 4.05 -Patch2: quota-4.05-Revert-configure.ac-fix-pkg_check_modules-calls.patch -# 1/6 Report an error if an RPC fails on an explicitly requested file system, -# , in upstream after 4.05 -Patch3: quota-4.05-Make-messages-about-failures-for-NFS-consistent-with.patch -# 2/6 -Patch4: quota-4.05-quotaops-Do-not-return-partial-list-from-getprivs.patch -# 3/6 -Patch5: quota-4.05-quotaops-Do-not-leak-dquot-structures-on-failure.patch -# 4/6 -Patch6: quota-4.05-setquota-Report-failure-to-obtain-quota-information.patch -# 5/6 -Patch7: quota-4.05-rpc-Clarify-error-message-when-cannot-connect-to-rpc.patch -# 6/6 -Patch8: quota-4.05-quotaops-Make-error-string-translatable.patch -# Fix Free Software Foundation's postal address, -# , in upstream after 4.05 -Patch9: quota-4.05-COPYING-Update-mailing-address.patch -# Move quota_nld.pid file to /run, -# , in upstream after 4.05 -Patch10: quota-4.05-Make-a-directory-for-quota_nld-PID-file-configurable.patch -# Optimize out useless checking of file systems with hidden quota files, -# in upstream after 4.05 -Patch11: quota-4.05-quotacheck-Skip-checking-of-filesystems-with-hidded-.patch -# Fix warnquota --help output, in upstream after 4.05 -Patch12: quota-4.05-warnquota-Fix-help-text.patch -# Fix checking for the LDAP failures in the warnquota tool, -# in upstream after 4.05 -Patch13: quota-4.05-warnquota-Properly-detect-LDAP-errors.patch -# 1/2 Report detailed LDAP failures, in upstream after 4.05 -Patch14: quota-4.05-warnquota-Print-also-additional-error-info-for-LDAP-.patch -# 2/2 Report detailed LDAP failures, in upstream after 4.05, -# -Patch15: quota-4.05-warnquota-Free-LDAP-error-message.patch -# Document CC_TO in warquota.conf is looked up with LDAP, -# in upstream after 4.05 -Patch16: quota-4.05-warnquota-Clarify-that-CC_TO-gets-resolved-through-L.patch -# Initialize all members of a configparams structure in warnquota, -# in upstream after 4.05, -Patch17: quota-4.05-warnquota-Initialize-all-members-of-a-configparams-s.patch -# Fix ignoring disabled quotas, bug #1805110, in upstream after 4.05, -# -Patch18: quota-4.05-Fix-ignoring-disabled-quotas.patch -# Pass quota type for Q_XFS_GETQSTAT, in upstream after 4.05 -Patch19: quota-4.05-quota-tools-pass-quota-type-to-QCMD-for-Q_XFS_GETQST.patch -# 1/2 Support setting individual grace times for XFS, in upstream after 4.05 -Patch20: quota-4.05-quota-tools-Set-FS_DQ_TIMER_MASK-for-individual-xfs-.patch -# 2/2 Support setting individual grace times for XFS, in upstream after 4.05 -Patch21: quota-4.05-Fix-limits-setting-on-XFS-filesystem.patch -# 1/2 Support grace period expirations past 2038 year for XFS, -# in upstream after 4.05 -Patch22: quota-4.05-Support-grace-period-expirations-past-y2038-for-XFS.patch -# 2/2 Support grace period expirations past 2038 year for XFS, -# in upstream after 4.05 -Patch23: quota-4.05-Handle-grace-time-overflows-for-XFS-quotas.patch -# Add a synopsis for a project quota option in the quota tool, -# in upstream after 4.05 -Patch24: quota-4.05-quota-Add-synopsis-for-project-quota.patch -# Add a --filesystem option to the quota tool, in upstream after 4.05 -Patch25: quota-4.05-quota-Add-filesystem-option.patch -# Complain that ext4 external quota files are deprecated, -# in upstream after 4.05 -Patch26: quota-4.05-quotacheck-quotaon-Suggest-using-quota-feature-for-e.patch +License: GPLv2 and GPLv2+ +URL: http://sourceforge.net/projects/linuxquota/ +Source0: http://downloads.sourceforge.net/linuxquota/%{name}-%{version}.tar.gz +Source1: quota_nld.service +Source2: quota_nld.sysconfig +Source3: rpc-rquotad.service +Source4: rpc-rquotad.sysconfig +# Not accepted changes (378a64006bb1e818e84a1c77808563b802b028fa), bug #680919 +Patch0: quota-4.06-warnquota-configuration-tunes.patch +# Fix parsing a TCP port number +Patch1: quota-4.03-Validate-upper-bound-of-RPC-port.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: bash @@ -207,7 +144,7 @@ via cron(8). %package nls Summary: Gettext catalogs for disk quota tools -License: BSD and LGPLv2+ and GPLv2 and GPLv2+ +License: LGPLv2+ and GPLv2 and GPLv2+ BuildArch: noarch %description nls @@ -244,31 +181,6 @@ Linux/UNIX environment. %setup -q %patch0 -p1 %patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 -%patch13 -p1 -%patch14 -p1 -%patch15 -p1 -%patch16 -p1 -%patch17 -p1 -%patch18 -p1 -%patch19 -p1 -%patch20 -p1 -%patch21 -p1 -%patch22 -p1 -%patch23 -p1 -%patch24 -p1 -%patch25 -p1 -%patch26 -p1 # Regenerate build scripts autoreconf -f -i @@ -418,6 +330,9 @@ make check %changelog +* Tue Nov 10 2020 Petr Pisar - 1:4.06-1 +- 4.06 bump + * Fri Nov 06 2020 Petr Pisar - 1:4.05-17 - Support grace period expirations past 2038 year for XFS - Add a synopsis for a project quota option in the quota tool diff --git a/sources b/sources index ed8f628..a969eab 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (quota-4.05.tar.gz) = a13ca93fb6fad032cb032874dda2f5d792e619b41e89b481e6aaa4f06ac5774e2728b09dd625addfbe22efccb1d85892b093736084c72f75675a60df168b92f2 +SHA512 (quota-4.06.tar.gz) = cece46b8e3a82e8afcf8bfc9f6b310ec91afe034102cebc031bc7d7e04287fdbffb21ab1d3e6e1825175cffa4bad0a4ecbefec0efee028d961b14ac626d5c871