[poky] [PATCH 2/4] rpm: Avoid fsync when writing files

Mark Hatle mark.hatle at windriver.com
Tue Feb 15 21:12:41 PST 2011


By default RPM strives for the safest possible file creation and
enforces fsync on each file.  This changes that default by backporting
the fsync disabled from the latest CVS snapshot.

This will cut a few minutes off the rootfs generation using RPM.

Signed-off-by: Mark Hatle <mark.hatle at windriver.com>
---
 meta/recipes-devtools/rpm/rpm/rpm-nofsync.patch |   34 +++++++++++++++++++++++
 meta/recipes-devtools/rpm/rpm_5.4.0.bb          |    1 +
 2 files changed, 35 insertions(+), 0 deletions(-)
 create mode 100644 meta/recipes-devtools/rpm/rpm/rpm-nofsync.patch

diff --git a/meta/recipes-devtools/rpm/rpm/rpm-nofsync.patch b/meta/recipes-devtools/rpm/rpm/rpm-nofsync.patch
new file mode 100644
index 0000000..33039ad
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/rpm-nofsync.patch
@@ -0,0 +1,34 @@
+Backport from RPM 5.4.1 CVS, disabled fsync.
+
+Signed-off-by: Mark Hatle <mark.hatle at windriver.com>
+
+diff -ur rpm-5.4.0.orig/CHANGES rpm-5.4.0/CHANGES
+--- rpm-5.4.0.orig/CHANGES	2010-12-29 07:51:38.000000000 -0600
++++ rpm-5.4.0/CHANGES	2011-02-15 20:54:27.021926840 -0600
+@@ -1,4 +1,5 @@
+ 5.4.0 -> 5.4.1:
++    - jbj: remove fsync(2) after file install, its intolerably slow.
+ 
+ 5.3.7 -> 5.4.0:
+     - jbj: remove markReplacedFiles.
+diff -ur rpm-5.4.0.orig/lib/fsm.c rpm-5.4.0/lib/fsm.c
+--- rpm-5.4.0.orig/lib/fsm.c	2009-12-10 12:52:18.000000000 -0600
++++ rpm-5.4.0/lib/fsm.c	2011-02-15 20:55:04.372938221 -0600
+@@ -1017,7 +1017,17 @@
+ 	    (void) fsmNext(fsm, IOSM_NOTIFY);
+     }
+ 
++#ifdef DYING
++/* Measurements from installing kernel-source package:
++ * +fsync
++ *     total:               1      0.000000 MB    640.854524 secs
++ * +fdatasync
++ *     total:               1      0.000000 MB    419.983200 secs
++ * w/o fsync/fdsatasync:
++ *     total:               1      0.000000 MB     12.492918 secs
++ */
+     xx = fsync(Fileno(fsm->wfd));
++#endif
+ 
+     if (st->st_size > 0 && (fsm->fdigest || fsm->digest)) {
+ 	void * digest = NULL;
diff --git a/meta/recipes-devtools/rpm/rpm_5.4.0.bb b/meta/recipes-devtools/rpm/rpm_5.4.0.bb
index 93951d2..45dd4e1 100644
--- a/meta/recipes-devtools/rpm/rpm_5.4.0.bb
+++ b/meta/recipes-devtools/rpm/rpm_5.4.0.bb
@@ -54,6 +54,7 @@ SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.0-0.20101229.src.rpm;ex
 	   file://header-include-fix.patch \
 	   file://rpm-platform.patch \
 	   file://rpm-showrc.patch \
+	   file://rpm-nofsync.patch \
 	  "
 
 #           file://hdraddorappend.patch \
-- 
1.7.3.4




More information about the poky mailing list