summaryrefslogtreecommitdiffstats
path: root/master/debian/partition_performance.patch
diff options
context:
space:
mode:
Diffstat (limited to 'master/debian/partition_performance.patch')
-rw-r--r--master/debian/partition_performance.patch36
1 files changed, 36 insertions, 0 deletions
diff --git a/master/debian/partition_performance.patch b/master/debian/partition_performance.patch
new file mode 100644
index 0000000..79fb453
--- /dev/null
+++ b/master/debian/partition_performance.patch
@@ -0,0 +1,36 @@
+Description: Give up scanning partitions after ten consecutive open failures
+ Scanning all the way up to 10000 is excessive and can cause serious
+ performance problems in some configurations.
+Author: Colin Watson <cjwatson@ubuntu.com>
+Bug-Ubuntu: https://bugs.launchpad.net/bugs/787461
+Forwarded: yes
+Applied-Upstream: http://bazaar.launchpad.net/~vcs-imports/grub/grub2-bzr/revision/3320
+Last-Update: 2011-05-27
+
+Index: b/grub-core/kern/emu/hostdisk.c
+===================================================================
+--- a/grub-core/kern/emu/hostdisk.c
++++ b/grub-core/kern/emu/hostdisk.c
+@@ -564,6 +564,7 @@
+ int i;
+ char real_dev[PATH_MAX];
+ struct linux_partition_cache *cache;
++ int missing = 0;
+
+ strcpy(real_dev, dev);
+
+@@ -602,7 +603,13 @@
+
+ fd = open (real_dev, O_RDONLY);
+ if (fd == -1)
+- continue;
++ {
++ if (missing++ < 10)
++ continue;
++ else
++ return 0;
++ }
++ missing = 0;
+ close (fd);
+
+ start = find_partition_start (real_dev);