summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/install/NEWS2
-rw-r--r--perl-install/modules.pm26
2 files changed, 24 insertions, 4 deletions
diff --git a/perl-install/install/NEWS b/perl-install/install/NEWS
index 347b266e5..9ebf87867 100644
--- a/perl-install/install/NEWS
+++ b/perl-install/install/NEWS
@@ -1,3 +1,5 @@
+- fix detecting usb drives (#13395)
+
Version 10.4.128 - 3 April 2007, by Pascal "Pixel" Rigaux
- don't configure /etc/kde/kdm/kdmrc if it doesn't exist
diff --git a/perl-install/modules.pm b/perl-install/modules.pm
index 6ba7b3ee2..e0492c086 100644
--- a/perl-install/modules.pm
+++ b/perl-install/modules.pm
@@ -55,6 +55,21 @@ sub module_is_available {
find { m!/\Q$module\E\.k?o! } cat_($::prefix . '/lib/modules/' . c::kernel_version() . '/modules.dep');
}
+sub post_2007_1_fuzzy_pidofs {
+ my ($regexp) = @_;
+ grep {
+ if (/^(\d+)$/) {
+ my $s = MDK::Common::File::cat_("/proc/$_/cmdline") ||
+ readlink("/proc/$_/exe") ||
+ MDK::Common::File::cat_("/proc/$_/stat") =~ /\s(\S+)/ && $1 ||
+ '';
+ $s =~ /$regexp/;
+ } else {
+ 0;
+ }
+ } MDK::Common::File::all('/proc');
+}
+
#-###############################################################################
#- module loading
#-###############################################################################
@@ -75,11 +90,14 @@ sub load_raw {
} elsif (member('usb-storage', @$l)) {
#- usb-storage is only modprobed when we know there is some scsi devices
#- so trying hard to wait for devices to be detected
- my $retry = 10;
- sleep 1; #- TOREMOVE for compatibility with previous behaviour: wait at least 2 seconds
- while ($retry--) {
+
+ #- first sleep the minimum time usb-stor-scan takes
+ sleep 5; #- 5 == /sys/module/usb_storage/parameters/delay_use
+ # then wait for usb-stor-scan to complete
+ my $retry = 0;
+ while ($retry++ < 10) {
+ post_2007_1_fuzzy_pidofs('usb-stor-scan') or last;
sleep 1;
- last if all('/sys/bus/scsi/devices');
log::l("waiting for usb-storage devices to appear (retry = $retry)");
}
}