Use better description for SATA devices masquerading as SCSI.
authorJamie Cameron <jcameron@webmin.com>
Fri, 19 Feb 2010 19:23:42 +0000 (11:23 -0800)
committerJamie Cameron <jcameron@webmin.com>
Fri, 19 Feb 2010 19:23:42 +0000 (11:23 -0800)
fdisk/fdisk-lib.pl
mount/linux-lib.pl

index 33a4ca7..a15039f 100755 (executable)
@@ -230,7 +230,8 @@ while(<FDISK>) {
                next if (@cdstat && $st[1] == $cdstat[1]);
                if ($disk->{'device'} =~ /\/sd([a-z]+)$/) {
                        # Old-style SCSI disk
-                       $disk->{'desc'} = &text('select_device', 'SCSI',uc($1));
+                       $disk->{'desc'} = &text('select_device', 'SCSI',
+                                               uc($1));
                        local ($dscsi) = grep { $_->{'dev'} eq "sd$1" } @dscsi;
                        $disk->{'scsi'} = $dscsi ? &indexof($dscsi, @dscsi)
                                                 : ord(uc($1))-65;
@@ -432,6 +433,14 @@ foreach $d (@disks) {
                                $d->{'scsiid'} = int($2);
                                }
                        }
+               if ($d->{'model'} =~ /ATA/) {
+                       # Fake SCSI disk, actually IDE
+                       $d->{'scsi'} = 0;
+                       $d->{'desc'} =~ s/SCSI/SATA/g;
+                       foreach my $p (@{$d->{'parts'}}) {
+                               $p->{'desc'} =~ s/SCSI/SATA/g;
+                               }
+                       }
                }
        }
 
index f284a63..dbfb58b 100755 (executable)
@@ -2504,6 +2504,23 @@ return @rv;
 # Converts a device name to a human-readable form
 sub device_name
 {
+# First try to get name from fdisk module, as it knowns better about IDE
+# and SCSI devices
+if (&foreign_check("fdisk")) {
+       &foreign_require("fdisk");
+       my @disks = &fdisk::list_disks_partitions();
+       foreach my $d (@disks) {
+               if ($d->{'device'} eq $_[0]) {
+                       return $d->{'desc'};
+                       }
+               foreach my $p (@{$d->{'parts'}}) {
+                       if ($p->{'device'} eq $_[0]) {
+                               return $p->{'desc'};
+                               }
+                       }
+               }
+       }
+
 if (!$text{'select_part'}) {
        local %flang = &load_language('fdisk');
        foreach $k (keys %flang) {