diff --git a/.gitignore b/.gitignore index 1eaea8e..801481b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ quota-3.17.tar.gz /quota-4.00-pre1.tar.gz +/quota-4.00.tar.gz diff --git a/quota-3.16-helpoption.patch b/quota-3.16-helpoption.patch deleted file mode 100644 index b6e948a..0000000 --- a/quota-3.16-helpoption.patch +++ /dev/null @@ -1,58 +0,0 @@ -diff -urNp quota-tools-orig/edquota.c quota-tools/edquota.c ---- quota-tools-orig/edquota.c 2008-08-05 13:37:34.000000000 +0200 -+++ quota-tools/edquota.c 2008-08-05 13:46:42.000000000 +0200 -@@ -130,9 +130,9 @@ int parse_options(int argc, char **argv) - - quotatype = USRQUOTA; - #if defined(RPC_SETQUOTA) -- while ((ret = getopt_long(argc, argv, "ugrmntTVp:F:f:", long_opts, NULL)) != -1) { -+ while ((ret = getopt_long(argc, argv, "ughrmntTVp:F:f:", long_opts, NULL)) != -1) { - #else -- while ((ret = getopt_long(argc, argv, "ugtTVp:F:f:", long_opts, NULL)) != -1) { -+ while ((ret = getopt_long(argc, argv, "ughtTVp:F:f:", long_opts, NULL)) != -1) { - #endif - switch (ret) { - case 'p': -@@ -172,6 +172,7 @@ int parse_options(int argc, char **argv) - case 'V': - version(); - exit(0); -+ case 'h': - default: - usage(); - } -diff -urNp quota-tools-orig/quota.c quota-tools/quota.c ---- quota-tools-orig/quota.c 2008-08-05 13:37:34.000000000 +0200 -+++ quota-tools/quota.c 2008-08-05 13:41:45.000000000 +0200 -@@ -270,7 +270,7 @@ int main(int argc, char **argv) - gettexton(); - progname = basename(argv[0]); - -- while ((ret = getopt_long(argc, argv, "guqvsVliQF:wfApm", long_opts, NULL)) != -1) { -+ while ((ret = getopt_long(argc, argv, "ghuqvsVliQF:wfApm", long_opts, NULL)) != -1) { - switch (ret) { - case 'g': - flags |= FL_GROUP; -@@ -321,6 +321,7 @@ int main(int argc, char **argv) - case 'V': - version(); - exit(0); -+ case 'h': - default: - usage(); - } -diff -urNp quota-tools-orig/setquota.c quota-tools/setquota.c ---- quota-tools-orig/setquota.c 2008-08-05 13:37:34.000000000 +0200 -+++ quota-tools/setquota.c 2008-08-05 13:45:48.000000000 +0200 -@@ -107,9 +107,9 @@ static void parse_options(int argcnt, ch - char *protoname = NULL; - - #ifdef RPC_SETQUOTA -- char *opts = "gp:urmVF:taTbc"; -+ char *opts = "ghp:urmVF:taTbc"; - #else -- char *opts = "gp:uVF:taTbc"; -+ char *opts = "ghp:uVF:taTbc"; - #endif - struct option long_opts[] = { - { "user", 0, NULL, 'u' }, diff --git a/quota-3.16-quotaoffhelp.patch b/quota-3.16-quotaoffhelp.patch deleted file mode 100644 index 53ebb51..0000000 --- a/quota-3.16-quotaoffhelp.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff -urNp quota-tools-orig/quotaon.c quota-tools/quotaon.c ---- quota-tools-orig/quotaon.c 2008-03-13 15:49:33.000000000 +0100 -+++ quota-tools/quotaon.c 2008-11-14 13:05:53.000000000 +0100 -@@ -66,7 +66,7 @@ static void usage(void) - { - errstr(_("Usage:\n\t%s [-guvp] [-F quotaformat] [-x state] -a\n\ - \t%s [-guvp] [-F quotaformat] [-x state] filesys ...\n\n\ ---a, --all turn quotas on for all filesystems\n\ -+-a, --all turn quotas %s for all filesystems\n\ - -f, --off turn quotas off\n\ - -u, --user operate on user quotas\n\ - -g, --group operate on group quotas\n\ -@@ -75,7 +75,8 @@ static void usage(void) - -F, --format=formatname operate on specific quota format\n\ - -v, --verbose print more messages\n\ - -h, --help display this help text and exit\n\ ---V, --version display version information and exit\n"), progname, progname); -+-V, --version display version information and exit\n"), -+ progname, progname, strcmp (progname, "quotaon")?_("off"):_("on")); - exit(1); - } - diff --git a/quota-4.00_pre1-Do-not-use-real-domains-in-warnquota-example.patch b/quota-4.00-Do-not-use-real-domains-in-warnquota-example.patch similarity index 91% rename from quota-4.00_pre1-Do-not-use-real-domains-in-warnquota-example.patch rename to quota-4.00-Do-not-use-real-domains-in-warnquota-example.patch index 5c95400..53c3a10 100644 --- a/quota-4.00_pre1-Do-not-use-real-domains-in-warnquota-example.patch +++ b/quota-4.00-Do-not-use-real-domains-in-warnquota-example.patch @@ -1,6 +1,6 @@ -From 85cb5b094c8e6a352df4c5bdbbfd6af4c47a7ae7 Mon Sep 17 00:00:00 2001 +From c00ee2d477c3f464d81c6ec597b409829aa2b5f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Mon, 28 Feb 2011 14:16:59 +0100 +Date: Tue, 23 Aug 2011 14:50:30 +0200 Subject: [PATCH] Do not use real domains in warnquota example Providing private domain names in default warnquota.conf can tend @@ -10,14 +10,14 @@ some users to reply. Owners of that domain could get mad. 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/warnquota.conf b/warnquota.conf -index 153b3f2..e70eedf 100644 +index bc95e2c..e70eedf 100644 --- a/warnquota.conf +++ b/warnquota.conf @@ -5,15 +5,15 @@ # values can be quoted: MAIL_CMD = "/usr/sbin/sendmail -t" --FROM = +-FROM = +FROM = root@example.com # but they don't have to be: SUBJECT = NOTE: You are exceeding your allocated disk space limits @@ -42,5 +42,5 @@ index 153b3f2..e70eedf 100644 GROUP_MESSAGE = Hello, a group '%i' you're member of use too much space at %h.|\ I chose you to do the cleanup.|Delete group files on the following filesystems:| -- -1.7.4 +1.7.6 diff --git a/quota-3.06-no-stripping.patch b/quota-4.00-no-stripping.patch similarity index 65% rename from quota-3.06-no-stripping.patch rename to quota-4.00-no-stripping.patch index 68d6319..6228f22 100644 --- a/quota-3.06-no-stripping.patch +++ b/quota-4.00-no-stripping.patch @@ -1,6 +1,17 @@ ---- quota-tools/Makefile.in.orig 2002-07-17 17:07:14.000000000 -0400 -+++ quota-tools/Makefile.in 2002-07-17 18:08:39.000000000 -0400 -@@ -23,8 +23,8 @@ SUPER_OWNER = root +From e7747ee537e604102606caf5af9f26d7eee1ede9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Tue, 23 Aug 2011 14:10:46 +0200 +Subject: [PATCH] Do not strip binaries chmod them to 0755 + +--- + Makefile.in | 14 +++++++------- + 1 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index 0b343a3..0f10472 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -17,8 +17,8 @@ SUPER_OWNER = root BIN_OWNER = bin BIN_GROUP = bin DEF_SUID_MODE = 4511 @@ -11,7 +22,7 @@ DEF_MAN_MODE = 444 DEF_CONF_MODE = 644 RPCGEN = rpcgen -@@ -87,10 +87,10 @@ install: all @INSTMO@ +@@ -78,10 +78,10 @@ install: all @INSTMO@ -mkdir -p $(ROOTDIR)$(sbindir) -mkdir -p $(ROOTDIR)$(bindir) -mkdir -p $(ROOTDIR)$(root_sbindir) @@ -24,13 +35,13 @@ edquota repquota warnquota quotastats setquota quot xqmstats \ convertquota $(ROOTDIR)$(sbindir) -mkdir -p $(ROOTDIR)$(sysconfdir) -@@ -99,10 +99,10 @@ +@@ -94,10 +94,10 @@ install: all @INSTMO@ -mkdir -p $(ROOTDIR)$(mandir)/man8 -$(INSTALL) -m 755 -d $(ROOTDIR)$(includedir)/rpcsvc -$(INSTALL) -m 644 rquota.h rquota.x $(ROOTDIR)$(includedir)/rpcsvc -- -$(INSTALL) $(STRIP) -m $(DEF_SBIN_MODE) quota $(ROOTDIR)$(bindir) +- -$(INSTALL) $(STRIP) -m $(DEF_SBIN_MODE) quota quotasync $(ROOTDIR)$(bindir) - -$(INSTALL) $(STRIP) -m $(DEF_SBIN_MODE) rpc.rquotad $(ROOTDIR)$(sbindir) -+ -$(INSTALL) -m $(DEF_SBIN_MODE) quota $(ROOTDIR)$(bindir) ++ -$(INSTALL) -m $(DEF_SBIN_MODE) quota quotasync $(ROOTDIR)$(bindir) + -$(INSTALL) -m $(DEF_SBIN_MODE) rpc.rquotad $(ROOTDIR)$(sbindir) ifneq ($(NETLINKLIBS),) - -$(INSTALL) $(STRIP) -m $(DEF_SBIN_MODE) quota_nld $(ROOTDIR)$(sbindir) @@ -38,3 +49,6 @@ endif -$(INSTALL) -m $(DEF_MAN_MODE) *.1 $(ROOTDIR)$(mandir)/man1 -$(INSTALL) -m $(DEF_MAN_MODE) *.2 $(ROOTDIR)$(mandir)/man2 +-- +1.7.6 + diff --git a/quota-3.06-warnquota.patch b/quota-4.00-warnquota.patch similarity index 60% rename from quota-3.06-warnquota.patch rename to quota-4.00-warnquota.patch index e93d521..112bd6d 100644 --- a/quota-3.06-warnquota.patch +++ b/quota-4.00-warnquota.patch @@ -1,28 +1,57 @@ ---- quota-tools/warnquota.conf.orig 2005-07-19 11:51:07.000000000 -0400 -+++ quota-tools/warnquota.conf 2007-02-15 14:58:38.000000000 -0500 +From aaec5ef140322b9b4220ce49be3b2a89754f736c 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 + +Rest of changes (378a64006bb1e818e84a1c77808563b802b028fa) not +accepted by upstream. + +Some of the lines have been superseeded by other commits probably. +--- + warnquota.c | 2 +- + warnquota.conf | 16 ++++++++-------- + 2 files changed, 9 insertions(+), 9 deletions(-) + +diff --git a/warnquota.c b/warnquota.c +index 2ca286f..3b78647 100644 +--- a/warnquota.c ++++ b/warnquota.c +@@ -806,7 +806,7 @@ static int readconfigfile(const char *filename, struct configparams *config) + verify_format(config->group_signature, "GROUP_SIGNATURE"); + } + else if (!strcmp(var, "LDAP_MAIL")) { +- if(strcasecmp(value, "true") == 0) ++ if(strncasecmp(value, "true", 4) == 0) + config->use_ldap_mail = 1; + else + config->use_ldap_mail = 0; +diff --git a/warnquota.conf b/warnquota.conf +index 8801a88..bc95e2c 100644 +--- a/warnquota.conf ++++ b/warnquota.conf @@ -4,16 +4,16 @@ # and even blank lines # values can be quoted: -MAIL_CMD = "/usr/my/sendmail/instead/sendmail -t" --FROM = "bas@localhost" +-FROM = "bas@example.com" +MAIL_CMD = "/usr/sbin/sendmail -t" -+FROM = ++FROM = # but they don't have to be: -SUBJECT = Hey, user, clean up your account! --CC_TO = "sysadm@localhost" +-CC_TO = "sysadm@example.com" +SUBJECT = NOTE: You are exceeding your allocated disk space limits +CC_TO = "root@localhost" # 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@myhost.com" +-SUPPORT = "support@example.com" +SUPPORT = "root@myhost.com" PHONE = "(123) 456-1111 or (222) 333-4444" # Text in the beginning of the mail (if not specified, default text is used) # This way text can be split to more lines -@@ -21,11 +21,11 @@ PHONE = "(123) 456-1111 or (222) 333-4 +@@ -21,11 +21,11 @@ PHONE = "(123) 456-1111 or (222) 333-4444" # 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. @@ -37,29 +66,6 @@ # Following text is used for mails about group exceeding quotas GROUP_MESSAGE = Hello, a group '%i' you're member of use too much space at %h.|\ I chose you to do the cleanup.|Delete group files on the following filesystems:| -@@ -52,10 +52,10 @@ GROUP_SIGNATURE = See you!| Your admin - # if the attribute isn't found - # if binddn and bindpw are blank or left out, an anonymous bind is used - # --# LDAP_MAIL = false # or false if you don't want to use it --# If you have at least LDAP 2.3 installed, you can use LDAP_URI -+# LDAP_MAIL = false # or true if you want to use it -+# If you have at least LDAP 2.3 installed, you should use LDAP_URI - # LDAP_URI = ldaps://my.server:389 --# Otherwise you can specify LDAP_HOST and LDAP_PORT -+# Otherwise you should specify LDAP_HOST and LDAP_PORT - # LDAP_HOST = ldap - # LDAP_PORT = 389 - # LDAP_BINDDN = uid=ReadOnlyUser,o=YourOrg -diff -urNp quota-tools-orig/warnquota.c quota-tools/warnquota.c ---- quota-tools-orig/warnquota.c 2008-10-13 19:29:18.000000000 +0200 -+++ quota-tools/warnquota.c 2009-03-13 14:26:33.000000000 +0100 -@@ -806,7 +806,7 @@ static int readconfigfile(const char *fi - verify_format(config->group_signature, "GROUP_SIGNATURE"); - } - else if (!strcmp(var, "LDAP_MAIL")) { -- if(strcasecmp(value, "true") == 0) -+ if(strncasecmp(value, "true", 4) == 0) - config->use_ldap_mail = 1; - else - config->use_ldap_mail = 0; +-- +1.7.6 + diff --git a/quota-4.00_pre1-Add-always-resolve-to-quota.1-manpage.patch b/quota-4.00_pre1-Add-always-resolve-to-quota.1-manpage.patch deleted file mode 100644 index ba37909..0000000 --- a/quota-4.00_pre1-Add-always-resolve-to-quota.1-manpage.patch +++ /dev/null @@ -1,28 +0,0 @@ -From c7cfb6e73bb8e73e6dcf857b5ecf374679a778ab Mon Sep 17 00:00:00 2001 -From: Jan Kara -Date: Tue, 14 Sep 2010 20:48:06 +0200 -Subject: [PATCH 1/6] Add --always-resolve to quota.1 manpage - -Signed-off-by: Jan Kara ---- - quota.1 | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -diff --git a/quota.1 b/quota.1 -index d562f12..11865af 100644 ---- a/quota.1 -+++ b/quota.1 -@@ -96,6 +96,10 @@ option will make - .BR quota (1) - try to choose units for showing limits, used space and used inodes. - .TP -+.B --always-resolve -+Always try to translate user / group name to uid / gid even if the name -+is composed of digits only. -+.TP - .B -p, --raw-grace - When user is in grace period, report time in seconds since epoch when his grace - time runs out (or has run out). Field is '0' when no grace time is in effect. --- -1.7.3.4 - diff --git a/quota-4.00_pre1-Add-quotasync-tool.patch b/quota-4.00_pre1-Add-quotasync-tool.patch deleted file mode 100644 index e2b595d..0000000 --- a/quota-4.00_pre1-Add-quotasync-tool.patch +++ /dev/null @@ -1,182 +0,0 @@ -From 1be8727ae92a78a5e7fde5ecc6c59740ca2eabe4 Mon Sep 17 00:00:00 2001 -From: Abhijith Das -Date: Tue, 1 Feb 2011 17:16:12 +0100 -Subject: [PATCH] Add quotasync tool - -Add tool allowing to sync quotas for some / all filesystems. - -Signed-off-by: Jan Kara - -Petr Pisar: Remove STRIP from Makefile.in ---- - Makefile.in | 8 ++- - quotasync.c | 127 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 132 insertions(+), 3 deletions(-) - create mode 100644 quotasync.c - -diff --git a/Makefile.in b/Makefile.in -index aeaa79f..0b343a3 100644 ---- a/Makefile.in -+++ b/Makefile.in -@@ -1,5 +1,5 @@ --PROGS = quotacheck quotaon quota quot repquota warnquota quotastats xqmstats edquota setquota convertquota rpc.rquotad @QUOTA_NETLINK_PROG@ --SOURCES = bylabel.c common.c convertquota.c edquota.c pot.c quot.c quota.c quotacheck.c quotacheck_v1.c quotacheck_v2.c quotaio.c quotaio_rpc.c quotaio_v1.c quotaio_v2.c quotaio_tree.c quotaio_xfs.c quotaio_meta.c quotaio_generic.c quotaon.c quotaon_xfs.c quotaops.c quotastats.c quotasys.c repquota.c rquota_client.c rquota_server.c rquota_svc.c setquota.c warnquota.c xqmstats.c svc_socket.c -+PROGS = quotacheck quotaon quota quot repquota warnquota quotastats xqmstats edquota setquota convertquota rpc.rquotad quotasync @QUOTA_NETLINK_PROG@ -+SOURCES = bylabel.c common.c convertquota.c edquota.c pot.c quot.c quota.c quotacheck.c quotacheck_v1.c quotacheck_v2.c quotaio.c quotaio_rpc.c quotaio_v1.c quotaio_v2.c quotaio_tree.c quotaio_xfs.c quotaio_meta.c quotaio_generic.c quotaon.c quotaon_xfs.c quotaops.c quotastats.c quotasys.c repquota.c rquota_client.c rquota_server.c rquota_svc.c setquota.c warnquota.c xqmstats.c svc_socket.c quotasync.c - CFLAGS = @CFLAGS@ -D_GNU_SOURCE -Wall -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 - CPPFLAGS = @CPPFLAGS@ - EXT2LIBS = @EXT2LIBS@ -@@ -94,7 +94,7 @@ install: all @INSTMO@ - -mkdir -p $(ROOTDIR)$(mandir)/man8 - -$(INSTALL) -m 755 -d $(ROOTDIR)$(includedir)/rpcsvc - -$(INSTALL) -m 644 rquota.h rquota.x $(ROOTDIR)$(includedir)/rpcsvc -- -$(INSTALL) -m $(DEF_SBIN_MODE) quota $(ROOTDIR)$(bindir) -+ -$(INSTALL) -m $(DEF_SBIN_MODE) quota quotasync $(ROOTDIR)$(bindir) - -$(INSTALL) -m $(DEF_SBIN_MODE) rpc.rquotad $(ROOTDIR)$(sbindir) - ifneq ($(NETLINKLIBS),) - -$(INSTALL) -m $(DEF_SBIN_MODE) quota_nld $(ROOTDIR)$(sbindir) -@@ -111,6 +111,8 @@ quotacheck: quotacheck.o quotacheck_v1.o quotacheck_v2.o quotaops.o $(LIBOBJS) - - quota: quota.o quotaops.o $(LIBOBJS) - -+quotasync: quotasync.o $(LIBOBJS) -+ - quot: quot.o $(LIBOBJS) - - repquota: repquota.o $(LIBOBJS) -diff --git a/quotasync.c b/quotasync.c -new file mode 100644 -index 0000000..0ce44c9 ---- /dev/null -+++ b/quotasync.c -@@ -0,0 +1,127 @@ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "pot.h" -+#include "common.h" -+#include "quotasys.h" -+#include "quotaio.h" -+ -+#define FL_USER 1 /* sync user quotas */ -+#define FL_GROUP 2 /* sync group quotas */ -+#define FL_ALL 4 /* sync quotas on all filesystems */ -+ -+int flags, fmt = -1; -+char **mnt; -+int mntcnt; -+char *progname; -+ -+static void usage(void) -+{ -+ errstr(_("Utility for syncing quotas.\nUsage:\n%s [-ug] -a | mntpoint...\n\n"), progname); -+ fprintf(stderr, _("Bugs to %s\n"), MY_EMAIL); -+ exit(1); -+} -+ -+static void parse_options(int argcnt, char **argstr) -+{ -+ int ret; -+ struct option long_opts[] = { -+ { "user", 0, NULL, 'u' }, -+ { "group", 0, NULL, 'g' }, -+ { "all", 0, NULL, 'a' }, -+ { "version", 0, NULL, 'V' }, -+ { "help", 0, NULL, 'h' }, -+ { NULL, 0, NULL, 0 } -+ }; -+ -+ while ((ret = getopt_long(argcnt, argstr, "ahugV", long_opts, NULL)) != -1) { -+ switch (ret) { -+ case '?': -+ case 'h': -+ usage(); -+ case 'V': -+ version(); -+ exit(0); -+ case 'u': -+ flags |= FL_USER; -+ break; -+ case 'g': -+ flags |= FL_GROUP; -+ break; -+ case 'a': -+ flags |= FL_ALL; -+ break; -+ } -+ } -+ -+ if ((flags & FL_ALL && optind != argcnt) || -+ (!(flags & FL_ALL) && optind == argcnt)) { -+ fputs(_("Bad number of arguments.\n"), stderr); -+ usage(); -+ } -+ if (!(flags & FL_ALL)) { -+ mnt = argstr + optind; -+ mntcnt = argcnt - optind; -+ } -+ if (!(flags & (FL_USER | FL_GROUP))) -+ flags |= FL_USER; -+} -+ -+static int sync_one(int type, char *dev) -+{ -+ int qcmd = QCMD(Q_SYNC, type); -+ -+ return quotactl(qcmd, dev, 0, NULL); -+} -+ -+int syncquotas(int type) -+{ -+ struct quota_handle **handles, *h; -+ int i, ret = 0; -+ -+ if (flags & FL_ALL) { -+ if (sync_one(type, NULL) < 0) -+ errstr(_("%s quota sync failed: %s\n"), type2name(type), -+ strerror(errno)); -+ return -1; -+ } -+ -+ handles = create_handle_list(mntcnt, mnt, type, fmt, -+ IOI_READONLY, MS_LOCALONLY | MS_NO_AUTOFS); -+ -+ for (i = 0; handles[i]; i++) { -+ h = handles[i]; -+ if (sync_one(type, h->qh_quotadev)) { -+ errstr(_("%s quota sync failed for %s: %s\n"), -+ type2name(type), h->qh_quotadev, strerror(errno)); -+ ret = -1; -+ } -+ } -+ dispose_handle_list(handles); -+ -+ return ret; -+} -+ -+int main(int argc, char **argv) -+{ -+ int ret = 0; -+ -+ gettexton(); -+ progname = basename(argv[0]); -+ -+ parse_options(argc, argv); -+ init_kernel_interface(); -+ -+ if (flags & FL_USER) -+ if (syncquotas(USRQUOTA)) -+ ret = 1; -+ if (flags & FL_GROUP) -+ if (syncquotas(GRPQUOTA)) -+ ret = 1; -+ return ret; -+} --- -1.7.4 - diff --git a/quota-4.00_pre1-Added-reference-to-setquota-to-quota-1-manpage.patch b/quota-4.00_pre1-Added-reference-to-setquota-to-quota-1-manpage.patch deleted file mode 100644 index 16a64b6..0000000 --- a/quota-4.00_pre1-Added-reference-to-setquota-to-quota-1-manpage.patch +++ /dev/null @@ -1,35 +0,0 @@ -From f323a983893484104a3a981134cd8c3c75b9dd4d Mon Sep 17 00:00:00 2001 -From: jkar8572 -Date: Thu, 2 Sep 2010 15:00:14 +0000 -Subject: [PATCH] Added reference to setquota to quota(1) manpage. Fixed description of -m option - of edquota (Jan Kara) - -Petr Pisar: Changelog entry removed. - -diff --git a/edquota.8 b/edquota.8 -index 7ade64a..d31d994 100644 ---- a/edquota.8 -+++ b/edquota.8 -@@ -100,7 +100,7 @@ Currently, pathnames of NFSv4 mountpoints are sent without leading slash in the - .BR rpc.rquotad - uses this to recognize NFSv4 mounts and properly prepend pseudoroot of NFS filesystem - to the path. If you specify this option, --.BR setquota -+.BR edquota - will always send paths with a trailing slash. This can be useful for legacy reasons but - be aware that quota over RPC will stop working if you are using new - .BR rpc.rquotad . -diff --git a/quota.1 b/quota.1 -index 9d6a0a1..11f3da1 100644 ---- a/quota.1 -+++ b/quota.1 -@@ -190,4 +190,5 @@ default filesystems - .BR quotaon (8), - .BR quota_nld (8), - .BR repquota (8), --.BR warnquota (8) -+.BR warnquota (8), -+.BR setquota (8) --- -1.7.4 - diff --git a/quota-4.00_pre1-Check-whether-set-limits-fit-into-the-range-supporte.patch b/quota-4.00_pre1-Check-whether-set-limits-fit-into-the-range-supporte.patch deleted file mode 100644 index 9ba5c6a..0000000 --- a/quota-4.00_pre1-Check-whether-set-limits-fit-into-the-range-supporte.patch +++ /dev/null @@ -1,159 +0,0 @@ -From 8a4dc3612c6c170c05e5eef68dd3555baeb341c1 Mon Sep 17 00:00:00 2001 -From: Jan Kara -Date: Thu, 6 Jan 2011 21:15:46 +0100 -Subject: [PATCH 5/6] Check whether set limits fit into the range supported by quota format. - -Petr Pisar: Changelog update remove ---- - quotaio.c | 24 ++++++++++++++++++++++++ - quotaio.h | 8 ++++++++ - quotaio_v1.c | 8 ++++++++ - quotaio_v2.c | 23 ++++++++++++++++++++++- - -diff --git a/quotaio.c b/quotaio.c -index dbd7cc8..21881fc 100644 ---- a/quotaio.c -+++ b/quotaio.c -@@ -287,3 +287,27 @@ struct dquot *get_empty_dquot(void) - dquot->dq_id = -1; - return dquot; - } -+ -+/* -+ * Check whether values in current dquot can be stored on disk -+ */ -+int check_dquot_range(struct dquot *dquot) -+{ -+ struct util_dqinfo *info = &dquot->dq_h->qh_info; -+ -+ if (dquot->dq_dqb.dqb_bhardlimit > info->dqi_max_b_limit || -+ dquot->dq_dqb.dqb_bsoftlimit > info->dqi_max_b_limit || -+ dquot->dq_dqb.dqb_ihardlimit > info->dqi_max_i_limit || -+ dquot->dq_dqb.dqb_isoftlimit > info->dqi_max_i_limit) { -+ errstr(_("Trying to set quota limits out of range " -+ "supported by quota format on %s.\n"), dquot->dq_h->qh_quotadev); -+ return -1; -+ } -+ if (dquot->dq_dqb.dqb_curinodes > info->dqi_max_i_usage || -+ dquot->dq_dqb.dqb_curspace > info->dqi_max_b_usage) { -+ errstr(_("Trying to set quota usage out of range " -+ "supported by quota format on %s.\n"), dquot->dq_h->qh_quotadev); -+ return -1; -+ } -+ return 0; -+} -diff --git a/quotaio.h b/quotaio.h -index d797034..3cd33ba 100644 ---- a/quotaio.h -+++ b/quotaio.h -@@ -10,6 +10,7 @@ - #include - #include - #include -+#include - - #include "quota.h" - #include "mntopt.h" -@@ -69,6 +70,10 @@ struct quotafile_ops; - struct util_dqinfo { - time_t dqi_bgrace; /* Block grace time for given quotafile */ - time_t dqi_igrace; /* Inode grace time for given quotafile */ -+ uint64_t dqi_max_b_limit; /* Maximal block limit storable in current format */ -+ uint64_t dqi_max_i_limit; /* Maximal inode limit storable in current format */ -+ uint64_t dqi_max_b_usage; /* Maximal block usage storable in current format */ -+ uint64_t dqi_max_i_usage; /* Maximal inode usage storable in current format */ - union { - struct v2_mem_dqinfo v2_mdqi; - struct xfs_mem_dqinfo xfs_mdqi; -@@ -171,4 +176,7 @@ int end_io(struct quota_handle *h); - /* Get empty quota structure */ - struct dquot *get_empty_dquot(void); - -+/* Check whether values in current dquot can be stored on disk */ -+int check_dquot_range(struct dquot *dquot); -+ - #endif /* GUARD_QUOTAIO_H */ -diff --git a/quotaio_v1.c b/quotaio_v1.c -index 1533ffc..305bff2 100644 ---- a/quotaio_v1.c -+++ b/quotaio_v1.c -@@ -174,6 +174,10 @@ static int v1_init_io(struct quota_handle *h) - h->qh_info.dqi_bgrace = MAX_DQ_TIME; - if (!h->qh_info.dqi_igrace) - h->qh_info.dqi_igrace = MAX_IQ_TIME; -+ h->qh_info.dqi_max_b_limit = ~(uint32_t)0; -+ h->qh_info.dqi_max_i_limit = ~(uint32_t)0; -+ h->qh_info.dqi_max_b_usage = ((uint64_t)(~(uint32_t)0)) << V1_DQBLK_SIZE_BITS; -+ h->qh_info.dqi_max_i_usage = ~(uint32_t)0; - - return 0; - } -@@ -327,6 +331,10 @@ static int v1_commit_dquot(struct dquot *dquot, int flags) - } - } - else { -+ if (check_dquot_range(dquot) < 0) { -+ errno = ERANGE; -+ return -1; -+ } - v1_mem2diskdqblk(&ddqblk, &dquot->dq_dqb); - lseek(h->qh_fd, (long)V1_DQOFF(dquot->dq_id), SEEK_SET); - if (write(h->qh_fd, &ddqblk, sizeof(ddqblk)) != sizeof(ddqblk)) -diff --git a/quotaio_v2.c b/quotaio_v2.c -index 38440e7..2242c88 100644 ---- a/quotaio_v2.c -+++ b/quotaio_v2.c -@@ -307,9 +307,17 @@ static int v2_init_io(struct quota_handle *h) - if (__le32_to_cpu(header.dqh_version) == 0) { - h->qh_info.u.v2_mdqi.dqi_qtree.dqi_entry_size = sizeof(struct v2r0_disk_dqblk); - h->qh_info.u.v2_mdqi.dqi_qtree.dqi_ops = &v2r0_fmt_ops; -+ h->qh_info.dqi_max_b_limit = ~(uint32_t)0; -+ h->qh_info.dqi_max_i_limit = ~(uint32_t)0; -+ h->qh_info.dqi_max_b_usage = ~(uint64_t)0; -+ h->qh_info.dqi_max_i_usage = ~(uint32_t)0; - } else { - h->qh_info.u.v2_mdqi.dqi_qtree.dqi_entry_size = sizeof(struct v2r1_disk_dqblk); - h->qh_info.u.v2_mdqi.dqi_qtree.dqi_ops = &v2r1_fmt_ops; -+ h->qh_info.dqi_max_b_limit = ~(uint64_t)0; -+ h->qh_info.dqi_max_i_limit = ~(uint64_t)0; -+ h->qh_info.dqi_max_b_usage = ~(uint64_t)0; -+ h->qh_info.dqi_max_i_usage = ~(uint64_t)0; - } - } else { - /* We don't have the file open -> we don't need quota tree operations */ -@@ -351,9 +359,17 @@ static int v2_new_io(struct quota_handle *h) - if (version == 0) { - h->qh_info.u.v2_mdqi.dqi_qtree.dqi_entry_size = sizeof(struct v2r0_disk_dqblk); - h->qh_info.u.v2_mdqi.dqi_qtree.dqi_ops = &v2r0_fmt_ops; -+ h->qh_info.dqi_max_b_limit = ~(uint32_t)0; -+ h->qh_info.dqi_max_i_limit = ~(uint32_t)0; -+ h->qh_info.dqi_max_b_usage = ~(uint64_t)0; -+ h->qh_info.dqi_max_i_usage = ~(uint32_t)0; - } else if (version == 1) { - h->qh_info.u.v2_mdqi.dqi_qtree.dqi_entry_size = sizeof(struct v2r1_disk_dqblk); - h->qh_info.u.v2_mdqi.dqi_qtree.dqi_ops = &v2r1_fmt_ops; -+ h->qh_info.dqi_max_b_limit = ~(uint64_t)0; -+ h->qh_info.dqi_max_i_limit = ~(uint64_t)0; -+ h->qh_info.dqi_max_b_usage = ~(uint64_t)0; -+ h->qh_info.dqi_max_i_usage = ~(uint64_t)0; - } - v2_mem2diskdqinfo(&ddqinfo, &h->qh_info); - lseek(h->qh_fd, V2_DQINFOOFF, SEEK_SET); -@@ -477,8 +493,13 @@ static int v2_commit_dquot(struct dquot *dquot, int flags) - if (!b->dqb_curspace && !b->dqb_curinodes && !b->dqb_bsoftlimit && !b->dqb_isoftlimit - && !b->dqb_bhardlimit && !b->dqb_ihardlimit) - qtree_delete_dquot(dquot); -- else -+ else { -+ if (check_dquot_range(dquot) < 0) { -+ errno = ERANGE; -+ return -1; -+ } - qtree_write_dquot(dquot); -+ } - return 0; - } - --- -1.7.3.4 - diff --git a/quota-4.00_pre1-Correct-no-mixed-pathnames-documentation.patch b/quota-4.00_pre1-Correct-no-mixed-pathnames-documentation.patch deleted file mode 100644 index 9d7fb4f..0000000 --- a/quota-4.00_pre1-Correct-no-mixed-pathnames-documentation.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 2bbd79d4eb6b712f80364ddd9e3549de30529674 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Wed, 12 Jan 2011 16:30:53 +0100 -Subject: [PATCH] Correct --no-mixed-pathnames documentation - -This option controls a leading slash, not a trailing one. -The quota(1) page talks about quota, not about setquota. ---- - edquota.8 | 2 +- - quota.1 | 4 ++-- - setquota.8 | 2 +- - 3 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/edquota.8 b/edquota.8 -index 9b7ffd4..4b1406b 100644 ---- a/edquota.8 -+++ b/edquota.8 -@@ -101,7 +101,7 @@ Currently, pathnames of NFSv4 mountpoints are sent without leading slash in the - uses this to recognize NFSv4 mounts and properly prepend pseudoroot of NFS filesystem - to the path. If you specify this option, - .BR edquota --will always send paths with a trailing slash. This can be useful for legacy reasons but -+will always send paths with a leading slash. This can be useful for legacy reasons but - be aware that quota over RPC will stop working if you are using new - .BR rpc.rquotad . - .TP -diff --git a/quota.1 b/quota.1 -index 11865af..7a62764 100644 ---- a/quota.1 -+++ b/quota.1 -@@ -123,8 +123,8 @@ Currently, pathnames of NFSv4 mountpoints are sent without leading slash in the - .BR rpc.rquotad - uses this to recognize NFSv4 mounts and properly prepend pseudoroot of NFS filesystem - to the path. If you specify this option, --.BR setquota --will always send paths with a trailing slash. This can be useful for legacy reasons but -+.BR quota -+will always send paths with a leading slash. This can be useful for legacy reasons but - be aware that quota over RPC will stop working if you are using new - .BR rpc.rquotad . - .TP -diff --git a/setquota.8 b/setquota.8 -index c7fe408..472279d 100644 ---- a/setquota.8 -+++ b/setquota.8 -@@ -126,7 +126,7 @@ Currently, pathnames of NFSv4 mountpoints are sent without leading slash in the - uses this to recognize NFSv4 mounts and properly prepend pseudoroot of NFS filesystem - to the path. If you specify this option, - .BR setquota --will always send paths with a trailing slash. This can be useful for legacy reasons but -+will always send paths with a leading slash. This can be useful for legacy reasons but - be aware that quota over RPC will stop working if you are using new - .BR rpc.rquotad . - .TP --- -1.7.3.4 - diff --git a/quota-4.00_pre1-Document-always-resolve-at-edquota-and-setquota.patch b/quota-4.00_pre1-Document-always-resolve-at-edquota-and-setquota.patch deleted file mode 100644 index 05c7a48..0000000 --- a/quota-4.00_pre1-Document-always-resolve-at-edquota-and-setquota.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 615816942190923d911edf397334bdc170a1178d Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Mon, 10 Jan 2011 16:38:22 +0100 -Subject: [PATCH] Document --always-resolve at edquota and setquota - -This copy --always-resolve option description for quota(1) into -edquota(8) and setquota(8) manuals. ---- - edquota.8 | 4 ++++ - setquota.8 | 4 ++++ - 2 files changed, 8 insertions(+), 0 deletions(-) - -diff --git a/edquota.8 b/edquota.8 -index d31d994..9b7ffd4 100644 ---- a/edquota.8 -+++ b/edquota.8 -@@ -116,6 +116,10 @@ Duplicate the quotas of the prototypical user - specified for each user specified. This is the normal - mechanism used to initialize quotas for groups of users. - .TP -+.B --always-resolve -+Always try to translate user / group name to uid / gid even if the name -+is composed of digits only. -+.TP - .B -F, --format=\f2format-name\f1 - Edit quota for specified format (ie. don't perform format autodetection). - Possible format names are: -diff --git a/setquota.8 b/setquota.8 -index 624deec..c7fe408 100644 ---- a/setquota.8 -+++ b/setquota.8 -@@ -155,6 +155,10 @@ Use quota settings of user or group - .I protoname - to set the quota for the named user or group. - .TP -+.B --always-resolve -+Always try to translate user / group name to uid / gid even if the name -+is composed of digits only. -+.TP - .B -b, --batch - Read information to set from stdin (input format is - .I name block-softlimit block-hardlimit inode-softlimit inode-hardlimit --- -1.7.3.4 - diff --git a/quota-4.00_pre1-Explain-meaning-of-the-second-column-in-repquota-out.patch b/quota-4.00_pre1-Explain-meaning-of-the-second-column-in-repquota-out.patch deleted file mode 100644 index 705c29f..0000000 --- a/quota-4.00_pre1-Explain-meaning-of-the-second-column-in-repquota-out.patch +++ /dev/null @@ -1,48 +0,0 @@ -From fe76269491078b4ac862d3009a2e14c51884868a Mon Sep 17 00:00:00 2001 -From: Jan Kara -Date: Wed, 16 Feb 2011 18:33:32 +0100 -Subject: [PATCH 1/2] Explain meaning of the second column in repquota output - -Signed-off-by: Jan Kara ---- - repquota.8 | 17 ++++++++++++----- - 1 files changed, 12 insertions(+), 5 deletions(-) - -diff --git a/repquota.8 b/repquota.8 -index 7580f64..a71cf6b 100644 ---- a/repquota.8 -+++ b/repquota.8 -@@ -48,18 +48,25 @@ repquota \- summarize quotas for a filesystem - .B repquota - prints a summary of the disc usage and quotas for the specified file - systems. For each user the current number of files and amount of space --(in kilobytes) is printed, along with any quotas created with --.BR edquota (8). --As -+(in kilobytes) is printed, along with any quota limits set with -+.BR edquota (8) -+or -+.BR setquota (8). -+In the second column repquota prints two characters marking which limits are -+exceeded. If user is over his space softlimit or reaches his space hardlimit in -+case softlimit is unset, the first character is '+'. Otherwise the character -+printed is '-'. The second character denotes the state of inode usage -+analogously. -+ - .B repquota - has to translate ids of all users/groups to names (unless option - .B -n --was specified) it may take a while to -+was specified) so it may take a while to - print all the information. To make translating as fast as possible - .B repquota - tries to detect (by reading - .BR /etc/nsswitch.conf ) --whether entries are stored in standard plain text file or in database and either -+whether entries are stored in standard plain text file or in a database and either - translates chunks of 1024 names or each name individually. You can override this - autodetection by - .B -c --- -1.7.4 - diff --git a/quota-4.00_pre1-Fix-ddquot-buffer-leak.patch b/quota-4.00_pre1-Fix-ddquot-buffer-leak.patch deleted file mode 100644 index 04d1350..0000000 --- a/quota-4.00_pre1-Fix-ddquot-buffer-leak.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 797913a0c470da93d44201d074d343953a38589c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Fri, 11 Mar 2011 11:06:20 +0100 -Subject: [PATCH] Fix ddquot buffer leak - -The ddquot buffer is used to tranfer data from/to file. All its data are -copied from/to it, so it's not needed after return from qtree_read_dquot()/ -qtree_write_dquot(). ---- - quotaio_tree.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -diff --git a/quotaio_tree.c b/quotaio_tree.c -index cdc0e8f..9f87889 100644 ---- a/quotaio_tree.c -+++ b/quotaio_tree.c -@@ -272,6 +272,7 @@ void qtree_write_dquot(struct dquot *dquot) - lseek(dquot->dq_h->qh_fd, dquot->dq_dqb.u.v2_mdqb.dqb_off, SEEK_SET); - info->dqi_ops->mem2disk_dqblk(ddquot, dquot); - ret = write(dquot->dq_h->qh_fd, ddquot, info->dqi_entry_size); -+ free(ddquot); - if (ret != info->dqi_entry_size) { - if (ret > 0) - errno = ENOSPC; -@@ -421,11 +422,13 @@ struct dquot *qtree_read_dquot(struct quota_handle *h, qid_t id) - if (ret != info->dqi_entry_size) { - if (ret > 0) - errno = EIO; -+ free(ddquot); - die(2, _("Cannot read quota structure for id %u: %s\n"), dquot->dq_id, - strerror(errno)); - } - info->dqi_ops->disk2mem_dqblk(dquot, ddquot); - } -+ free(ddquot); - return dquot; - } - --- -1.7.4 - diff --git a/quota-4.00_pre1-Fix-synopsis-and-properly-report-errors-during-remot.patch b/quota-4.00_pre1-Fix-synopsis-and-properly-report-errors-during-remot.patch deleted file mode 100644 index 51c7ffc..0000000 --- a/quota-4.00_pre1-Fix-synopsis-and-properly-report-errors-during-remot.patch +++ /dev/null @@ -1,85 +0,0 @@ -From 8d4c4a761c27a81d96ae8c49e1b8d32d66b6751e Mon Sep 17 00:00:00 2001 -From: Jan Kara -Date: Tue, 8 Mar 2011 23:36:47 +0100 -Subject: [PATCH 1/2] Fix synopsis and properly report errors during remote grace period setting - -Signed-off-by: Jan Kara ---- - edquota.8 | 2 ++ - setquota.8 | 4 +--- - setquota.c | 11 ++++++++--- - 3 files changed, 11 insertions(+), 6 deletions(-) - -diff --git a/edquota.8 b/edquota.8 -index 4b1406b..2ef4cb6 100644 ---- a/edquota.8 -+++ b/edquota.8 -@@ -38,6 +38,8 @@ edquota \- edit user quotas - .BR \-u \ | - .B \-g - ] [ -+.B \-rm -+] [ - .B \-F - .I format-name - ] [ -diff --git a/setquota.8 b/setquota.8 -index e3ac7e0..6c3dc88 100644 ---- a/setquota.8 -+++ b/setquota.8 -@@ -67,8 +67,6 @@ setquota \- set disk quotas - .B setquota - .B \-t - [ --.B \-m --] [ - .B \-u - | - .B \-g -@@ -86,7 +84,7 @@ setquota \- set disk quotas - .B setquota - .B \-T - [ --.B \-m -+.B \-rm - ] [ - .B \-u - | -diff --git a/setquota.c b/setquota.c -index 5d2734b..d1cffcb 100644 ---- a/setquota.c -+++ b/setquota.c -@@ -58,7 +58,7 @@ static void usage(void) - setquota [-u|-g] %1$s[-F quotaformat] <-p protouser|protogroup> -a|...\n\ - setquota [-u|-g] %1$s[-F quotaformat] -b [-c] -a|...\n\ - setquota [-u|-g] [-F quotaformat] -t -a|...\n\ -- setquota [-u|-g] [-F quotaformat] -T -a|...\n\n\ -+ setquota [-u|-g] %1$s[-F quotaformat] -T -a|...\n\n\ - -u, --user set limits for user\n\ - -g, --group set limits for group\n\ - -a, --all set limits for all filesystems\n\ -@@ -372,14 +372,19 @@ static int batch_setlimits(struct quota_handle **handles) - /* Set grace times */ - static int setgraces(struct quota_handle **handles) - { -- int i; -+ int i, ret = 0; - - for (i = 0; handles[i]; i++) { -+ if (handles[i]->qh_ops->write_info) { -+ errstr(_("Setting grace period on %s is not supported.\n"), handles[i]->qh_quotadev); -+ ret = -1; -+ continue; -+ } - handles[i]->qh_info.dqi_bgrace = toset.dqb_btime; - handles[i]->qh_info.dqi_igrace = toset.dqb_itime; - mark_quotafile_info_dirty(handles[i]); - } -- return 0; -+ return ret; - } - - /* Set grace times for individual user */ --- -1.7.4 - diff --git a/quota-4.00_pre1-Forbid-grace-time-setting-over-RPC.patch b/quota-4.00_pre1-Forbid-grace-time-setting-over-RPC.patch deleted file mode 100644 index 2c6678e..0000000 --- a/quota-4.00_pre1-Forbid-grace-time-setting-over-RPC.patch +++ /dev/null @@ -1,95 +0,0 @@ -From 418a9f20ee870953790b4331327ccb24ca8f1e47 Mon Sep 17 00:00:00 2001 -From: Jan Kara -Date: Wed, 9 Mar 2011 15:37:37 +0100 -Subject: [PATCH 2/2] Forbid grace time setting over RPC - -Testing revealed that it's not easy to set even individual grace times -over RPC protocol. Since the usage of it is limited, just disallow that. - -Signed-off-by: Jan Kara ---- - edquota.8 | 2 -- - edquota.c | 8 ++++++-- - setquota.8 | 2 -- - setquota.c | 6 +++++- - 4 files changed, 11 insertions(+), 7 deletions(-) - -diff --git a/edquota.8 b/edquota.8 -index 2ef4cb6..4b1406b 100644 ---- a/edquota.8 -+++ b/edquota.8 -@@ -38,8 +38,6 @@ edquota \- edit user quotas - .BR \-u \ | - .B \-g - ] [ --.B \-rm --] [ - .B \-F - .I format-name - ] [ -diff --git a/edquota.c b/edquota.c -index c0b2f76..4d247fa 100644 ---- a/edquota.c -+++ b/edquota.c -@@ -80,8 +80,8 @@ void usage(void) - #endif - errstr(_("Usage:\n\tedquota %1$s[-u] [-F formatname] [-p username] [-f filesystem] username ...\n\ - \tedquota %1$s-g [-F formatname] [-p groupname] [-f filesystem] groupname ...\n\ --\tedquota %1$s[-u|g] [-F formatname] [-f filesystem] -t\n\ --\tedquota %1$s[-u|g] [-F formatname] [-f filesystem] -T username|groupname ...\n"), rpcflag); -+\tedquota [-u|g] [-F formatname] [-f filesystem] -t\n\ -+\tedquota [-u|g] [-F formatname] [-f filesystem] -T username|groupname ...\n"), rpcflag); - fputs(_("\n\ - -u, --user edit user data\n\ - -g, --group edit group data\n"), stderr); -@@ -183,6 +183,10 @@ int parse_options(int argc, char **argv) - errstr(_("Prototype name does not make sense when editing grace period or times.\n")); - usage(); - } -+ if (flags & FL_REMOTE && (flags & (FL_EDIT_TIMES | FL_EDIT_PERIOD))) { -+ errstr(_("Cannot change grace times over RPC protocol.\n")); -+ usage(); -+ } - return optind; - } - -diff --git a/setquota.8 b/setquota.8 -index 6c3dc88..db9d054 100644 ---- a/setquota.8 -+++ b/setquota.8 -@@ -84,8 +84,6 @@ setquota \- set disk quotas - .B setquota - .B \-T - [ --.B \-rm --] [ - .B \-u - | - .B \-g -diff --git a/setquota.c b/setquota.c -index d1cffcb..fe29ec2 100644 ---- a/setquota.c -+++ b/setquota.c -@@ -58,7 +58,7 @@ static void usage(void) - setquota [-u|-g] %1$s[-F quotaformat] <-p protouser|protogroup> -a|...\n\ - setquota [-u|-g] %1$s[-F quotaformat] -b [-c] -a|...\n\ - setquota [-u|-g] [-F quotaformat] -t -a|...\n\ -- setquota [-u|-g] %1$s[-F quotaformat] -T -a|...\n\n\ -+ setquota [-u|-g] [-F quotaformat] -T -a|...\n\n\ - -u, --user set limits for user\n\ - -g, --group set limits for group\n\ - -a, --all set limits for all filesystems\n\ -@@ -202,6 +202,10 @@ static void parse_options(int argcnt, char **argstr) - errstr(_("Batch mode and prototype user cannot be used together.\n")); - usage(); - } -+ if (flags & FL_RPC && (flags & (FL_GRACE | FL_INDIVIDUAL_GRACE))) { -+ errstr(_("Cannot set grace times over RPC protocol.\n")); -+ usage(); -+ } - if (flags & FL_GRACE) - otherargs = 2; - else if (flags & FL_INDIVIDUAL_GRACE) --- -1.7.4 - diff --git a/quota-4.00_pre1-Implement-quotacheck-for-GFS2.patch b/quota-4.00_pre1-Implement-quotacheck-for-GFS2.patch deleted file mode 100644 index fddbfc4..0000000 --- a/quota-4.00_pre1-Implement-quotacheck-for-GFS2.patch +++ /dev/null @@ -1,213 +0,0 @@ -From fa920711b4bbb9e61358a7f488f0a645ef221321 Mon Sep 17 00:00:00 2001 -From: Abhijith Das -Date: Fri, 4 Feb 2011 12:40:58 +0100 -Subject: [PATCH] Implement quotacheck for GFS2 - -Although GFS2 maintains quota as metadata, it sometimes might need to -check quota usage (most notably when quota is enabled for the first time). -So add support for GFS2 in quotacheck. - -Signed-off-by: Jan Kara - -Petr Pisar: Remove MNTTYPE_NEXT3 test ---- - quotacheck.c | 82 +++++++++++++++++++++++++++++++++++++++++++-------------- - quotaio_xfs.c | 12 +++++++- - quotaio_xfs.h | 9 ++++++ - 3 files changed, 82 insertions(+), 21 deletions(-) - -diff --git a/quotacheck.c b/quotacheck.c -index fec9ec3..7ecf62d 100644 ---- a/quotacheck.c -+++ b/quotacheck.c -@@ -404,10 +404,6 @@ static void parse_options(int argcnt, char **argstr) - fputs(_("Bad number of arguments.\n"), stderr); - usage(); - } -- if (fmt == QF_XFS) { -- fputs(_("XFS quota format needs no checking.\n"), stderr); -- exit(0); -- } - if (flags & FL_VERBOSE && flags & FL_DEBUG) - flags &= ~FL_VERBOSE; - if (!(flags & FL_ALL)) -@@ -689,6 +685,9 @@ static int rename_files(struct mntent *mnt, int type) - int fd; - #endif - -+ if (cfmt == QF_XFS) /* No renaming for xfs/gfs2 */ -+ return 0; -+ - debug(FL_DEBUG, _("Renaming new files to proper names.\n")); - if (get_qf_name(mnt, type, cfmt, 0, &filename) < 0) - die(2, _("Cannot get name of old quotafile on %s.\n"), mnt->mnt_dir); -@@ -787,25 +786,42 @@ static int dump_to_file(struct mntent *mnt, int type) - struct dquot *dquot; - uint i; - struct quota_handle *h; -+ unsigned int commit = 0; - - debug(FL_DEBUG, _("Dumping gathered data for %ss.\n"), type2name(type)); -- if (!(h = new_io(mnt, type, cfmt))) { -- errstr(_("Cannot initialize IO on new quotafile: %s\n"), -- strerror(errno)); -- return -1; -- } -- if (!(flags & FL_NEWFILE)) { -- h->qh_info.dqi_bgrace = old_info[type].dqi_bgrace; -- h->qh_info.dqi_igrace = old_info[type].dqi_igrace; -- if (is_tree_qfmt(cfmt)) -- v2_merge_info(&h->qh_info, old_info + type); -- mark_quotafile_info_dirty(h); -+ if (cfmt == QF_XFS) { -+ if (!(h = init_io(mnt, type, cfmt, IOI_READONLY))) { -+ errstr(_("Cannot initialize IO on xfs/gfs2 quotafile: %s\n"), -+ strerror(errno)); -+ return -1; -+ } -+ } else { -+ if (!(h = new_io(mnt, type, cfmt))) { -+ errstr(_("Cannot initialize IO on new quotafile: %s\n"), -+ strerror(errno)); -+ return -1; -+ } -+ if (!(flags & FL_NEWFILE)) { -+ h->qh_info.dqi_bgrace = old_info[type].dqi_bgrace; -+ h->qh_info.dqi_igrace = old_info[type].dqi_igrace; -+ if (is_tree_qfmt(cfmt)) -+ v2_merge_info(&h->qh_info, old_info + type); -+ mark_quotafile_info_dirty(h); -+ } - } - for (i = 0; i < DQUOTHASHSIZE; i++) - for (dquot = dquot_hash[type][i]; dquot; dquot = dquot->dq_next) { - dquot->dq_h = h; -+ /* For XFS/GFS2, we don't bother with actually checking -+ * what the usage value is in the internal quota file. -+ * We simply attempt to update the usage for every quota -+ * we find in the fs scan. The filesystem decides in the -+ * quotactl handler whether to update the usage in the -+ * quota file or not. -+ */ -+ commit = cfmt == QF_XFS ? COMMIT_USAGE : COMMIT_ALL; - update_grace_times(dquot); -- h->qh_ops->commit_dquot(dquot, COMMIT_ALL); -+ h->qh_ops->commit_dquot(dquot, commit); - } - if (end_io(h) < 0) { - errstr(_("Cannot finish IO on new quotafile: %s\n"), strerror(errno)); -@@ -893,6 +909,14 @@ static void check_dir(struct mntent *mnt) - die(2, _("Mountpoint %s is not a directory?!\n"), mnt->mnt_dir); - cur_dev = st.st_dev; - files_done = dirs_done = 0; -+ /* -+ * For gfs2, we scan the fs first and then tell the kernel about the new usage. -+ * So, there's no need to load any information. We also don't remount the -+ * filesystem read-only because for a clustering filesystem it won't stop -+ * modifications from other nodes anyway. -+ */ -+ if (cfmt == QF_XFS) -+ goto start_scan; - if (ucheck) - if (process_file(mnt, USRQUOTA) < 0) - ucheck = 0; -@@ -923,6 +947,7 @@ Please stop all programs writing to filesystem or use -m flag to force checking. - remounted = 1; - debug(FL_DEBUG, _("Filesystem remounted read-only\n")); - } -+start_scan: - debug(FL_VERBOSE, _("Scanning %s [%s] "), mnt->mnt_fsname, mnt->mnt_dir); - #if defined(EXT2_DIRECT) - if (!strcmp(mnt->mnt_type, MNTTYPE_EXT2) || !strcmp(mnt->mnt_type, MNTTYPE_EXT3)) { -@@ -973,6 +998,10 @@ static int detect_filename_format(struct mntent *mnt, int type) - int journal = 0; - int fmt; - -+ if (strcmp(mnt->mnt_type, MNTTYPE_XFS) == 0 || -+ strcmp(mnt->mnt_type, MNTTYPE_GFS2) == 0) -+ return QF_XFS; -+ - if (type == USRQUOTA) { - if ((option = hasmntopt(mnt, MNTOPT_USRQUOTA))) - option += strlen(MNTOPT_USRQUOTA); -@@ -1040,6 +1069,22 @@ jquota_err: - return -1; - } - -+static int compatible_fs_qfmt(char *fstype, int fmt) -+{ -+ /* We never check XFS, NFS, and filesystems supporting VFS metaformat */ -+ if (!strcmp(fstype, MNTTYPE_XFS) || nfs_fstype(fstype) || -+ meta_qf_fstype(fstype)) -+ return 0; -+ /* In all other cases we can pick a format... */ -+ if (fmt == -1) -+ return 1; -+ /* XFS format is supported only by GFS2 */ -+ if (fmt == QF_XFS) -+ return !strcmp(fstype, MNTTYPE_GFS2); -+ /* Anything but GFS2 supports all other formats */ -+ return !!strcmp(fstype, MNTTYPE_GFS2); -+} -+ - static void check_all(void) - { - struct mntent *mnt; -@@ -1051,10 +1096,7 @@ static void check_all(void) - while ((mnt = get_next_mount())) { - if (flags & FL_ALL && flags & FL_NOROOT && !strcmp(mnt->mnt_dir, "/")) - continue; -- if (!strcmp(mnt->mnt_type, MNTTYPE_XFS) || -- !strcmp(mnt->mnt_type, MNTTYPE_GFS2) || -- nfs_fstype(mnt->mnt_type) || -- meta_qf_fstype(mnt->mnt_type)) { -+ if (!compatible_fs_qfmt(mnt->mnt_type, fmt)) { - debug(FL_DEBUG | FL_VERBOSE, _("Skipping %s [%s]\n"), mnt->mnt_fsname, mnt->mnt_dir); - continue; - } -diff --git a/quotaio_xfs.c b/quotaio_xfs.c -index 4729317..62075b5 100644 ---- a/quotaio_xfs.c -+++ b/quotaio_xfs.c -@@ -151,7 +151,17 @@ static int xfs_commit_dquot(struct dquot *dquot, int flags) - return 0; - - xfs_util2kerndqblk(&xdqblk, &dquot->dq_dqb); -- xdqblk.d_fieldmask |= FS_DQ_LIMIT_MASK; -+ xdqblk.d_flags |= XFS_USRQUOTA(h) ? XFS_USER_QUOTA : XFS_GROUP_QUOTA; -+ xdqblk.d_id = id; -+ if (strcmp(h->qh_fstype, MNTTYPE_GFS2) == 0) { -+ if (flags & COMMIT_LIMITS) /* warn/limit */ -+ xdqblk.d_fieldmask |= FS_DQ_BSOFT | FS_DQ_BHARD; -+ if (flags & COMMIT_USAGE) /* block usage */ -+ xdqblk.d_fieldmask |= FS_DQ_BCOUNT; -+ } else { -+ xdqblk.d_fieldmask |= FS_DQ_LIMIT_MASK; -+ } -+ - qcmd = QCMD(Q_XFS_SETQLIM, h->qh_type); - if (quotactl(qcmd, h->qh_quotadev, id, (void *)&xdqblk) < 0) { - ; -diff --git a/quotaio_xfs.h b/quotaio_xfs.h -index cf89973..54725b0 100644 ---- a/quotaio_xfs.h -+++ b/quotaio_xfs.h -@@ -105,6 +105,15 @@ typedef struct fs_disk_quota { - #define FS_DQ_TIMER_MASK (FS_DQ_BTIMER | FS_DQ_ITIMER | FS_DQ_RTBTIMER) - - /* -+ * Accounting values. These can only be set for filesystem with -+ * non-transactional quotas that require quotacheck(8) in userspace. -+ */ -+#define FS_DQ_BCOUNT (1<<12) -+#define FS_DQ_ICOUNT (1<<13) -+#define FS_DQ_RTBCOUNT (1<<14) -+#define FS_DQ_ACCT_MASK (FS_DQ_BCOUNT | FS_DQ_ICOUNT | FS_DQ_RTBCOUNT) -+ -+/* - * Various flags related to quotactl(2). Only relevant to XFS filesystems. - */ - #define XFS_QUOTA_UDQ_ACCT (1<<0) /* user quota accounting */ --- -1.7.4 - diff --git a/quota-4.00_pre1-Initialize-v2r1-ddquot-padding-in-dump.patch b/quota-4.00_pre1-Initialize-v2r1-ddquot-padding-in-dump.patch deleted file mode 100644 index 8b7993f..0000000 --- a/quota-4.00_pre1-Initialize-v2r1-ddquot-padding-in-dump.patch +++ /dev/null @@ -1,30 +0,0 @@ -From e482f256411dba6a9d647e6df7f24eef8af3d59b Mon Sep 17 00:00:00 2001 -From: Petr Pisar -Date: Thu, 7 Apr 2011 16:26:51 +0200 -Subject: [PATCH] Initialize v2r1 ddquot padding in dump - -v2r1_mem2diskdqblk() that writes quota structure into memory block -calls tree_entry_unused() to decide the structure is in use (and -rewrites UID then). However tree_entry_unused() scan can be spoiled -because padding is not initialized and contains random value. - -Signed-off-by: Jan Kara ---- - quotaio_v2.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -diff --git a/quotaio_v2.c b/quotaio_v2.c -index 2242c88..06be04e 100644 ---- a/quotaio_v2.c -+++ b/quotaio_v2.c -@@ -144,6 +144,7 @@ static void v2r1_mem2diskdqblk(void *dp, struct dquot *dquot) - d->dqb_itime = __cpu_to_le64(m->dqb_itime); - d->dqb_btime = __cpu_to_le64(m->dqb_btime); - d->dqb_id = __cpu_to_le32(dquot->dq_id); -+ d->dqb_pad = 0; /* Initialize because of qtree_entry_unused() scan */ - if (qtree_entry_unused(&dquot->dq_h->qh_info.u.v2_mdqi.dqi_qtree, dp)) - d->dqb_itime = __cpu_to_le64(1); - } --- -1.7.4.2 - diff --git a/quota-4.00_pre1-Initialize-vfsold-block-and-inode-value-boundries-fo.patch b/quota-4.00_pre1-Initialize-vfsold-block-and-inode-value-boundries-fo.patch deleted file mode 100644 index 2fcd809..0000000 --- a/quota-4.00_pre1-Initialize-vfsold-block-and-inode-value-boundries-fo.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 7313d70407961939fda2b46c7d3c00cc98fe412e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Wed, 9 Feb 2011 15:40:08 +0100 -Subject: [PATCH] Initialize vfsold block and inode value boundries for new quota file - -Otherwise `quotackech -c -F vfsold' fails with `Trying to set quota -usage out of range supported by quota format on...' because initial -boundry is zero. - -Fixes SF bug #3176326. ---- - quotaio_v1.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -diff --git a/quotaio_v1.c b/quotaio_v1.c -index 305bff2..61bd93e 100644 ---- a/quotaio_v1.c -+++ b/quotaio_v1.c -@@ -195,6 +195,10 @@ static int v1_new_io(struct quota_handle *h) - ddqblk.dqb_itime = MAX_IQ_TIME; - h->qh_info.dqi_bgrace = MAX_DQ_TIME; - h->qh_info.dqi_igrace = MAX_IQ_TIME; -+ h->qh_info.dqi_max_b_limit = ~(uint32_t)0; -+ h->qh_info.dqi_max_i_limit = ~(uint32_t)0; -+ h->qh_info.dqi_max_b_usage = ((uint64_t)(~(uint32_t)0)) << V1_DQBLK_SIZE_BITS; -+ h->qh_info.dqi_max_i_usage = ~(uint32_t)0; - lseek(h->qh_fd, 0, SEEK_SET); - if (write(h->qh_fd, &ddqblk, sizeof(ddqblk)) != sizeof(ddqblk)) - return -1; --- -1.7.4 - diff --git a/quota-4.00_pre1-Make-RPC-handle-properly-host-names-with-colons.patch b/quota-4.00_pre1-Make-RPC-handle-properly-host-names-with-colons.patch deleted file mode 100644 index 32bb15e..0000000 --- a/quota-4.00_pre1-Make-RPC-handle-properly-host-names-with-colons.patch +++ /dev/null @@ -1,91 +0,0 @@ -From b8ab76ad19e3c284ac14bd0450662bfc41719e03 Mon Sep 17 00:00:00 2001 -From: Jan Kara -Date: Wed, 16 Feb 2011 22:19:55 +0100 -Subject: [PATCH 2/2] Make RPC handle properly host names with colons - -NFS handles server names with colons (usually IPv6 addresses) by encapsulating -them in brackets. Handle this properly. - -Signed-off-by: Jan Kara ---- - rquota_client.c | 48 +++++++++++++++++++++++++++++++++--------------- - 1 files changed, 33 insertions(+), 15 deletions(-) - -diff --git a/rquota_client.c b/rquota_client.c -index cc1d623..53e0579 100644 ---- a/rquota_client.c -+++ b/rquota_client.c -@@ -104,6 +104,35 @@ int rquota_err(int stat) - } - } - -+static int split_nfs_mount(char *devname, char **host, char **path) -+{ -+ char *pathname; -+ -+ /* NFS server name contained in brackets? */ -+ if (*devname == '[') { -+ *host = devname + 1; -+ pathname = strchr(devname, ']'); -+ if (!pathname || pathname[1] != ':') -+ return 0; -+ /* Autofs? */ -+ if (pathname[2] == '(') -+ return 0; -+ *pathname = 0; -+ *path = pathname + 2; -+ return 1; -+ } -+ *host = devname; -+ pathname = strchr(devname, ':'); -+ if (!pathname) -+ return 0; -+ /* Autofs? */ -+ if (pathname[1] == '(') -+ return 0; -+ *pathname = 0; -+ *path = pathname + 1; -+ return 1; -+} -+ - /* - * Collect the requested quota information from a remote host. - */ -@@ -128,13 +157,7 @@ int rpc_rquota_get(struct dquot *dquot) - */ - fsname_tmp = (char *)smalloc(strlen(dquot->dq_h->qh_quotadev) + 1); - strcpy(fsname_tmp, dquot->dq_h->qh_quotadev); -- host = fsname_tmp; -- -- /* -- * Strip off pathname on nfs mounted dir. Ignore entries of any -- * automounter. -- */ -- if ((pathname = strchr(fsname_tmp, ':')) == (char *)0 || *(pathname + 1) == '(') { -+ if (!split_nfs_mount(fsname_tmp, &host, &pathname)) { - free(fsname_tmp); - return -ENOENT; - } -@@ -247,16 +270,11 @@ int rpc_rquota_set(int qcmd, struct dquot *dquot) - */ - fsname_tmp = (char *)smalloc(strlen(dquot->dq_h->qh_quotadev) + 1); - strcpy(fsname_tmp, dquot->dq_h->qh_quotadev); -- host = fsname_tmp; -- -- /* -- * Strip off pathname on nfs mounted dir. Ignore entries of any -- * automounter. -- */ -- if ((pathname = strchr(fsname_tmp, ':')) == (char *)0 || *(pathname + 1) == '(') -+ if (!split_nfs_mount(fsname_tmp, &host, &pathname)) { -+ free(fsname_tmp); - return -ENOENT; -+ } - -- *pathname++ = '\0'; - /* For NFSv4, we send the filesystem path without initial /. Server prepends proper - * NFS pseudoroot automatically and uses this for detection of NFSv4 mounts. */ - if ((dquot->dq_h->qh_io_flags & IOFL_NFS_MIXED_PATHS) && --- -1.7.4 - diff --git a/quota-4.00_pre1-Make-dirname-static.patch b/quota-4.00_pre1-Make-dirname-static.patch deleted file mode 100644 index c9e368c..0000000 --- a/quota-4.00_pre1-Make-dirname-static.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 41974689e041dbe9625a2e1435b195ed5e94d40f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Thu, 12 May 2011 13:44:26 +0200 -Subject: [PATCH] Make dirname static - -The `dirname' variable name clashes with libc dirname(3). This could -cause edquota to segfault if name server switch is configured to use -`db' back-end that attempts to call dirname(3). ---- - edquota.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -diff --git a/edquota.c b/edquota.c -index 4d247fa..0d72882 100644 ---- a/edquota.c -+++ b/edquota.c -@@ -69,7 +69,7 @@ char *progname; - int flags, quotatype; - int fmt = -1; - char *protoname; --char *dirname; -+static char *dirname; - - void usage(void) - { --- -1.7.4.4 - diff --git a/quota-4.00_pre1-Report-quotacheck-failures-by-return-code.patch b/quota-4.00_pre1-Report-quotacheck-failures-by-return-code.patch deleted file mode 100644 index 21607d7..0000000 --- a/quota-4.00_pre1-Report-quotacheck-failures-by-return-code.patch +++ /dev/null @@ -1,203 +0,0 @@ -From 0694c7dae6acec8ee54ca885417b0628cf0501d6 Mon Sep 17 00:00:00 2001 -From: Petr Pisar -Date: Fri, 1 Jul 2011 10:13:54 +0200 -Subject: [PATCH] Report quotacheck failures by return code - -Signed-off-by: Jan Kara - -Petr Pisar: Back-ported (missing NEXT3 support) ---- - quotacheck.c | 57 ++++++++++++++++++++++++++++++++++++--------------------- - 1 files changed, 36 insertions(+), 21 deletions(-) - -diff --git a/quotacheck.c b/quotacheck.c -index 07b0c0d..cf2be9c 100644 ---- a/quotacheck.c -+++ b/quotacheck.c -@@ -859,8 +859,9 @@ static int dump_to_file(struct mntent *mnt, int type) - return 0; - } - --/* Substract space used by old quota file from usage */ --static void sub_quota_file(struct mntent *mnt, int qtype, int ftype) -+/* Substract space used by old quota file from usage. -+ * Return non-zero in case of failure, zero otherwise. */ -+static int sub_quota_file(struct mntent *mnt, int qtype, int ftype) - { - char *filename; - struct stat st; -@@ -871,13 +872,13 @@ static void sub_quota_file(struct mntent *mnt, int qtype, int ftype) - debug(FL_DEBUG, _("Substracting space used by old %s quota file.\n"), type2name(ftype)); - if (get_qf_name(mnt, ftype, cfmt, 0, &filename) < 0) { - debug(FL_VERBOSE, _("Old %s file not found. Usage will not be substracted.\n"), type2name(ftype)); -- return; -+ return 0; - } - - if (stat(filename, &st) < 0) { - debug(FL_VERBOSE, _("Cannot stat old %s quota file: %s\n"), type2name(ftype), strerror(errno)); - free(filename); -- return; -+ return 0; - } - qspace = getqsize(filename, &st); - free(filename); -@@ -888,18 +889,21 @@ static void sub_quota_file(struct mntent *mnt, int qtype, int ftype) - id = st.st_gid; - if ((d = lookup_dquot(id, qtype)) == NODQUOT) { - errstr(_("Quota structure for %s owning quota file not present! Something is really wrong...\n"), type2name(qtype)); -- return; -+ return -1; - } - d->dq_dqb.dqb_curinodes--; - d->dq_dqb.dqb_curspace -= qspace; - debug(FL_DEBUG, _("Substracted %lu bytes.\n"), (unsigned long)qspace); -+ return 0; - } - --/* Buffer quotafile, run filesystem scan, dump quotafiles */ --static void check_dir(struct mntent *mnt) -+/* Buffer quotafile, run filesystem scan, dump quotafiles. -+ * Return non-zero value in case of failure, zero otherwise. */ -+static int check_dir(struct mntent *mnt) - { - struct stat st; - int remounted = 0; -+ int failed = 0; - - if (lstat(mnt->mnt_dir, &st) < 0) - die(2, _("Cannot stat mountpoint %s: %s\n"), mnt->mnt_dir, strerror(errno)); -@@ -922,7 +926,7 @@ static void check_dir(struct mntent *mnt) - if (process_file(mnt, GRPQUOTA) < 0) - gcheck = 0; - if (!ucheck && !gcheck) /* Nothing to check? */ -- return; -+ return 0; - if (!(flags & FL_NOREMOUNT)) { - /* Now we try to remount fs read-only to prevent races when scanning filesystem */ - if (mount -@@ -932,12 +936,14 @@ static void check_dir(struct mntent *mnt) - printf(_("Cannot remount filesystem mounted on %s read-only. Counted values might not be right.\n"), mnt->mnt_dir); - if (!ask_yn(_("Should I continue"), 0)) { - printf(_("As you wish... Canceling check of this file.\n")); -+ failed = -1; - goto out; - } - } - else { - errstr(_("Cannot remount filesystem mounted on %s read-only so counted values might not be right.\n\ - Please stop all programs writing to filesystem or use -m flag to force checking.\n"), mnt->mnt_dir); -+ failed = -1; - goto out; - } - } -@@ -949,7 +955,7 @@ start_scan: - debug(FL_VERBOSE, _("Scanning %s [%s] "), mnt->mnt_fsname, mnt->mnt_dir); - #if defined(EXT2_DIRECT) - if (!strcmp(mnt->mnt_type, MNTTYPE_EXT2) || !strcmp(mnt->mnt_type, MNTTYPE_EXT3)) { -- if (ext2_direct_scan(mnt->mnt_fsname) < 0) -+ if ((failed = ext2_direct_scan(mnt->mnt_fsname)) < 0) - goto out; - } - else { -@@ -958,19 +964,19 @@ start_scan: - #endif - if (flags & FL_VERYVERBOSE) - putchar('\n'); -- if (scan_dir(mnt->mnt_dir) < 0) -+ if ((failed = scan_dir(mnt->mnt_dir)) < 0) - goto out; - } - dirs_done++; - if (flags & FL_VERBOSE || flags & FL_VERYVERBOSE) - fputs(_("done\n"), stdout); - if (ucheck) { -- sub_quota_file(mnt, USRQUOTA, USRQUOTA); -- sub_quota_file(mnt, USRQUOTA, GRPQUOTA); -+ failed |= sub_quota_file(mnt, USRQUOTA, USRQUOTA); -+ failed |= sub_quota_file(mnt, USRQUOTA, GRPQUOTA); - } - if (gcheck) { -- sub_quota_file(mnt, GRPQUOTA, USRQUOTA); -- sub_quota_file(mnt, GRPQUOTA, GRPQUOTA); -+ failed |= sub_quota_file(mnt, GRPQUOTA, USRQUOTA); -+ failed |= sub_quota_file(mnt, GRPQUOTA, GRPQUOTA); - } - debug(FL_DEBUG | FL_VERBOSE, _("Checked %d directories and %d files\n"), dirs_done, - files_done); -@@ -980,11 +986,12 @@ start_scan: - debug(FL_DEBUG, _("Filesystem remounted RW.\n")); - } - if (ucheck) -- dump_to_file(mnt, USRQUOTA); -+ failed |= dump_to_file(mnt, USRQUOTA); - if (gcheck) -- dump_to_file(mnt, GRPQUOTA); -+ failed |= dump_to_file(mnt, GRPQUOTA); - out: - remove_list(); -+ return failed; - } - - /* Detect quota format from filename of present files */ -@@ -1083,11 +1090,13 @@ static int compatible_fs_qfmt(char *fstype, int fmt) - return !!strcmp(fstype, MNTTYPE_GFS2); - } - --static void check_all(void) -+/* Return 0 in case of success, non-zero otherwise. */ -+static int check_all(void) - { - struct mntent *mnt; - int checked = 0; - static int warned; -+ int failed = 0; - - if (init_mounts_scan((flags & FL_ALL) ? 0 : 1, &mntpoint, 0) < 0) - die(2, _("Cannot initialize mountpoint scan.\n")); -@@ -1114,6 +1123,7 @@ static void check_all(void) - if (cfmt == -1) { - errstr(_("Cannot guess format from filename on %s. Please specify format on commandline.\n"), - mnt->mnt_fsname); -+ failed = -1; - continue; - } - debug(FL_DEBUG, _("Detected quota format %s\n"), fmt2name(cfmt)); -@@ -1150,25 +1160,30 @@ static void check_all(void) - } - - checked++; -- check_dir(mnt); -+ failed |= check_dir(mnt); - } - end_mounts_scan(); -- if (!checked && (!(flags & FL_ALL) || flags & (FL_VERBOSE | FL_DEBUG))) -+ if (!checked && (!(flags & FL_ALL) || flags & (FL_VERBOSE | FL_DEBUG))) { - errstr(_("Cannot find filesystem to check or filesystem not mounted with quota option.\n")); -+ failed = -1; -+ } -+ return failed; - } - - int main(int argc, char **argv) - { -+ int failed; -+ - gettexton(); - progname = basename(argv[0]); - - parse_options(argc, argv); - init_kernel_interface(); - -- check_all(); -+ failed = check_all(); - #ifdef DEBUG_MALLOC - errstr(_("Allocated %d bytes memory\nFree'd %d bytes\nLost %d bytes\n"), - malloc_mem, free_mem, malloc_mem - free_mem); - #endif -- return 0; -+ return (failed ? EXIT_FAILURE : EXIT_SUCCESS); - } --- -1.7.6 - diff --git a/quota-4.00_pre1-Reverse-setgrace-condition.patch b/quota-4.00_pre1-Reverse-setgrace-condition.patch deleted file mode 100644 index feb2db5..0000000 --- a/quota-4.00_pre1-Reverse-setgrace-condition.patch +++ /dev/null @@ -1,28 +0,0 @@ -From a571f710b42f5ba76b5e577607b35a9076a76ba0 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Wed, 9 Mar 2011 17:52:33 +0100 -Subject: [PATCH] Reverse setgrace condition - -Original idea is to disallow remote grace setting. The condition -should be opposite. See -https://sourceforge.net/tracker/index.php?func=detail&aid=3202953&group_id=18136&atid=118136 ---- - setquota.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -diff --git a/setquota.c b/setquota.c -index fe29ec2..c012908 100644 ---- a/setquota.c -+++ b/setquota.c -@@ -379,7 +379,7 @@ static int setgraces(struct quota_handle **handles) - int i, ret = 0; - - for (i = 0; handles[i]; i++) { -- if (handles[i]->qh_ops->write_info) { -+ if (!handles[i]->qh_ops->write_info) { - errstr(_("Setting grace period on %s is not supported.\n"), handles[i]->qh_quotadev); - ret = -1; - continue; --- -1.7.4 - diff --git a/quota-4.00_pre1-We-shouldn-t-pass-NULL-to-XGETQSTAT-quotactl-since-k.patch b/quota-4.00_pre1-We-shouldn-t-pass-NULL-to-XGETQSTAT-quotactl-since-k.patch deleted file mode 100644 index 57fdea6..0000000 --- a/quota-4.00_pre1-We-shouldn-t-pass-NULL-to-XGETQSTAT-quotactl-since-k.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 5b9c30f584a4f36aceade621341c084b840dfaff Mon Sep 17 00:00:00 2001 -From: jkar8572 -Date: Mon, 10 May 2010 07:10:57 +0000 -Subject: [PATCH] We shouldn't pass NULL to XGETQSTAT quotactl since kernel either fails with - EFAULT or reads garbage from NULL address (which makes SELinux spit warnings). - (Jan Kara) - -Petr Pisar: Changelog entry removed. - -diff --git a/quotasys.c b/quotasys.c -index 307a359..5b6996c 100644 ---- a/quotasys.c -+++ b/quotasys.c -@@ -754,7 +754,7 @@ void init_kernel_interface(void) - else { - fs_quota_stat_t dummy; - -- if (!quotactl(QCMD(Q_XGETQSTAT, 0), NULL, 0, (void *)&dummy) || (errno != EINVAL && errno != ENOSYS)) -+ if (!quotactl(QCMD(Q_XGETQSTAT, 0), "/dev/root", 0, (void *)&dummy) || (errno != EINVAL && errno != ENOSYS)) - kernel_qfmt[kernel_qfmt_num++] = QF_XFS; - } - /* Detect new kernel interface; Assume generic interface unless we can prove there is not one... */ --- -1.7.4.2 - diff --git a/quota-4.00_pre1-add-gfs2-support.patch b/quota-4.00_pre1-add-gfs2-support.patch deleted file mode 100644 index c3f509b..0000000 --- a/quota-4.00_pre1-add-gfs2-support.patch +++ /dev/null @@ -1,153 +0,0 @@ -From 7f17e02d34e8157009d2603bfcea3bc619709eee Mon Sep 17 00:00:00 2001 -From: jkar8572 -Date: Wed, 5 May 2010 15:17:09 +0000 -Subject: [PATCH 1/2] GFS2 implements the XFS interface for setting and reporting the quota - information, and only allows state changes via remount. (Christoph Hellwig) - -Petr Pisar: Changelog lines removed. ---- - mntopt.h | 1 + - quotacheck.c | 4 +++- - quotaio.c | 3 ++- - quotaon.c | 8 ++++++-- - quotasys.c | 12 +++++++++--- - -diff --git a/mntopt.h b/mntopt.h -index 90673fc..5117033 100644 ---- a/mntopt.h -+++ b/mntopt.h -@@ -18,6 +18,7 @@ - #define MNTTYPE_NFS4 "nfs4" /* NFSv4 filesystem */ - #define MNTTYPE_MPFS "mpfs" /* EMC Celerra MPFS filesystem */ - #define MNTTYPE_OCFS2 "ocfs2" /* Oracle Cluster filesystem */ -+#define MNTTYPE_GFS2 "gfs2" /* Red Hat Global filesystem 2 */ - - /* mount options */ - #define MNTOPT_NOQUOTA "noquota" /* don't enforce quota */ -diff --git a/quotacheck.c b/quotacheck.c -index 41901f1..0e9bac9 100644 ---- a/quotacheck.c -+++ b/quotacheck.c -@@ -1049,7 +1049,9 @@ static void check_all(void) - while ((mnt = get_next_mount())) { - if (flags & FL_ALL && flags & FL_NOROOT && !strcmp(mnt->mnt_dir, "/")) - continue; -- if (!strcmp(mnt->mnt_type, MNTTYPE_XFS) || nfs_fstype(mnt->mnt_type) || -+ if (!strcmp(mnt->mnt_type, MNTTYPE_XFS) || -+ !strcmp(mnt->mnt_type, MNTTYPE_GFS2) || -+ nfs_fstype(mnt->mnt_type) || - meta_qf_fstype(mnt->mnt_type)) { - debug(FL_DEBUG | FL_VERBOSE, _("Skipping %s [%s]\n"), mnt->mnt_fsname, mnt->mnt_dir); - continue; -diff --git a/quotaio.c b/quotaio.c -index e857328..533b631 100644 ---- a/quotaio.c -+++ b/quotaio.c -@@ -78,7 +78,8 @@ struct quota_handle *init_io(struct mntent *mnt, int type, int fmt, int flags) - goto out_handle; - } - -- if (!strcmp(mnt->mnt_type, MNTTYPE_XFS)) { /* XFS filesystem? */ -+ if (!strcmp(mnt->mnt_type, MNTTYPE_XFS) || /* XFS filesystem? */ -+ !strcmp(mnt->mnt_type, MNTTYPE_GFS2)) { /* XFS filesystem? */ - if (fmt != -1 && fmt != QF_XFS) { /* User wanted some other format? */ - errstr(_("Only XFS quota format is allowed on XFS filesystem.\n")); - goto out_handle; -diff --git a/quotaon.c b/quotaon.c -index 813c021..1d1187b 100644 ---- a/quotaon.c -+++ b/quotaon.c -@@ -273,7 +273,10 @@ static int newstate(struct mntent *mnt, int type, char *extra) - if (flags & FL_ALL) - sflags |= STATEFLAG_ALL; - -- if (!strcmp(mnt->mnt_type, MNTTYPE_XFS)) { /* XFS filesystem has special handling... */ -+ if (!strcmp(mnt->mnt_type, MNTTYPE_GFS2)) { -+ errstr(_("Cannot change state of GFS2 quota.\n")); -+ return 1; -+ } else if (!strcmp(mnt->mnt_type, MNTTYPE_XFS)) { /* XFS filesystem has special handling... */ - if (!kern_qfmt_supp(QF_XFS)) { - errstr(_("Cannot change state of XFS quota. It's not compiled in kernel.\n")); - return 1; -@@ -329,7 +332,8 @@ static int print_state(struct mntent *mnt, int type) - { - int on = 0; - -- if (!strcmp(mnt->mnt_type, MNTTYPE_XFS)) { -+ if (!strcmp(mnt->mnt_type, MNTTYPE_XFS) || -+ !strcmp(mnt->mnt_type, MNTTYPE_GFS2)) { - if (kern_qfmt_supp(QF_XFS)) - on = kern_quota_on(mnt->mnt_fsname, type, QF_XFS) != -1; - } -diff --git a/quotasys.c b/quotasys.c -index cce5787..0cc008c 100644 ---- a/quotasys.c -+++ b/quotasys.c -@@ -91,7 +91,8 @@ static int correct_fstype(char *type) - !strcmp(type, MNTTYPE_NFS) || - !strcmp(type, MNTTYPE_NFS4) || - !strcmp(type, MNTTYPE_OCFS2) || -- !strcmp(type, MNTTYPE_MPFS)) { -+ !strcmp(type, MNTTYPE_MPFS) || -+ !strcmp(type, MNTTYPE_GFS2)) { - free(mtype); - return 1; - } -@@ -495,6 +496,8 @@ int hasquota(struct mntent *mnt, int type, int flags) - if (!correct_fstype(mnt->mnt_type) || hasmntopt(mnt, MNTOPT_NOQUOTA)) - return 0; - -+ if (!strcmp(mnt->mnt_type, MNTTYPE_GFS2)) -+ return 1; - if (!strcmp(mnt->mnt_type, MNTTYPE_XFS)) - return hasxfsquota(mnt, type, flags); - if (nfs_fstype(mnt->mnt_type)) /* NFS always has quota or better there is no good way how to detect it */ -@@ -652,11 +655,14 @@ add_entry: - goto add_entry; - break; - case QF_XFS: -- if (!strcmp(mnt->mnt_type, MNTTYPE_XFS)) -+ if (!strcmp(mnt->mnt_type, MNTTYPE_XFS) || -+ !strcmp(mnt->mnt_type, MNTTYPE_GFS2)) - goto add_entry; - break; - default: -- if (strcmp(mnt->mnt_type, MNTTYPE_XFS) && !nfs_fstype(mnt->mnt_type)) -+ if (strcmp(mnt->mnt_type, MNTTYPE_XFS) && -+ strcmp(mnt->mnt_type, MNTTYPE_GFS2) && -+ !nfs_fstype(mnt->mnt_type)) - goto add_entry; - break; - } --- -1.7.3.2 - -From f3553cfee6701f98e27a30318f8b759bcbbca370 Mon Sep 17 00:00:00 2001 -From: jkar8572 -Date: Fri, 7 May 2010 15:45:52 +0000 -Subject: [PATCH 2/2] Previous GFS2 patch was missing a hunk to properly detect whether - a GFS2 filesystem has quotas enabled. (Christoph Hellwig) - ---- - quotasys.c | 5 ++--- - 1 files changed, 2 insertions(+), 3 deletions(-) - -diff --git a/quotasys.c b/quotasys.c -index 0cc008c..307a359 100644 ---- a/quotasys.c -+++ b/quotasys.c -@@ -496,9 +496,8 @@ int hasquota(struct mntent *mnt, int type, int flags) - if (!correct_fstype(mnt->mnt_type) || hasmntopt(mnt, MNTOPT_NOQUOTA)) - return 0; - -- if (!strcmp(mnt->mnt_type, MNTTYPE_GFS2)) -- return 1; -- if (!strcmp(mnt->mnt_type, MNTTYPE_XFS)) -+ if (!strcmp(mnt->mnt_type, MNTTYPE_GFS2) || -+ !strcmp(mnt->mnt_type, MNTTYPE_XFS)) - return hasxfsquota(mnt, type, flags); - if (nfs_fstype(mnt->mnt_type)) /* NFS always has quota or better there is no good way how to detect it */ - return 1; --- -1.7.3.2 - diff --git a/quota-4.00_pre1-fix-repquota-to-get-latest-quota-info-header.patch b/quota-4.00_pre1-fix-repquota-to-get-latest-quota-info-header.patch deleted file mode 100644 index 4a4023f..0000000 --- a/quota-4.00_pre1-fix-repquota-to-get-latest-quota-info-header.patch +++ /dev/null @@ -1,67 +0,0 @@ -From b58944b582722dd3c56893eb4b6c8b8a0291201d Mon Sep 17 00:00:00 2001 -From: jkar8572 -Date: Thu, 27 May 2010 13:12:57 +0000 -Subject: [PATCH] * fix repquota to get latest quota info header (Jan Kara) - -Petr Pisar: Changelog entry removed. - ---- - quotaio.c | 9 +++++++++ - quotaio_v1.c | 5 ----- - quotaio_v2.c | 5 ----- - -diff --git a/quotaio.c b/quotaio.c -index 533b631..ee8c48a 100644 ---- a/quotaio.c -+++ b/quotaio.c -@@ -147,6 +147,15 @@ struct quota_handle *init_io(struct mntent *mnt, int type, int fmt, int flags) - } - } - if (!QIO_ENABLED(h) || flags & IOI_OPENFILE) { /* Need to open file? */ -+ if (QIO_ENABLED(h)) { /* Kernel uses same file? */ -+ unsigned int cmd = -+ (kernel_iface == IFACE_GENERIC) ? Q_SYNC : Q_6_5_SYNC; -+ if (quotactl(QCMD(cmd, h->qh_type), h->qh_quotadev, -+ 0, NULL) < 0) { -+ die(4, _("Cannot sync quotas on device %s: %s\n"), -+ h->qh_quotadev, strerror(errno)); -+ } -+ } - /* We still need to open file for operations like 'repquota' */ - if ((fd = open(qfname, QIO_RO(h) ? O_RDONLY : O_RDWR)) < 0) { - errstr(_("Cannot open quotafile %s: %s\n"), -diff --git a/quotaio_v1.c b/quotaio_v1.c -index 0edbc16..1533ffc 100644 ---- a/quotaio_v1.c -+++ b/quotaio_v1.c -@@ -348,11 +348,6 @@ static int v1_scan_dquots(struct quota_handle *h, int (*process_dquot) (struct d - struct dquot *dquot = get_empty_dquot(); - qid_t id = 0; - -- if (QIO_ENABLED(h)) /* Kernel uses same file? */ -- if (quotactl(QCMD((kernel_iface == IFACE_GENERIC) ? Q_SYNC : Q_6_5_SYNC, h->qh_type), -- h->qh_quotadev, 0, NULL) < 0) -- die(4, _("Cannot sync quotas on device %s: %s\n"), h->qh_quotadev, -- strerror(errno)); - memset(dquot, 0, sizeof(*dquot)); - dquot->dq_h = h; - lseek(h->qh_fd, 0, SEEK_SET); -diff --git a/quotaio_v2.c b/quotaio_v2.c -index 2e3c725..38440e7 100644 ---- a/quotaio_v2.c -+++ b/quotaio_v2.c -@@ -484,11 +484,6 @@ static int v2_commit_dquot(struct dquot *dquot, int flags) - - static int v2_scan_dquots(struct quota_handle *h, int (*process_dquot) (struct dquot *, char *)) - { -- if (QIO_ENABLED(h)) /* Kernel uses same file? */ -- if (quotactl(QCMD((kernel_iface == IFACE_GENERIC) ? Q_SYNC : Q_6_5_SYNC, h->qh_type), -- h->qh_quotadev, 0, NULL) < 0) -- die(4, _("Cannot sync quotas on device %s: %s\n"), h->qh_quotadev, -- strerror(errno)); - return qtree_scan_dquots(h, process_dquot); - } - --- -1.7.4 - diff --git a/quota-4.00_pre1-fixup-typos-in-manpages.patch b/quota-4.00_pre1-fixup-typos-in-manpages.patch deleted file mode 100644 index 32c2096..0000000 --- a/quota-4.00_pre1-fixup-typos-in-manpages.patch +++ /dev/null @@ -1,48 +0,0 @@ -From e705c30d5f3758893eaa54be6867f5b6c50b8e24 Mon Sep 17 00:00:00 2001 -From: jkar8572 -Date: Mon, 22 Feb 2010 20:43:59 +0000 -Subject: [PATCH] * fixup typos in manpages (Michael Meskes) - ---- - Changelog | 3 +++ - quota.1 | 2 +- - quotacheck.8 | 2 +- - 3 files changed, 5 insertions(+), 2 deletions(-) - -diff --git a/Changelog b/Changelog -index c2931a6..6fcb056 100644 ---- a/Changelog -+++ b/Changelog -@@ -1,3 +1,6 @@ -+Changes in quota-tools from 3.17 to 4.00-pre2 -+* fixup typos in manpages (Michael Meskes) -+ - Changes in quota-tools from 3.17 to 4.00-pre1 - * don't try to set inode flags when getting them failed (Michalski Wojciech) - * added liblber to the list of libraries needed for LDAP support (Michael Meskes) -diff --git a/quota.1 b/quota.1 -index 705629c..0dd79a4 100644 ---- a/quota.1 -+++ b/quota.1 -@@ -187,4 +187,4 @@ default filesystems - .BR quotaon (8), - .BR quota_nld (8), - .BR repquota (8), --.DR warnquota (8) -+.BR warnquota (8) -diff --git a/quotacheck.8 b/quotacheck.8 -index ed23e73..fe020f4 100644 ---- a/quotacheck.8 -+++ b/quotacheck.8 -@@ -17,7 +17,7 @@ quotacheck \- scan a filesystem for disk usage, create, check and repair quota f - .B quotacheck - examines each filesystem, builds a table of current disk usage, and - compares this table against that recorded in the disk quota file for the --filesystem (this step is ommitted if option -+filesystem (this step is omitted if option - .B -c - is specified). If any inconsistencies are detected, both the quota file - and the current system copy of the incorrect quotas are updated (the --- -1.7.4 - diff --git a/quota-4.00_pre1-quotactl_null_corruption.patch b/quota-4.00_pre1-quotactl_null_corruption.patch deleted file mode 100644 index 3e84863..0000000 --- a/quota-4.00_pre1-quotactl_null_corruption.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 940aecfcffe12b565ff0e06d1b6c838a86dfbdd0 Mon Sep 17 00:00:00 2001 -From: jkar8572 -Date: Tue, 4 May 2010 12:37:39 +0000 -Subject: [PATCH] * avoid memory corruption of NULL address (Petr Pisar) - -Petr Pisar: Upstream patch without Changelog lines. - -diff --git a/quotasys.c b/quotasys.c -index 8df5e3b..cce5787 100644 ---- a/quotasys.c -+++ b/quotasys.c -@@ -746,9 +746,12 @@ void init_kernel_interface(void) - kernel_qfmt_num = 0; - if (!stat("/proc/fs/xfs/stat", &st)) - kernel_qfmt[kernel_qfmt_num++] = QF_XFS; -- else -- if (!quotactl(QCMD(Q_XGETQSTAT, 0), NULL, 0, NULL) || (errno != EINVAL && errno != ENOSYS)) -+ else { -+ fs_quota_stat_t dummy; -+ -+ if (!quotactl(QCMD(Q_XGETQSTAT, 0), NULL, 0, (void *)&dummy) || (errno != EINVAL && errno != ENOSYS)) - kernel_qfmt[kernel_qfmt_num++] = QF_XFS; -+ } - /* Detect new kernel interface; Assume generic interface unless we can prove there is not one... */ - if (!stat("/proc/sys/fs/quota", &st) || errno != ENOENT) { - kernel_iface = IFACE_GENERIC; --- -1.7.3.2 - diff --git a/quota.spec b/quota.spec index b96ecae..dc9ecb1 100644 --- a/quota.spec +++ b/quota.spec @@ -5,7 +5,7 @@ Name: quota Summary: System administration tools for monitoring users' disk usage Epoch: 1 Version: 4.00 -Release: 0.17.pre1%{?dist} +Release: 1%{?dist} License: BSD and GPLv2+ URL: http://sourceforge.net/projects/linuxquota/ Group: System Environment/Base @@ -14,77 +14,28 @@ Requires: quota-nls = %{epoch}:%{version}-%{release} Conflicts: kernel < 2.4 BuildRequires: e2fsprogs-devel gettext tcp_wrappers-devel nss-devel BuildRequires: openldap-devel openssl-devel dbus-devel libnl-devel -Source0: http://downloads.sourceforge.net/linuxquota/%{name}-%{version}-pre1.tar.gz +Source0: http://downloads.sourceforge.net/linuxquota/%{name}-%{version}.tar.gz Source1: quota_nld.init Source2: quota_nld.sysconfig -# Part (LDAP comments) accepted into quota-4.00_pre2 -# (378a64006bb1e818e84a1c77808563b802b028fa) -Patch0: quota-3.06-warnquota.patch +# Not accepted changes (378a64006bb1e818e84a1c77808563b802b028fa) +# Some of the lines have been superseded by other commits probably. +Patch0: quota-4.00-warnquota.patch # 4.00_pre2 provides --enable-strip-binaries configure option defulting to yes # TODO: Use the option instead of the patch -Patch1: quota-3.06-no-stripping.patch +Patch1: quota-4.00-no-stripping.patch Patch2: quota-3.06-man-page.patch Patch3: quota-3.06-pie.patch Patch4: quota-3.13-wrong-ports.patch -# Included in upstream 4.00_pre2 -Patch5: quota-3.16-helpoption.patch -# Included in upstream 4.00_pre2 -Patch6: quota-3.16-quotaoffhelp.patch Patch8: quota-3.17-ftbfs.patch -# Bug #528581, remove in upstream 4.00 -Patch9: quota-4.00_pre1-quotactl_null_corruption.patch -# Included in upstream 4.00_pre2 -Patch10: quota-4.00_pre1-add-gfs2-support.patch -# In upstream 4.00_pre2 -Patch11: quota-4.00_pre1-Add-always-resolve-to-quota.1-manpage.patch -# In upstream 4.00_pre2 -Patch12: quota-4.00_pre1-Document-always-resolve-at-edquota-and-setquota.patch # Bug #667757 Patch13: quota-4.00_pre1-Make-RPC-block-factor-dynamic.patch -# Bug #668688, included in upstream 4.00_pre2 -Patch14: quota-4.00_pre1-Check-whether-set-limits-fit-into-the-range-supporte.patch # Bug #668691 Patch15: quota-4.00_pre1-Check-set-limits-fit-into-the-range-supported-by-RPC.patch -# In upstream 4.00_pre2 -Patch16: quota-4.00_pre1-fixup-typos-in-manpages.patch -# In upstream 4.00_pre2 -Patch17: quota-4.00_pre1-Added-reference-to-setquota-to-quota-1-manpage.patch -# In upstream 4.00_pre2 -Patch18: quota-4.00_pre1-Correct-no-mixed-pathnames-documentation.patch # Bug #634137, submitted to upstream Patch19: quota-4.00_pre1-Store-PID-of-quota_nld.patch -# Bug #596794, in upstream 4.00_pre2 -Patch20: quota-4.00_pre1-Add-quotasync-tool.patch -# Bug #596794, in upstream 4.00_pre2 -Patch21: quota-4.00_pre1-Implement-quotacheck-for-GFS2.patch -# Bug 668688, in upstream 4.00_pre2 -Patch22: quota-4.00_pre1-Initialize-vfsold-block-and-inode-value-boundries-fo.patch -# In upstream 4.00_pre2 -Patch23: quota-4.00_pre1-Explain-meaning-of-the-second-column-in-repquota-out.patch -# In upstream 4.00_pre2 -Patch24: quota-4.00_pre1-Make-RPC-handle-properly-host-names-with-colons.patch # In upstream 4.00_pre2, SF#3195046 -Patch25: quota-4.00_pre1-Do-not-use-real-domains-in-warnquota-example.patch -# In upstream 4.00_pre2, SF#3202953 -Patch26: quota-4.00_pre1-Fix-synopsis-and-properly-report-errors-during-remot.patch -# In upstream 4.00_pre2, SF#3202953 -Patch27: quota-4.00_pre1-Forbid-grace-time-setting-over-RPC.patch -# In upstream 4.00_pre2, SF#3202953 -Patch28: quota-4.00_pre1-Reverse-setgrace-condition.patch -# In upstream 4.00_pre2, SF#3206267 -Patch29: quota-4.00_pre1-Fix-ddquot-buffer-leak.patch -# In upstream 4.00_pre2, bug #689458 -Patch30: quota-4.00_pre1-fix-repquota-to-get-latest-quota-info-header.patch -# In upstream 4.00_pre2, bug #695409 -Patch31: quota-4.00_pre1-Initialize-v2r1-ddquot-padding-in-dump.patch -# In upstream 4.00_pre2 -Patch32: quota-4.00_pre1-We-shouldn-t-pass-NULL-to-XGETQSTAT-quotactl-since-k.patch -# In upstream 4.00_pre2 (SF#3300978), bug #703567 -Patch33: quota-4.00_pre1-Make-dirname-static.patch -# In upstream 4.00_pre2 (SF#3347047), bug #717982 -Patch34: quota-4.00_pre1-Report-quotacheck-failures-by-return-code.patch -# In upstream 4.00_pre2 (SF#3347047), bug #717982 -Patch35: quota-4.00_pre1-get_qf_name-does-not-check-quota-file-presence.patch +# Can be squashed with quota-4.00-warnquota.patch +Patch25: quota-4.00-Do-not-use-real-domains-in-warnquota-example.patch # In upstream after 4.00 (SF#3393151), bug #731622 Patch36: quota-4.00-Do-not-report-missing-utmp-record-to-syslog.patch @@ -163,36 +114,11 @@ Linux/UNIX environment. %patch3 -p1 %endif %patch4 -p1 -%patch5 -p1 -%patch6 -p1 -b .usage %patch8 -p1 -%patch9 -p1 -b .quotactl_null_corruption -%patch10 -p1 -b .gfs2 -%patch11 -p1 -b .document_always_resolve_quota -%patch12 -p1 -b .document_always_resolve_setquota %patch13 -p1 -b .rpc_block_factor_dynamic -%patch14 -p1 -b .check_set_limits %patch15 -p1 -b .check_set_limits_rpc -%patch16 -p1 -b .typos_in_manpages -%patch17 -p1 -b .reference_to_setquota_doc -%patch18 -p1 -b .mixed_pathnames_doc %patch19 -p1 -b .store_pid -%patch20 -p1 -b .add_quotasync -%patch21 -p1 -b .gfs2_quotacheck -%patch22 -p1 -b .inizialize_vfsold_boundries -%patch23 -p1 -b .explain_second_column_of_repquota -%patch24 -p1 -b .hostnames_with_columns %patch25 -p1 -b .warnquota_domains -%patch26 -p1 -b .fix_grace_synopsis -%patch27 -p1 -b .forbid_rpc_grace_time -%patch28 -p1 -b .reverse_setgrace_condition -%patch29 -p1 -b .fix_ddquot_leak -%patch30 -p1 -b .repquota_latest_info -%patch31 -p1 -b .initizalize_ddquot_paddding -%patch32 -p1 -b .do_not_pass_null_to_XGETQSTAT -%patch33 -p1 -b .static_dirname -%patch34 -p1 -b .report_quotacheck_failures -%patch35 -p1 -b .improve_quotacheck_message %patch36 -p1 -b .suppress_missing_utmp # quotactl(2) moved into `man-pages' package (bug #640590) rm -f quotactl.2 @@ -305,6 +231,9 @@ fi %changelog +* Tue Aug 23 2011 Petr Pisar - 1:4.00-1 +- 4.00 bump + * Thu Aug 18 2011 Petr Pisar - 1:4.00-0.17.pre1 - Do not report missing utmp record to syslog (bug #731622) diff --git a/sources b/sources index 1c8b5e5..c62d265 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -ef9d66e8a968ecffd2d9df648fa8ada2 quota-4.00-pre1.tar.gz +975f587ff761a60ac25dbe6c00865925 quota-4.00.tar.gz