Fix repquota to get latest quota info header
repquota must synchronize quota files before reading headers from them. Otherwise headers will mismatch following data.
This commit is contained in:
parent
9e8e682b7a
commit
c7197cf4dd
@ -0,0 +1,67 @@
|
||||
From b58944b582722dd3c56893eb4b6c8b8a0291201d Mon Sep 17 00:00:00 2001
|
||||
From: jkar8572 <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
|
||||
|
||||
@ -5,7 +5,7 @@ Name: quota
|
||||
Summary: System administration tools for monitoring users' disk usage
|
||||
Epoch: 1
|
||||
Version: 4.00
|
||||
Release: 0.12.pre1%{?dist}
|
||||
Release: 0.13.pre1%{?dist}
|
||||
License: BSD and GPLv2+
|
||||
URL: http://sourceforge.net/projects/linuxquota/
|
||||
Group: System Environment/Base
|
||||
@ -74,6 +74,8 @@ Patch27: quota-4.00_pre1-Forbid-grace-time-setting-over-RPC.patch
|
||||
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
|
||||
Patch30: quota-4.00_pre1-fix-repquota-to-get-latest-quota-info-header.patch
|
||||
|
||||
|
||||
%description
|
||||
@ -174,6 +176,7 @@ Linux/UNIX environment.
|
||||
%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.patch
|
||||
# quotactl(2) moved into `man-pages' package (bug #640590)
|
||||
rm -f quotactl.2
|
||||
# remove VCS files
|
||||
@ -296,6 +299,9 @@ rm -rf %{buildroot}
|
||||
|
||||
|
||||
%changelog
|
||||
* Mon Mar 21 2011 Petr Pisar <ppisar@redhat.com> - 1:4.00-0.13.pre1
|
||||
- Fix repquota to get latest quota info header
|
||||
|
||||
* Fri Mar 11 2011 Petr Pisar <ppisar@redhat.com> - 1:4.00-0.12.pre1
|
||||
- Fix ddquot buffer leak
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user