Daniel J Blueman [2009-02-12  0:57 +0000]:
> I've produced a complete and tested debdiff at:
> http://quora.org/hive/readahead-list_0.20050517.0220-1ubuntu5.diff.gz

To spare anyone else the fun with discovering the double gzip'ing and
diffing, that's the real debdiff.

Thanks Daniel, will try it out :)

Martin

-- 
Martin Pitt                        | http://www.piware.de
Ubuntu Developer (www.ubuntu.com)  | Debian Developer  (www.debian.org)
diff -u readahead-list-0.20050517.0220/debian/changelog 
readahead-list-0.20050517.0220/debian/changelog
--- readahead-list-0.20050517.0220/debian/changelog
+++ readahead-list-0.20050517.0220/debian/changelog
@@ -1,3 +1,10 @@
+readahead-list (1:0.20050517.0220-1ubuntu5) intrepid; urgency=low
+
+  * Perform readahead asynchronously, after setting background
+    process and I/O priorities.
+
+ -- Daniel J Blueman <[email protected]>  Wed, 12 Feb 2009 23:30:11 
+0000
+
 readahead-list (1:0.20050517.0220-1ubuntu4) intrepid; urgency=low
 
   * Regenerate boot.list using an installation of 20081026, excluding
only in patch2:
unchanged:
--- readahead-list-0.20050517.0220.orig/debian/patches/60-scheduling.patch
+++ readahead-list-0.20050517.0220/debian/patches/60-scheduling.patch
@@ -0,0 +1,51 @@
+--- readahead-list-0.20050517.0220/src/readahead-list.c-orig   2009-02-11 
23:22:38.865366713 +0000
++++ readahead-list-0.20050517.0220/src/readahead-list.c        2009-02-12 
00:28:33.584366942 +0000
+@@ -24,6 +24,7 @@
+ #include <unistd.h>
+ #include <getopt.h>
+ #include <sys/syscall.h>
++#include <sys/syscall.h>
+ #include <sys/ioctl.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+@@ -172,8 +173,6 @@
+       }
+ 
+       close(fd);
+-      /* be nice to other processes now */
+-      sched_yield();
+ #undef __FUNCTION__
+ }
+ 
+@@ -362,10 +361,31 @@
+       if(flag_version || flag_help) {
+               exit(0);
+       }
++      
++      // initialisation complete; background to allow boot-scripts to continue
++      pid_t pid = fork();
++      if (pid == -1) {
++              fprintf(stderr, "failed to fork: %d\n", errno);
++              exit(1);
++      } else if (pid) {
++              // parent process exits, child finishes work
++              exit(0);
++      }
++      
++      // ensure we don't compete for resources with boot scripts
++      // but utilise cpu during I/O wait and vice-versa
++      nice(3);
++#ifdef __NR_ioprio_set
++      syscall(__NR_ioprio_set, 1 /* IOPRIO_WHO_PROCESS, */, getpid(), 3 /* 
IOPRIO_CLASS_IDLE */);
++#else
++      ioprio_set(IOPRIO_WHO_PROCESS, getpid(), IOPRIO_CLASS_IDLE);
++#endif
++
+       // now do the work
+       for (i=optind; i<argc; i++) {
+               process_files(argv[i]);
+       }
++      
+       if (flag_sort)
+               process_sorted_files();
+       return 0;
-- 
Ubuntu-motu mailing list
[email protected]
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-motu

Reply via email to