More work on parted support
authorJamie Cameron <jcameron@webmin.com>
Wed, 25 May 2011 07:30:51 +0000 (00:30 -0700)
committerJamie Cameron <jcameron@webmin.com>
Wed, 25 May 2011 07:30:51 +0000 (00:30 -0700)
fdisk/edit_disk.cgi
fdisk/edit_part.cgi
fdisk/fdisk-lib.pl
fdisk/help/A.ru_RU.html [new file with mode: 0644]
fdisk/help/K.ru_RU.html [new file with mode: 0644]
fdisk/help/S.ru_RU.html [new file with mode: 0644]
fdisk/help/W.ru_RU.html [new file with mode: 0644]
fdisk/help/X.ru_RU.html [new file with mode: 0644]
fdisk/help/a.ru_RU.html [new file with mode: 0644]
fdisk/help/r.ru_RU.html [new file with mode: 0644]
fdisk/lang/en

index a5da89a..c6a36dc 100755 (executable)
@@ -17,8 +17,8 @@ $d || &error($text{'disk_egone'});
 foreach $p (@parts) {
        $usedpri++ if ($p->{'number'} <= 4);
        $extended++ if ($p->{'extended'});
-       if ($p->{'end'} > $d->{'cylinders'}-1) {
-               $d->{'cylinders'} = $p->{'end'}+1;
+       if ($p->{'end'} > $d->{'cylinders'}) {
+               $d->{'cylinders'} = $p->{'end'};
                }
        if (!$p->{'extended'} && $stat[2] &&
            &indexof($p->{'type'}, @space_type) >= 0 &&
index 14f438f..73f7bc9 100755 (executable)
@@ -115,7 +115,8 @@ if ($pinfo->{'extended'} || $in{'new'} == 3) {
        }
 else {
        print &ui_table_row($text{'edit_type'},
-               &ui_select("type", $in{'new'} ? 83 : $pinfo->{'type'},
+               &ui_select("type",
+                          $in{'new'} ? &default_tag() : $pinfo->{'type'},
                           [ map { [ $_, &tag_name($_) ] }
                                 (sort { &tag_name($a) cmp &tag_name($b) }
                                       &list_tags()) ]));
index 4036362..ab4b47a 100755 (executable)
@@ -405,11 +405,11 @@ while(<FDISK>) {
                $part->{'desc'} = &partition_description($part->{'device'});
                push(@{$disk->{'parts'}}, $part);
                }
-       elsif (/^\s*(\d+)\s+(\d+)cyl\s+(\d+)cyl\s+(\d+)cyl\s+(primary|logical|extended)/) {
+       elsif (/^\s*(\d+)\s+(\d+)cyl\s+(\d+)cyl\s+(\d+)cyl\s+(primary|logical|extended)\s*(\S*)/) {
                # Partition within the current disk from parted
                local $part = { 'number' => $1,
                                'device' => $disk->{'device'}.$1,
-                               'type' => "XXX",
+                               'type' => $6,
                                'start' => $2+1,
                                'end' => $3+1,
                                'blocks' => $4 * $disk->{'cylsize'},
@@ -575,9 +575,8 @@ sub create_partition
 my ($disk, $part, $start, $end, $type) = @_;
 if ($has_parted) {
        # Using parted
-       # XXX partition type
        my $pe = $part > 4 ? "logical" : "primary";
-       my $cmd = "parted ".$disk." unit cyl mkpart ".$pe." ".$start." ".$end;
+       my $cmd = "parted ".$disk." unit cyl mkpartfs ".$pe." ".$type." ".($start-1)." ".$end;
        my $out = &backquote_logged("$cmd </dev/null 2>&1");
        if ($?) {
                &error("$cmd failed : $out");
@@ -641,15 +640,26 @@ undef(@list_disks_partitions_cache);
 # Returns a list of known partition tag numbers
 sub list_tags
 {
-return sort { hex($a) <=> hex($b) } (keys %tags);
+if ($has_parted) {
+       # Parted types
+       return sort { $a cmp $b } (keys %parted_tags);
+       }
+else {
+       # Classic fdisk types
+       return sort { hex($a) <=> hex($b) } (keys %tags);
+       }
 }
 
 # tag_name(tag)
 # Returns a human-readable version of a tag
 sub tag_name
 {
-return $tags{$_[0]} ? $tags{$_[0]}
-                   : $hidden_tags{$_[0]};
+return $tags{$_[0]} || $parted_tags{$_[0]} || $hidden_tags{$_[0]};
+}
+
+sub default_tag
+{
+return $has_parted ? 'ext2' : '83';
 }
 
 # conv_type(tag)
@@ -1227,6 +1237,18 @@ else { return " $_[2] $in{$_[0]}"; }
         '5', 'Extended',
         'f', 'Windows extended LBA',
        );
+
+%parted_tags = (
+       '', 'None',
+       'fat16', 'Windows FAT16',
+       'fat32', 'Windows FAT32',
+       'ext2', 'Linux',
+       'HFS', 'MacOS HFS',
+       'linux-swap', 'Linx Swap',
+       'NTFS', 'Windows NTFS',
+       'reiserfs', 'ReiserFS',
+       'ufs', 'FreeBSD UFS',
+       );
        
 @space_type = ( '1', '4', '5', '6', 'b', 'c', 'e', '83' );
 
diff --git a/fdisk/help/A.ru_RU.html b/fdisk/help/A.ru_RU.html
new file mode 100644 (file)
index 0000000..5b557ac
--- /dev/null
@@ -0,0 +1,5 @@
+<header>Óïðåæäàþùåå ÷òåíèå (Read-lookahead)</header>\r
+Âêëþ÷åíèå/âûêëþ÷åíèå ôóíêöèè óïðåæäàþùåãî ÷òåíèÿ äëÿ IDE äèñêîâ (ïî óìîë÷àíèþ îáû÷íî ÂÊËÞ×ÅÍÎ). <p>\r
+\r
+Óïðåæäàþùåå ÷òåíèå óëó÷øàåò ïðîèçâîäèòåëüíîñòü ïðè ïîñëåäîâàòåëüíîì ÷òåíèè áîëüøèõ ôàéëîâ, çàðàíåå ñ÷èòûâàÿ áëîêè, êîòîðûå ìîãóò ïîòðåáîâàòüñÿ ïðè ïîñëåäóþùèõ çàïðîñàõ, è ïîìåùàÿ èõ â êýø-ïàìÿòü.\r
+<hr>
\ No newline at end of file
diff --git a/fdisk/help/K.ru_RU.html b/fdisk/help/K.ru_RU.html
new file mode 100644 (file)
index 0000000..1be77cc
--- /dev/null
@@ -0,0 +1,6 @@
+<header> Ñîõðàíÿòü âîçìîæíîñòè ïîñëå ñáðîñà</header>\r
+Çàäàåò äèñêó ôëàã <i>keep_features_over_reset</i>.<p>\r
+\r
+Óñòàíîâêà ýòîãî ïàðàìåòðà, ïîçâîëÿåò äèñêó ñîõðàíÿòü ïàðàìåòðû íàñòðîéêè äëÿ <b>Óïðåæäàþùåãî ÷òåíèÿ</b>, <b>Óñòàíîâèòü ðåæèì PIO</b>, <b>Âðåìÿ äëÿ ïåðåõîäà â ðåæèì îæèäàíèÿ</b>, <b>Êåøèðîâàíèå çàïèñè</b> è <b>Ðåæèì ïåðåäà÷è</b> ïîñëå ñáðîñà (êàê ýòî äåëàåòñÿ âî âðåìÿ âîññòàíîâëåíèÿ ïðè îøèáêàõ).<p>\r
+Íå âñå äèñêè ïîääåðæèâàþò ýòó ôóíêöèþ.\r
+<hr>
\ No newline at end of file
diff --git a/fdisk/help/S.ru_RU.html b/fdisk/help/S.ru_RU.html
new file mode 100644 (file)
index 0000000..d52085e
--- /dev/null
@@ -0,0 +1,11 @@
+<header>Âðåìÿ äî ïåðåõîäà â ðåæèì îæèäàíèÿ (Standby timeout)</header>\r
+Çàäàåò ïðîìåæóòîê âðåìåíè, ïî èñòå÷åíèè êîòîðîãî äèñê ïåðåéäåò â ðåæèì îæèäàíèÿ (standby).<p>\r
+\r
+Ïðè îòñóòñòâèè îáðàùåíèé ê äèñêó, îí ìîæåò ïåðåéòè â ðåæèì îæèäàíèÿ, îòêëþ÷èâ øïèíäåëüíûé äâèãàòåëü äëÿ ýêîíîìèè ýíåðãèè. <br>\r
+Íà ïðîáóæäåíèå äèñêà èç ðåæèìà îæèäàíèÿ (ïðè ïîïûòêå äîñòóïà ê íåìó), ìîæåò ïîòðåáîâàòüñÿ äî 30 ñåêóíä, õîòÿ êîíå÷íî æå, áîëüøèíñòâó äèñêîâ ïîòðåáóåòñÿ íàìíîãî ìåíüøå âðåìåíè.<p>\r
+\r
+Ïåðåñ÷åò çíà÷åíèé ýòîãî ïàðàìåòðà â ðåàëüíîå âðåìÿ íåñêîëüêî ñïåöèôè÷åñêèé. <br>\r
+Çíà÷åíèå íîëü îçíà÷àåò "îòêëþ÷åíî". <br>\r
+Çíà÷åíèÿ îò 1 äî 240 çàäàåò âðåìÿ ñ øàãîì â 5 ñåêóíä, â èíòåðâàëå îò 5 ñåêóíä äî 20 ìèíóò. <br>\r
+Çíà÷åíèÿ îò 241 äî 251 îáðàçóþò îò 1 äî 11 øàãîâ ïî 30 ìèíóò, òî åñòü, çàäàþò îò 30 ìèíóò äî 5.5 ÷àñîâ. <br> Çíà÷åíèå 252 çàäàåò âðåìÿ îæèäàíèÿ â 21 ìèíóòó, 253 - âðåìÿ çàäàííîå ïðîèçâîäèòåëåì äèñêà, à 255 ýòî 21 ìèíóòà ïëþñ 15 ñåêóíä.\r
+<hr>
\ No newline at end of file
diff --git a/fdisk/help/W.ru_RU.html b/fdisk/help/W.ru_RU.html
new file mode 100644 (file)
index 0000000..d504e39
--- /dev/null
@@ -0,0 +1,6 @@
+<header>Êåøèðîâàíèå çàïèñè (Write caching)</header>\r
+Âêëþ÷àåò/âûêëþ÷àåò ôóíêöèþ êåøèðîâàíèÿ çàïèñè íà IDE äèñêå (ïî-óìîë÷àíèþ îáû÷íî ÂÛÊËÞ×ÅÍÎ).<p>\r
+\r
+Êîãäà êýøèðîâàíèå çàïèñè âêëþ÷åíî, äàííûå íå çàïèñûâàþòñÿ ñðàçó íà äèñê, à ïîïàäàþò â êýø. Íåïîñðåäñòâåííàÿ çàïèñü ïðîèñõîäèò ÷åðåç íåêîòîðîå âðåìÿ (îòëîæåííàÿ çàïèñü). Ýòèì äîñòèãàåòñÿ ïîâûøåíèå ïðîèçâîäèòåëüíîñòè.<br>\r
+ íåêîòîðûõ ñëó÷àÿõ âàæíî ïðîèçâåñòè çàïèñü íåìåäëåííî, ìèíóÿ êýø. Ýòî ïðåäîòâðàùàåò ïîòåðþ èëè ïîâðåæäåíèå äàííûõ â ñëó÷àå ñáîåâ.\r
+<hr>
\ No newline at end of file
diff --git a/fdisk/help/X.ru_RU.html b/fdisk/help/X.ru_RU.html
new file mode 100644 (file)
index 0000000..cafd1b8
--- /dev/null
@@ -0,0 +1,8 @@
+<header>Ðåæèì ïåðåäà÷è (Transfer mode)</header>\r
+Çàäàåò ðåæèì IDE ïåðåäà÷è äëÿ íîâûõ IDE/ATA2 äèñêîâ.<p>\r
+\r
+Îáû÷íî ýòî èñïîëüçóåòñÿ â êîìáèíàöèè ñ ïàðàìåòðîì <b> Èñïîëüçîâàòü DMA </b>, êîãäà ðåæèì DMA ïîääåðæèâàåòñÿ. <p>\r
+\r
+Èçìåíåíèå ýòîãî ïàðàìåòðà ðåäêî íåîáõîäèìî, òàê êàê ñîâðåìåííûå IDE äèñêè ïî óìîë÷àíèþ ñàìè íàñòðàèâàþòñÿ íà ñàìûé áûñòðûé ðåæèì PIO ñðàçó ïîñëå âêëþ÷åíèÿ. Ýêñïåðèìåíòû ñ ýòèì ïàðàìåòðîì ìîãóò áûòü è áåñïîëåçíû, è îïàñíû.<p>\r
+<i>Èñïîëüçóéòå åãî ñ îñîáîé îñòîðîæíîñòüþ!</i>\r
+<hr>
\ No newline at end of file
diff --git a/fdisk/help/a.ru_RU.html b/fdisk/help/a.ru_RU.html
new file mode 100644 (file)
index 0000000..868183c
--- /dev/null
@@ -0,0 +1,5 @@
+<header>Êîëè÷åñòâî ñåêòîðîâ (Sector Count)</header>\r
+Çàäàåò êîëè÷åñòâî ñåêòîðîâ äëÿ óïðåæäàþùåãî ÷òåíèÿ.<p>\r
+\r
+ òåêóùåé âåðñèè ÿäðà (2.0.10), ýòîò ïàðàìåòð, ïî-óìîë÷àíèþ èìååò çíà÷åíèå ðàâíîå 8 ñåêòîðàì (4 ÊÁ). Ýòîãî îáû÷íî äîñòàòî÷íî äëÿ áîëüøèíñòâà çàäà÷, íî â ñèñòåìå, ãäå ïðåîáëàäàþò ñëó÷àéíûå îáðàùåíèÿ ê ôàéëàì - óñòàíîâêà ìåíüøåãî çíà÷åíèÿ ìîæåò óëó÷øèòü ïðîèçâîäèòåëüíîñòü. Êðîìå òîãî, ìíîãèå IDE äèñêè èìåþò îòäåëüíóþ âñòðîåííóþ ôóíêöèþ óïðåæäàþùåãî ÷òåíèÿ, êîòîðàÿ òàê æå âî ìíîãèõ ñèòóàöèÿõ óëó÷øàåò ïðîèçâîäèòåëüíîñòü ïðè îïåðàöèÿõ ÷òåíèÿ.\r
+<hr>
\ No newline at end of file
diff --git a/fdisk/help/r.ru_RU.html b/fdisk/help/r.ru_RU.html
new file mode 100644 (file)
index 0000000..1b0a16b
--- /dev/null
@@ -0,0 +1,3 @@
+<header>Òîëüêî ÷òåíèå</header>\r
+Óñòàíàâëèâàåò ïàðàìåòð "Òîëüêî ÷òåíèå" äëÿ óñòðîéñòâà. Êîãäà îí óñòàíîâëåí, íà óñòðîéñòâå íå ðàçðåøåíû îïåðàöèè çàïèñè.\r
+<hr>
\ No newline at end of file
index f13aeaf..18cb104 100644 (file)
@@ -1,4 +1,6 @@
 index_title=Partition Manager
+index_parted=Using <tt>parted</tt>
+index_fdisk=Using <tt>fdisk</tt>
 index_err=Failed to list disks
 index_disk=Disk
 index_parts=Partitions