Restrict libata transition to x86

The kernel configurations for other architectures are not changing, so
there is no need to change their configuration files.  Also, the code
for non-x86 bootloaders is largely untested.


svn path=/dists/sid/linux-2.6/; revision=15411
This commit is contained in:
Ben Hutchings 2010-03-16 22:28:50 +00:00
parent 608fbe2c11
commit 2ef0b9ab6c
3 changed files with 12 additions and 296 deletions

11
debian/NEWS vendored
View File

@ -1,10 +1,11 @@
linux-2.6 (2.6.32-10) unstable; urgency=low
* The old IDE (PATA) drivers are no longer developed, but most PATA
controllers can be handled by new drivers using 'libata', which is
already used for SATA controllers. This release enables all the new
drivers that are considered stable and disables the old drivers that
they replace.
* The old IDE (PATA) drivers are no longer developed. Most PATA
controllers used in PCs (i386 and amd64 architectures) can be handled
by new drivers using 'libata', which is already used for SATA
controllers. This release enables all the new drivers that are
considered stable and disables the old drivers that they replace.
Other architectures should not be affected.
While the old drivers presented device names beginning with 'hd',
libata makes PATA drives appear as SCSI devices and presents device

2
debian/changelog vendored
View File

@ -53,7 +53,7 @@ linux-2.6 (2.6.32-10) UNRELEASED; urgency=low
* Remove /usr/include/drm from linux-libc-dev; let libdrm-dev provide it
again
* [x86] Enable rtl8192su driver using external firmware
* Use libata-based drivers for most PATA controllers (Closes: #444182):
* [x86] Use libata-based drivers for most PATA controllers (Closes: #444182):
- pata_triflex replaces triflex
- pata_atiixp replaces atiixp
- pata_ns87415 replaces ns87415

View File

@ -522,225 +522,12 @@ sub lilo_post {
system('lilo');
}
### SILO
sub silo_post {
system('silo');
}
### ELILO
sub elilo_post {
system('elilo');
}
### PALO
sub palo_next {
my ($file, $expect_opt) = @_;
my $text = <$file>;
if (!defined($text) || $text eq '') {
return ();
}
my $arg = $text;
$arg =~ s/^\s*(?:#.*)?//s;
$arg =~ s/\s*$//;
# I would like to use Getopt::Long but it would make it
# impossible to determine which source text to replace.
if ($expect_opt && $arg =~ /^-(?!-)[?v]*(.)(.+)?$/) {
return ($text, "-$1", $2, defined($2));
} elsif ($expect_opt && $arg =~ /^(--[^=]+)(?:=(.*))?$/) {
return ($text, $1, $2, defined($2));
} elsif ($arg ne '') {
return ($text, undef, $arg, 1);
} else {
return ($text, undef, undef, $expect_opt);
}
}
sub palo_list {
my ($file) = @_;
my $optopt;
my @bdevs;
while (1) {
my ($text, $optarg, $complete);
if (defined($optopt)) {
($text, undef, $optarg, $complete) = palo_next($file, 0);
} else {
($text, $optopt, $optarg, $complete) = palo_next($file, 1);
}
last unless defined($text);
if ($complete && defined($optopt)) {
if ($optopt eq '-c' || $optopt eq '--commandline') {
# If PALO is not configured to use the generic sym-link,
# ignore it
if ($optarg !~ m|^\d+/vmlinux\b|) {
return ();
}
push @bdevs, kernel_list($optarg);
} elsif ($optopt eq '-I' || $optopt eq '--init-partitioned') {
push @bdevs, $optarg;
}
$optopt = undef;
}
if (!defined($optopt) && defined($optarg) && $optarg eq '--') {
last;
}
}
return @bdevs;
}
sub palo_update {
my ($old, $new, $map) = @_;
my $optopt;
my $allow_opts = 1;
while (1) {
my ($text, $optarg, $complete);
if (defined($optopt)) {
($text, undef, $optarg, $complete) = palo_next($old, 0);
} else {
($text, $optopt, $optarg, $complete) = palo_next($old, $allow_opts);
}
last unless defined($text);
if (defined($optopt)) {
if ($optopt eq '-c' || $optopt eq '--commandline') {
$text = "# $text";
if ($complete) {
my $new_cmdline = kernel_update($optarg, $map);
if (!defined($new_cmdline)) {
$new_cmdline = $optarg;
}
$text .= "--commandline=$new_cmdline\n";
}
}
$optopt = undef;
}
$new->print($text);
if (!defined($optopt) && defined($optarg) && $optarg eq '--') {
$allow_opts = 0;
}
}
}
sub palo_post {
system('palo');
}
### delo
sub delo_next {
# Based on getconfig() in config.c
my ($file) = @_;
my $text = <$file>;
if (!defined($text) || $text eq '') {
return ();
}
local $_ = $text;
s/[ \t]*(?:#.*)?\n//;
s/^[ \t]*//;
if (/^([a-z]+)=(.*)$/) {
return ($text, $1, $2);
} else {
return ($text);
}
}
sub delo_sections {
my ($file) = @_;
my @sections;
my $section = {};
while (1) {
my ($text, $name, $value) = delo_next($file);
# If this is EOF or a new section, finish the current section
if (!defined($text) || (defined($name) && $name eq 'label')) {
$section->{is_generic} =
(exists($section->{image}) &&
exists($section->{append}) &&
$section->{image} =~ m|^/vmlinux(?:\.old)?$|);
push @sections, $section;
$section = {};
}
last unless defined($text);
if (defined($name)) {
if ($name eq 'append') {
$value =~ s/^"([^"]*).*/$1/;
}
$section->{$name} = $value;
}
}
return @sections;
}
sub delo_list {
my ($file) = @_;
my ($globals, @entries) = delo_sections($file);
my @bdevs;
if (exists($globals->{boot})) {
push @bdevs, $globals->{boot};
}
for my $entry (@entries) {
if ($entry->{is_generic}) {
push @bdevs, kernel_list($entry->{append});
}
}
return @bdevs;
}
sub delo_update {
my ($old, $new, $map) = @_;
my ($globals, @entries) = delo_sections($old);
my $i = -1;
$old->seek(0, 0);
while (1) {
my ($text, $name, $value) = delo_next($old);
last unless defined($text);
if (defined($name)) {
if ($name eq 'label') {
++$i; # next entry
} elsif ($name eq 'boot' && $i < 0) {
my $new_value = $map->{$value} && id_to_path($map->{$value});
if (defined($new_value)) {
$text = "# $text" . "boot=$new_value\n";
}
} elsif ($name eq 'append' &&
$i >= 0 && $entries[$i]->{is_generic}) {
my $new_cmdline = kernel_update($value, $map);
if (defined($new_cmdline)) {
$text = "# $text" . "append=\"$new_cmdline\"\n";
}
}
}
$new->print($text);
}
}
### extlinux
sub extlinux_old_path {
@ -804,51 +591,6 @@ sub extlinux_post {
system('update-extlinux');
}
### aboot
sub aboot_next {
my ($file) = @_;
my $text = <$file>;
if (!defined($text) || $text eq '') {
return ();
}
if ($text =~ /^([0-9]):([^ ]*) (.*)/) {
return ($text, $1, $2, $3);
} else {
return ($text);
}
}
sub aboot_list {
my ($file) = @_;
my @bdevs;
while (1) {
my ($text, $preset, $kernel, $params) = aboot_next($file);
last unless defined($text);
if (defined($params) && $kernel =~ m|^\d+/vmlinux(?:\.old)?$|) {
push @bdevs, kernel_list($params);
}
}
return @bdevs;
}
sub aboot_update {
my ($old, $new, $map) = @_;
while (1) {
my ($text, $preset, $kernel, $params) = aboot_next($old);
last unless defined($text);
if (defined($params) && $kernel =~ m|^\d+/vmlinux(?:\.old)?$|) {
my $new_params = kernel_update($params, $map);
if (defined($new_params)) {
$text = "# $text" . "$preset:$kernel $new_params\n";
}
}
$new->print($text);
}
}
# udev persistent-cd
sub udev_next {
@ -1087,37 +829,11 @@ my @config_files = ({packages => 'mount',
list => \&lilo_list,
update => \&lilo_update,
post_update => \&lilo_post},
{packages => 'silo',
path => '/etc/silo.conf',
list => \&lilo_list,
update => \&lilo_update,
post_update => \&silo_post},
{packages => 'quik',
path => '/etc/quik.conf',
list => \&lilo_list,
update => \&lilo_update},
{packages => 'yaboot',
path => '/etc/yaboot.conf',
list => \&lilo_list,
update => \&lilo_update},
{packages => 'elilo',
path => '/etc/elilo.conf',
list => \&lilo_list,
update => \&lilo_update,
post_update => \&elilo_post},
{packages => 'palo',
path => '/etc/palo.conf',
list => \&palo_list,
update => \&palo_update,
post_update => \&palo_post},
{packages => 'delo',
path => '/etc/delo.conf',
list => \&delo_list,
update => \&delo_update},
{packages => 'arcboot',
path => '/etc/arcboot.conf',
list => \&delo_list,
update => \&delo_update},
{packages => 'extlinux',
path => extlinux_old_path(),
list => \&extlinux_old_list,
@ -1128,10 +844,6 @@ my @config_files = ({packages => 'mount',
list => \&extlinux_new_list,
update => \&extlinux_new_update,
post_update => \&extlinux_post},
{packages => 'aboot',
path => '/etc/aboot.conf',
list => \&aboot_list,
update => \&aboot_update},
{packages => 'udev',
path => '/etc/udev/rules.d/70-persistent-cd.rules',
needs_update => \&udev_cd_needs_update,
@ -1622,8 +1334,11 @@ sub compare_versions {
return $AptPkg::Config::_config->system->versioning->compare(@_);
}
if ($ARGV[0] eq 'reconfigure' ||
compare_versions($ARGV[1], '2.6.32-10') < 0) {
my $deb_arch = `dpkg --print-architecture`;
chomp $deb_arch;
if (($deb_arch eq 'i386' || $deb_arch eq 'amd64') &&
($ARGV[0] eq 'reconfigure' || compare_versions($ARGV[1], '2.6.32-10') < 0)) {
DebianKernel::DiskId::transition();
}