diff --git a/SOURCES/quota-4.01-Prevent-from-grace-period-overflow-in-RPC-transport.patch b/SOURCES/quota-4.01-Prevent-from-grace-period-overflow-in-RPC-transport.patch
new file mode 100644
index 0000000..c6c4ad0
--- /dev/null
+++ b/SOURCES/quota-4.01-Prevent-from-grace-period-overflow-in-RPC-transport.patch
@@ -0,0 +1,174 @@
+From d850a85b2374fe1b83779c0fc61463057eeca4ab Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
+Date: Mon, 24 Feb 2014 15:54:32 +0100
+Subject: [PATCH] Prevent from grace period overflow in RPC transport
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The RPC transports grace time as unsigned int, but the value stored
+there and retrivedd from is treated as singed difference against current time.
+
+This leads to overflow after expiring the grace time which is
+presented as an enourmously large grace time instead of "none" in the
+quota(1) output.
+
+There also possible an overflow when the time difference is still
+bigger than an int can represent.
+
+This first issue is solved by explicit type cast to/from int32_t, the
+second issue is fixes by limiting the value into int32_t range.
+
+<https://sourceforge.net/p/linuxquota/bugs/115/>
+
+Signed-off-by: Petr Písař <ppisar@redhat.com>
+Signed-off-by: Jan Kara <jack@suse.cz>
+---
+ quotasys.c      | 13 +++++++++++++
+ quotasys.h      |  4 ++++
+ rquota_client.c | 10 ++++++----
+ rquota_server.c |  9 +++++----
+ 4 files changed, 28 insertions(+), 8 deletions(-)
+
+diff --git a/quotasys.c b/quotasys.c
+index 120125a..a5737a8 100644
+--- a/quotasys.c
++++ b/quotasys.c
+@@ -23,6 +23,7 @@
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <sys/vfs.h>
++#include <stdint.h>
+ 
+ #include "pot.h"
+ #include "bylabel.h"
+@@ -323,6 +324,18 @@ void difftime2str(time_t seconds, char *buf)
+ }
+ 
+ /*
++ * Round difference of two time_t values into int32_t
++ */
++int32_t difftime2net(time_t later, time_t sooner)
++{
++	if ((later - sooner) > INT32_MAX)
++		return INT32_MAX;
++	if ((later - sooner) < INT32_MIN)
++		return INT32_MIN;
++	return (later - sooner);
++}
++
++/*
+  * Convert time to printable form
+  */
+ void time2str(time_t seconds, char *buf, int flags)
+diff --git a/quotasys.h b/quotasys.h
+index e79f8cd..d8d79fe 100644
+--- a/quotasys.h
++++ b/quotasys.h
+@@ -8,6 +8,7 @@
+ #define GUARD_QUOTASYS_H
+ 
+ #include <sys/types.h>
++#include <inttypes.h>
+ #include "mntopt.h"
+ #include "quota.h"
+ 
+@@ -100,6 +101,9 @@ int util2kernfmt(int fmt);
+ /* Convert time difference between given time and current time to printable form */
+ void difftime2str(time_t, char *);
+ 
++/* Round difference of two time_t values into int32_t */
++int32_t difftime2net(time_t later, time_t sooner);
++
+ /* Convert time to printable form */
+ void time2str(time_t, char *, int);
+ 
+diff --git a/rquota_client.c b/rquota_client.c
+index e26e066..9d4055e 100644
+--- a/rquota_client.c
++++ b/rquota_client.c
+@@ -32,11 +32,13 @@
+ #include <string.h>
+ #include <signal.h>
+ #include <time.h>
++#include <stdint.h>
+ 
+ #include "mntopt.h"
+ #include "rquota.h"
+ #include "common.h"
+ #include "quotaio.h"
++#include "quotasys.h"
+ 
+ #if defined(RPC)
+ 
+@@ -54,11 +56,11 @@ static inline void clinet2utildqblk(struct util_dqblk *u, struct rquota *n)
+ 	u->dqb_curspace = ((qsize_t)n->rq_curblocks) * n->rq_bsize;
+ 	time(&now);
+ 	if (n->rq_btimeleft)
+-		u->dqb_btime = n->rq_btimeleft + now;
++		u->dqb_btime = (int32_t)n->rq_btimeleft + now;
+ 	else
+ 		u->dqb_btime = 0;
+ 	if (n->rq_ftimeleft)
+-		u->dqb_itime = n->rq_ftimeleft + now;
++		u->dqb_itime = (int32_t)n->rq_ftimeleft + now;
+ 	else
+ 		u->dqb_itime = 0;
+ }
+@@ -76,11 +78,11 @@ static inline void cliutil2netdqblk(struct sq_dqblk *n, struct util_dqblk *u)
+ 	n->rq_curblocks = toqb(u->dqb_curspace);
+ 	n->rq_curfiles = u->dqb_curinodes;
+ 	if (u->dqb_btime)
+-		n->rq_btimeleft = u->dqb_btime - now;
++		n->rq_btimeleft = difftime2net(u->dqb_btime, now);
+ 	else
+ 		n->rq_btimeleft = 0;
+ 	if (u->dqb_itime)
+-		n->rq_ftimeleft = u->dqb_itime - now;
++		n->rq_ftimeleft = difftime2net(u->dqb_itime, now);
+ 	else
+ 		n->rq_ftimeleft = 0;
+ }
+diff --git a/rquota_server.c b/rquota_server.c
+index bf66e4d..09cf6ed 100644
+--- a/rquota_server.c
++++ b/rquota_server.c
+@@ -25,6 +25,7 @@
+ #include <stdio.h>
+ #include <syslog.h>
+ #include <time.h>
++#include <stdint.h>
+ 
+ #include "mntopt.h"
+ #include "quotaops.h"
+@@ -82,11 +83,11 @@ static inline void servnet2utildqblk(struct util_dqblk *u, sq_dqblk * n)
+ 	u->dqb_curspace = ((qsize_t)n->rq_curblocks) << RPC_DQBLK_SIZE_BITS;
+ 	u->dqb_curinodes = n->rq_curfiles;
+ 	if (n->rq_btimeleft)
+-		u->dqb_btime = n->rq_btimeleft + now;
++		u->dqb_btime = (int32_t)n->rq_btimeleft + now;
+ 	else
+ 		u->dqb_btime = 0;
+ 	if (n->rq_ftimeleft)
+-		u->dqb_itime = n->rq_ftimeleft + now;
++		u->dqb_itime = (int32_t)n->rq_ftimeleft + now;
+ 	else
+ 		u->dqb_itime = 0;
+ }
+@@ -127,11 +128,11 @@ static inline void servutil2netdqblk(struct rquota *n, struct util_dqblk *u)
+ 
+ 	time(&now);
+ 	if (u->dqb_btime)
+-		n->rq_btimeleft = u->dqb_btime - now;
++		n->rq_btimeleft = difftime2net(u->dqb_btime, now);
+ 	else
+ 		n->rq_btimeleft = 0;
+ 	if (u->dqb_itime)
+-		n->rq_ftimeleft = u->dqb_itime - now;
++		n->rq_ftimeleft = difftime2net(u->dqb_itime, now);
+ 	else
+ 		n->rq_ftimeleft = 0;
+ }
+-- 
+2.5.0
+
diff --git a/SOURCES/quota-4.02-Skip-NFS-mounts-without-rquotad-RPC-service-silently.patch b/SOURCES/quota-4.02-Skip-NFS-mounts-without-rquotad-RPC-service-silently.patch
new file mode 100644
index 0000000..1a512e2
--- /dev/null
+++ b/SOURCES/quota-4.02-Skip-NFS-mounts-without-rquotad-RPC-service-silently.patch
@@ -0,0 +1,125 @@
+From bffaeb028ee716ed46e5b74a45162f2ef45b2963 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
+Date: Thu, 23 Oct 2014 14:12:01 +0200
+Subject: [PATCH] Skip NFS mounts without rquotad RPC service silently
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+If NFS server does uses quotas, then it's high chance the RCP rquotad
+service is not running at all. Then listing quotas for such NFS mount
+point results into a warning about "connection refused".
+
+This warning can be obtrusive if a host has mounted various mixture of
+NFS exports with and without quotas.
+
+This patch recognizes this special error state (after performing
+a query to a client without running rquotad) and considers such
+server as having quotas disabled. This silents the warning
+effectively.
+
+JK: Some coding style fixes, treat also rpc_set_quota() this way.
+
+Signed-off-by: Petr Písař <ppisar@redhat.com>
+Signed-off-by: Jan Kara <jack@suse.cz>
+---
+ rquota_client.c | 38 ++++++++++++++++++++++++++++++++++----
+ 1 file changed, 34 insertions(+), 4 deletions(-)
+
+diff --git a/rquota_client.c b/rquota_client.c
+index 9d4055e..a3a4ae3 100644
+--- a/rquota_client.c
++++ b/rquota_client.c
+@@ -148,6 +148,8 @@ 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;
+ 
+ 	/*
+ 	 * Initialize with NULL.
+@@ -206,8 +208,11 @@ int rpc_rquota_get(struct dquot *dquot)
+ 		auth_destroy(clnt->cl_auth);
+ 		clnt_destroy(clnt);
+ 	}
+-	else
++	else {
+ 		result = NULL;
++		if (rpc_createerr.cf_stat == RPC_PROGNOTREGISTERED)
++			rquotaprog_not_registered = 1;
++	}
+ 
+ 	if (result == NULL || !result->status) {
+ 		if (dquot->dq_h->qh_type == USRQUOTA) {
+@@ -244,11 +249,21 @@ int rpc_rquota_get(struct dquot *dquot)
+ 				 */
+ 				auth_destroy(clnt->cl_auth);
+ 				clnt_destroy(clnt);
++			} else {
++				result = NULL;
++				if (rpc_createerr.cf_stat == RPC_PROGNOTREGISTERED)
++					    rquotaprog_not_registered = 1;
+ 			}
+ 		}
+ 	}
+ 	free(fsname_tmp);
+-	return rquota_err(result?result->status:-1);
++	if (result)
++		ret = result->status;
++	else if (rquotaprog_not_registered)
++		ret = Q_NOQUOTA;
++	else
++		ret = -1;
++	return rquota_err(ret);
+ }
+ 
+ /*
+@@ -265,6 +280,8 @@ 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. */
+ 	if (check_dquot_range(dquot) < 0)
+@@ -321,8 +338,11 @@ int rpc_rquota_set(int qcmd, struct dquot *dquot)
+ 		auth_destroy(clnt->cl_auth);
+ 		clnt_destroy(clnt);
+ 	}
+-	else
++	else {
+ 		result = NULL;
++		if (rpc_createerr.cf_stat == RPC_PROGNOTREGISTERED)
++			rquotaprog_not_registered = 1;
++	}
+ 
+ 	if (result == NULL || !result->status) {
+ 		if (dquot->dq_h->qh_type == USRQUOTA) {
+@@ -361,11 +381,21 @@ int rpc_rquota_set(int qcmd, struct dquot *dquot)
+ 				 */
+ 				auth_destroy(clnt->cl_auth);
+ 				clnt_destroy(clnt);
++			} else {
++				result = NULL;
++				if (rpc_createerr.cf_stat == RPC_PROGNOTREGISTERED)
++					rquotaprog_not_registered = 1;
+ 			}
+ 		}
+ 	}
+ 	free(fsname_tmp);
+-	return rquota_err(result?result->status:-1);
++	if (result)
++		ret = result->status;
++	else if (rquotaprog_not_registered)
++		ret = Q_NOQUOTA;
++	else
++		ret = -1;
++	return rquota_err(ret);
+ #endif
+ 	return -1;
+ }
+-- 
+1.9.3
+
diff --git a/SOURCES/quota-4.03-Add-support-for-scanning-using-Q_XGETNEXTQUOTA.patch b/SOURCES/quota-4.03-Add-support-for-scanning-using-Q_XGETNEXTQUOTA.patch
new file mode 100644
index 0000000..1eb0d17
--- /dev/null
+++ b/SOURCES/quota-4.03-Add-support-for-scanning-using-Q_XGETNEXTQUOTA.patch
@@ -0,0 +1,92 @@
+From 7367f5d511ec4555fbb7a87c1c1853fd4fd01712 Mon Sep 17 00:00:00 2001
+From: Jan Kara <jack@suse.cz>
+Date: Tue, 26 Jan 2016 14:06:59 +0100
+Subject: [PATCH 2/2] Add support for scanning using Q_XGETNEXTQUOTA
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Add support for scanning of all available quota structures using
+Q_XGETNEXTQUOTA quotactl.
+
+Signed-off-by: Jan Kara <jack@suse.cz>
+Signed-off-by: Petr Písař <ppisar@redhat.com>
+---
+ quotaio_xfs.c | 42 +++++++++++++++++++++++++++++++++++++++---
+ quotaio_xfs.h |  1 +
+ 2 files changed, 40 insertions(+), 3 deletions(-)
+
+diff --git a/quotaio_xfs.c b/quotaio_xfs.c
+index 903c03e..9d90a3e 100644
+--- a/quotaio_xfs.c
++++ b/quotaio_xfs.c
+@@ -191,15 +191,51 @@ static int xfs_get_dquot(struct dquot *dq)
+ 	return 0;
+ }
+ 
++static int xfs_kernel_scan_dquots(struct quota_handle *h,
++		int (*process_dquot)(struct dquot *dquot, char *dqname))
++{
++	struct dquot *dquot = get_empty_dquot();
++	qid_t id = 0;
++	struct xfs_kern_dqblk xdqblk;
++	int ret;
++
++	dquot->dq_h = h;
++	while (1) {
++		ret = quotactl(QCMD(Q_XGETNEXTQUOTA, h->qh_type),
++			       h->qh_quotadev, id, (void *)&xdqblk);
++		if (ret < 0)
++			break;
++
++		xfs_kern2utildqblk(&dquot->dq_dqb, &xdqblk);
++		dquot->dq_id = xdqblk.d_id;
++		ret = process_dquot(dquot, NULL);
++		if (ret < 0)
++			break;
++		id = xdqblk.d_id + 1;
++	}
++	free(dquot);
++
++	if (errno == ENOENT)
++		return 0;
++	return ret;
++}
++
+ /*
+  *	Scan all known dquots and call callback on each
+  */
+ static int xfs_scan_dquots(struct quota_handle *h, int (*process_dquot) (struct dquot *dquot, char *dqname))
+ {
+-	if (!XFS_USRQUOTA(h) && !XFS_GRPQUOTA(h))
+-		return 0;
++	int ret;
++	struct xfs_kern_dqblk xdqblk;
+ 
+-	return generic_scan_dquots(h, process_dquot, xfs_get_dquot);
++	ret = quotactl(QCMD(Q_XGETNEXTQUOTA, h->qh_type), h->qh_quotadev, 0,
++		       (void *)&xdqblk);
++	if (ret < 0 && (errno == ENOSYS || errno == EINVAL)) {
++		if (!XFS_USRQUOTA(h) && !XFS_GRPQUOTA(h))
++			return 0;
++		return generic_scan_dquots(h, process_dquot, xfs_get_dquot);
++	}
++	return xfs_kernel_scan_dquots(h, process_dquot);
+ }
+ 
+ /*
+diff --git a/quotaio_xfs.h b/quotaio_xfs.h
+index 54725b0..2236da4 100644
+--- a/quotaio_xfs.h
++++ b/quotaio_xfs.h
+@@ -46,6 +46,7 @@
+ #define Q_XSETQLIM   XQM_CMD(0x4)	/* set disk limits only */
+ #define Q_XGETQSTAT  XQM_CMD(0x5)	/* returns fs_quota_stat_t struct */
+ #define Q_XQUOTARM   XQM_CMD(0x6)	/* free quota files' space */
++#define Q_XGETNEXTQUOTA	XQM_CMD(0x9)	/* get disk limits and usage >= ID */
+ 
+ /*
+  * fs_disk_quota structure:
+-- 
+2.5.0
+
diff --git a/SOURCES/quota-4.03-Scan-dquots-using-Q_GETNEXTQUOTA.patch b/SOURCES/quota-4.03-Scan-dquots-using-Q_GETNEXTQUOTA.patch
new file mode 100644
index 0000000..38707ed
--- /dev/null
+++ b/SOURCES/quota-4.03-Scan-dquots-using-Q_GETNEXTQUOTA.patch
@@ -0,0 +1,142 @@
+From 85687833434d50e3f5fd4b849e543eb505bf5a20 Mon Sep 17 00:00:00 2001
+From: Jan Kara <jack@suse.cz>
+Date: Tue, 26 Jan 2016 13:10:59 +0100
+Subject: [PATCH 1/2] Scan dquots using Q_GETNEXTQUOTA
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Check for new kernel quotactl Q_GETNEXTQUOTA and if available use it for
+scanning all dquot structures.
+
+Signed-off-by: Jan Kara <jack@suse.cz>
+Signed-off-by: Petr Písař <ppisar@redhat.com>
+---
+ quota.h           | 14 ++++++++++++++
+ quotaio_generic.c | 34 ++++++++++++++++++++++++++++++++++
+ quotaio_generic.h |  4 ++++
+ quotaio_meta.c    | 14 +++++++++++++-
+ 4 files changed, 65 insertions(+), 1 deletion(-)
+
+diff --git a/quota.h b/quota.h
+index 0c38427..0607e04 100644
+--- a/quota.h
++++ b/quota.h
+@@ -63,6 +63,7 @@ typedef int64_t qsize_t;	/* Type in which we store size limitations */
+ #define Q_SETINFO  0x800006	/* set information about quota files */
+ #define Q_GETQUOTA 0x800007	/* get user quota structure */
+ #define Q_SETQUOTA 0x800008	/* set user quota structure */
++#define Q_GETNEXTQUOTA 0x800009	/* get disk limits and usage >= ID */
+ 
+ /*
+  * Quota structure used for communication with userspace via quotactl
+@@ -91,6 +92,19 @@ struct if_dqblk {
+ 	u_int32_t dqb_valid;
+ };
+ 
++struct if_nextdqblk {
++	u_int64_t dqb_bhardlimit;
++	u_int64_t dqb_bsoftlimit;
++	u_int64_t dqb_curspace;
++	u_int64_t dqb_ihardlimit;
++	u_int64_t dqb_isoftlimit;
++	u_int64_t dqb_curinodes;
++	u_int64_t dqb_btime;
++	u_int64_t dqb_itime;
++	u_int32_t dqb_valid;
++	u_int32_t dqb_id;
++};
++
+ /*
+  * Structure used for setting quota information about file via quotactl
+  * Following flags are used to specify which fields are valid
+diff --git a/quotaio_generic.c b/quotaio_generic.c
+index 5001a56..4bdf380 100644
+--- a/quotaio_generic.c
++++ b/quotaio_generic.c
+@@ -161,3 +161,37 @@ int generic_scan_dquots(struct quota_handle *h,
+ 	free(dquot);
+ 	return ret;
+ }
++
++int vfs_scan_dquots(struct quota_handle *h,
++		    int (*process_dquot)(struct dquot *dquot, char *dqname))
++{
++	struct dquot *dquot = get_empty_dquot();
++	qid_t id = 0;
++	struct if_nextdqblk kdqblk;
++	int ret;
++
++	dquot->dq_h = h;
++	while (1) {
++		ret = quotactl(QCMD(Q_GETNEXTQUOTA, h->qh_type),
++			       h->qh_quotadev, id, (void *)&kdqblk);
++		if (ret < 0)
++			break;
++
++		/*
++		 * This is a slight hack but we know struct if_dqblk is a
++		 * subset of struct if_nextdqblk
++		 */
++		generic_kern2utildqblk(&dquot->dq_dqb,
++				       (struct if_dqblk *)&kdqblk);
++		dquot->dq_id = kdqblk.dqb_id;
++		ret = process_dquot(dquot, NULL);
++		if (ret < 0)
++			break;
++		id = kdqblk.dqb_id + 1;
++	}
++	free(dquot);
++
++	if (errno == ENOENT)
++		return 0;
++	return ret;
++}
+diff --git a/quotaio_generic.h b/quotaio_generic.h
+index 5edc11c..a7930f0 100644
+--- a/quotaio_generic.h
++++ b/quotaio_generic.h
+@@ -27,4 +27,8 @@ int generic_scan_dquots(struct quota_handle *h,
+ 			int (*process_dquot)(struct dquot *dquot, char *dqname),
+ 			int (*get_dquot)(struct dquot *dquot));
+ 
++/* Scan all dquots using kernel quotactl to get existing ids */
++int vfs_scan_dquots(struct quota_handle *h,
++		    int (*process_dquot)(struct dquot *dquot, char *dqname));
++
+ #endif
+diff --git a/quotaio_meta.c b/quotaio_meta.c
+index e52b4f4..ad6ff7a 100644
+--- a/quotaio_meta.c
++++ b/quotaio_meta.c
+@@ -8,6 +8,7 @@
+ 
+ #include <string.h>
+ #include <stdlib.h>
++#include <errno.h>
+ 
+ #include <sys/types.h>
+ 
+@@ -55,7 +56,18 @@ static int meta_commit_dquot(struct dquot *dquot, int flags)
+ 
+ static int meta_scan_dquots(struct quota_handle *h, int (*process_dquot)(struct dquot *dquot, char *dqname))
+ {
+-	return generic_scan_dquots(h, process_dquot, vfs_get_dquot);
++	struct if_nextdqblk kdqblk;
++	int ret;
++
++	ret = quotactl(QCMD(Q_GETNEXTQUOTA, h->qh_type), h->qh_quotadev, 0,
++		       (void *)&kdqblk);
++	/*
++	 * Fall back to scanning using passwd if Q_GETNEXTQUOTA is not
++	 * supported
++	 */
++	if (ret < 0 && (errno == ENOSYS || errno == EINVAL))
++		return generic_scan_dquots(h, process_dquot, vfs_get_dquot);
++	return vfs_scan_dquots(h, process_dquot);
+ }
+ 
+ struct quotafile_ops quotafile_ops_meta = {
+-- 
+2.5.0
+
diff --git a/SPECS/quota.spec b/SPECS/quota.spec
index 8c2a7b8..3494379 100644
--- a/SPECS/quota.spec
+++ b/SPECS/quota.spec
@@ -5,7 +5,7 @@ Name: quota
 Summary: System administration tools for monitoring users' disk usage
 Epoch: 1
 Version: 4.01
-Release: 11%{?dist}.1
+Release: 14%{?dist}
 # quota_nld.c, quotaio_xfs.h:       GPLv2
 # bylabel.c copied from util-linux: GPLv2+
 # svc_socket.c copied from glibc:   LGPLv2+
@@ -18,7 +18,7 @@ Requires: tcp_wrappers
 Requires: quota-nls = %{epoch}:%{version}-%{release}
 Requires: rpcbind
 Conflicts: kernel < 2.4
-# nfs-utils used to provide nfs-rquotad.service, bug #1316440
+# nfs-utils used to provide nfs-rquotad.service, bug #1207239
 Conflicts: nfs-utils < 1:1.3.0-0.4.el7
 BuildRequires: e2fsprogs-devel gettext tcp_wrappers-devel
 BuildRequires: openldap-devel dbus-devel libnl-devel
@@ -74,6 +74,17 @@ Patch20: quota-4.01-Add-quotatab-5-manual-page.patch
 Patch21: quota-4.01-Add-warnquota.conf-5-manual-page.patch
 # Submitted to upstream, <https://sourceforge.net/p/linuxquota/patches/39/>
 Patch22: quota-4.01-Improve-rcp.rquota-8-manual-page.patch
+# Do not warn if rquotad RPC service is not registered, bug #1155584,
+# in upstream 4.02
+Patch23: quota-4.02-Skip-NFS-mounts-without-rquotad-RPC-service-silently.patch
+# Query kernel for next quota on file system with hiden quota files,
+# bug #1305968, in upstream after 4.03
+Patch24: quota-4.03-Scan-dquots-using-Q_GETNEXTQUOTA.patch
+# Query kernel for next XFS quota, bug #1305968, in upstream after 4.03
+Patch25: quota-4.03-Add-support-for-scanning-using-Q_XGETNEXTQUOTA.patch
+# Prevent from grace period overflow in RPC transport, bug #1072858,
+# in upstream 4.02
+Patch26: quota-4.01-Prevent-from-grace-period-overflow-in-RPC-transport.patch
 
 %description
 The quota package contains system administration tools for monitoring
@@ -167,6 +178,10 @@ Linux/UNIX environment.
 %patch20 -p1 -b .doc_quotatab
 %patch21 -p1 -b .doc_warnquota
 %patch22 -p1 -b .doc_rquota
+%patch23 -p1 -b .silent_no_rquotad
+%patch24 -p1 -b .getnextquota
+%patch25 -p1 -b .xgetnextquota
+%patch26 -p1 -b .rpc_time
 
 #fix typos/mistakes in localized documentation
 for pofile in $(find ./po/*.p*)
@@ -212,7 +227,7 @@ install -p -m644 -D %{SOURCE2} \
 install -p -m644 -D %{SOURCE3} $RPM_BUILD_ROOT%{_unitdir}/rpc-rquotad.service
 install -p -m644 -D %{SOURCE4} \
     $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/rpc-rquotad
-# For backward compatibilty, bug #1316440
+# For backward compatibilty, bug #1207239
 ln -s rpc-rquotad.service $RPM_BUILD_ROOT%{_unitdir}/nfs-rquotad.service
 
 %find_lang %{name}
@@ -291,11 +306,19 @@ echo '  systemd-sysv-convert --apply quota_nld'
 
 
 %changelog
-* Thu Mar 10 2016 Petr Pisar <ppisar@redhat.com> - 1:4.01-11.1
+* Thu Mar 10 2016 Petr Pisar <ppisar@redhat.com> - 1:4.01-14
+- Add nfs-rquotad.service alias for backward compatibility (bug #1207239)
+- Start rpc-rquotad.service when starting nfs-server.service (bug #1207239)
+
+* Fri Mar 04 2016 Petr Pisar <ppisar@redhat.com> - 1:4.01-13
+- Prevent from grace period overflow in RPC transport (bug #1072858)
+
+* Thu Mar 03 2016 Petr Pisar <ppisar@redhat.com> - 1:4.01-12
+- Do not warn if rquotad RPC service is not registered (bug #1155584)
+- Query kernel for next quota on XFS or file system with hidden quota files
+  (bug #1305968)
 - Add rpc-rquotad.service file which was known as nfs-rquotad.service
-  in nfs-utils (bug #1316440)
-- Add nfs-rquotad.service alias for backward compatibility (bug #1316440)
-- Start rpc-rquotad.service when starting nfs-server.service (bug #1316440)
+  in nfs-utils (bug #1207239)
 
 * Fri Jan 24 2014 Daniel Mach <dmach@redhat.com> - 1:4.01-11
 - Mass rebuild 2014-01-24