]> git.pld-linux.org Git - packages/xfsprogs.git/commitdiff
- rel 2; don't call expensive quota sync auto/th/xfsprogs-3_1_7-2
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Mon, 30 Jan 2012 12:02:09 +0000 (12:02 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    xfsprogs-noquotasync.patch -> 1.1
    xfsprogs.spec -> 1.149

xfsprogs-noquotasync.patch [new file with mode: 0644]
xfsprogs.spec

diff --git a/xfsprogs-noquotasync.patch b/xfsprogs-noquotasync.patch
new file mode 100644 (file)
index 0000000..1c7d1d8
--- /dev/null
@@ -0,0 +1,123 @@
+
+In 2005 commit master-melb:xfs-cmds:23840a from Nathan added calls to
+XFS_QSYNC/Q_XQUOTASYNC to xfs_quota, with the following rather sparse
+description:
+
+ "Issue a quote sync before reporting quota, resolving issue with delayed
+  allocation."
+
+I can't really see a reason for this - we do quota accounting by the time
+we reserve space for the delayed allocation, and while converting the
+reservations might change the quota accounting minimally due to the amount
+of btree blocks used for the bmap btree on large files in generally this
+makes little sense, and on today's large system has a large performance
+impact.  Also only xfs_quota ever did these calls, the generic quota tool
+never did any kind of sync, and of course removing it does not cause
+any regressions in xfstests.
+
+Nathan, I've cced you in case you still remember anything about this,
+although it's fairly unlikely after 6.5 years.  Also if anyone at SGI
+can find anything about the above commits in BugWorks additional feedback
+would be welcome.
+
+Signed-off-by: Christoph Hellwig <hch@lst.de>
+
+Index: xfsprogs-dev/quota/free.c
+===================================================================
+--- xfsprogs-dev.orig/quota/free.c     2012-01-27 11:10:34.000000000 +0000
++++ xfsprogs-dev/quota/free.c  2012-01-27 11:10:42.000000000 +0000
+@@ -167,7 +167,6 @@ projects_free_space_data(
+               return 0;
+       }
+-      xfsquotactl(XFS_QSYNC, dev, type, fsx.fsx_projid, NULL);
+       if (xfsquotactl(XFS_GETQUOTA, dev, type, fsx.fsx_projid, &d) < 0) {
+               perror("XFS_GETQUOTA");
+               close(fd);
+Index: xfsprogs-dev/quota/irix.c
+===================================================================
+--- xfsprogs-dev.orig/quota/irix.c     2012-01-27 11:10:52.000000000 +0000
++++ xfsprogs-dev/quota/irix.c  2012-01-27 11:10:59.000000000 +0000
+@@ -45,8 +45,6 @@ xcommand_to_qcommand(
+               return Q_XGETQSTAT;
+       case XFS_QUOTARM:
+               return Q_XQUOTARM;
+-      case XFS_QSYNC:
+-              return Q_SYNC;
+       }
+       return 0;
+ }
+Index: xfsprogs-dev/quota/linux.c
+===================================================================
+--- xfsprogs-dev.orig/quota/linux.c    2012-01-27 11:11:02.000000000 +0000
++++ xfsprogs-dev/quota/linux.c 2012-01-27 11:11:05.000000000 +0000
+@@ -55,8 +55,6 @@ xcommand_to_qcommand(
+               return Q_XGETQSTAT;
+       case XFS_QUOTARM:
+               return Q_XQUOTARM;
+-      case XFS_QSYNC:
+-              return Q_XQUOTASYNC;
+       }
+       return 0;
+ }
+Index: xfsprogs-dev/quota/quota.c
+===================================================================
+--- xfsprogs-dev.orig/quota/quota.c    2012-01-27 11:10:24.000000000 +0000
++++ xfsprogs-dev/quota/quota.c 2012-01-27 11:10:29.000000000 +0000
+@@ -64,7 +64,6 @@ quota_mount(
+       uint            qflags;
+       int             count;
+-      xfsquotactl(XFS_QSYNC, dev, type, 0, NULL);
+       if (xfsquotactl(XFS_GETQUOTA, dev, type, id, (void *)&d) < 0)
+               return 0;
+Index: xfsprogs-dev/quota/quota.h
+===================================================================
+--- xfsprogs-dev.orig/quota/quota.h    2012-01-27 11:11:10.000000000 +0000
++++ xfsprogs-dev/quota/quota.h 2012-01-27 11:11:20.000000000 +0000
+@@ -41,7 +41,6 @@ enum {
+       XFS_SETQLIM,    /* set disk limits */
+       XFS_GETQSTAT,   /* get quota subsystem status */
+       XFS_QUOTARM,    /* free disk space used by dquots */
+-      XFS_QSYNC,      /* flush delayed allocate space */
+ };
+ /*
+Index: xfsprogs-dev/quota/report.c
+===================================================================
+--- xfsprogs-dev.orig/quota/report.c   2012-01-27 11:09:41.000000000 +0000
++++ xfsprogs-dev/quota/report.c        2012-01-27 11:10:19.000000000 +0000
+@@ -520,10 +520,6 @@ report_any_type(
+       if (type & XFS_USER_QUOTA) {
+               fs_cursor_initialise(dir, FS_MOUNT_POINT, &cursor);
+               while ((mount = fs_cursor_next_entry(&cursor))) {
+-                      if (xfsquotactl(XFS_QSYNC, mount->fs_name,
+-                                              XFS_USER_QUOTA, 0, NULL) < 0
+-                                      && errno != ENOENT && errno != ENOSYS)
+-                              perror("XFS_QSYNC user quota");
+                       report_user_mount(fp, form, mount,
+                                               lower, upper, flags);
+               }
+@@ -531,10 +527,6 @@ report_any_type(
+       if (type & XFS_GROUP_QUOTA) {
+               fs_cursor_initialise(dir, FS_MOUNT_POINT, &cursor);
+               while ((mount = fs_cursor_next_entry(&cursor))) {
+-                      if (xfsquotactl(XFS_QSYNC, mount->fs_name,
+-                                              XFS_GROUP_QUOTA, 0, NULL) < 0
+-                                      && errno != ENOENT && errno != ENOSYS)
+-                              perror("XFS_QSYNC group quota");
+                       report_group_mount(fp, form, mount,
+                                               lower, upper, flags);
+               }
+@@ -542,10 +534,6 @@ report_any_type(
+       if (type & XFS_PROJ_QUOTA) {
+               fs_cursor_initialise(dir, FS_MOUNT_POINT, &cursor);
+               while ((mount = fs_cursor_next_entry(&cursor))) {
+-                      if (xfsquotactl(XFS_QSYNC, mount->fs_name,
+-                                              XFS_PROJ_QUOTA, 0, NULL) < 0
+-                                      && errno != ENOENT && errno != ENOSYS)
+-                              perror("XFS_QSYNC proj quota");
+                       report_project_mount(fp, form, mount,
+                                               lower, upper, flags);
+               }
index 378297914d8a5a2eb42d98c180f030027bee6a4e..50118e496f9943c33223cf57bedbdecef3b0d9ab 100644 (file)
@@ -8,7 +8,7 @@ Summary:        Tools for the XFS filesystem
 Summary(pl.UTF-8):     Narzędzia do systemu plików XFS
 Name:          xfsprogs
 Version:       3.1.7
-Release:       1
+Release:       2
 License:       LGPL v2.1 (libhandle), GPL v2 (the rest)
 Group:         Applications/System
 Source0:       ftp://linux-xfs.sgi.com/projects/xfs/cmd_tars/%{name}-%{version}.tar.gz
@@ -22,6 +22,7 @@ Patch5:               %{name}-diet.patch
 Patch6:                xfsprogs-repair-mem.patch
 Patch7:                xfsprogs-repair-nofutexhang.patch
 Patch8:                xfsprogs-repair-tcmalloc.patch
+Patch9:                %{name}-noquotasync.patch
 URL:           http://www.xfs.org/
 BuildRequires: autoconf
 BuildRequires: automake
@@ -135,6 +136,7 @@ Zbiór komend do użytku z systemem plików XFS, włączając w to mkfs.xfs
 %patch6 -p1
 %patch7 -p1
 %{?with_tcmalloc:%patch8 -p1}
+%patch9 -p1
 
 %build
 %{__aclocal} -I m4
This page took 0.187965 seconds and 4 git commands to generate.