[yast-commit] r61193 - in /branches/SuSE-Code-11-SP1-Branch/storage: libstorage/src/ package/
Author: aschnell
Date: Tue Mar 9 12:50:04 2010
New Revision: 61193
URL: http://svn.opensuse.org/viewcvs/yast?rev=61193&view=rev
Log:
- add AUTO line in mdadm.conf for iSCSI systems (fate #307478)
Modified:
branches/SuSE-Code-11-SP1-Branch/storage/libstorage/src/Disk.h
branches/SuSE-Code-11-SP1-Branch/storage/libstorage/src/EtcRaidtab.cc
branches/SuSE-Code-11-SP1-Branch/storage/libstorage/src/EtcRaidtab.h
branches/SuSE-Code-11-SP1-Branch/storage/libstorage/src/Storage.cc
branches/SuSE-Code-11-SP1-Branch/storage/libstorage/src/Storage.h
branches/SuSE-Code-11-SP1-Branch/storage/package/yast2-storage.changes
Modified: branches/SuSE-Code-11-SP1-Branch/storage/libstorage/src/Disk.h
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP1-Branch/storage/libstorage/src/Disk.h?rev=61193&r1=61192&r2=61193&view=diff
==============================================================================
--- branches/SuSE-Code-11-SP1-Branch/storage/libstorage/src/Disk.h (original)
+++ branches/SuSE-Code-11-SP1-Branch/storage/libstorage/src/Disk.h Tue Mar 9 12:50:04 2010
@@ -74,6 +74,7 @@
const string& sysfsDir() const { return sysfs_dir; }
unsigned numPartitions() const;
bool isDasd() const { return( nm.find("dasd")==0 ); }
+ bool isIScsi() const { return iscsi; }
bool isLogical( unsigned nr ) const;
bool detect( ProcPart& ppart );
static storage::CType staticType() { return storage::DISK; }
Modified: branches/SuSE-Code-11-SP1-Branch/storage/libstorage/src/EtcRaidtab.cc
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP1-Branch/storage/libstorage/src/EtcRaidtab.cc?rev=61193&r1=61192&r2=61193&view=diff
==============================================================================
--- branches/SuSE-Code-11-SP1-Branch/storage/libstorage/src/EtcRaidtab.cc (original)
+++ branches/SuSE-Code-11-SP1-Branch/storage/libstorage/src/EtcRaidtab.cc Tue Mar 9 12:50:04 2010
@@ -36,9 +36,9 @@
using namespace std;
using namespace storage;
-EtcRaidtab::EtcRaidtab( const string& prefix )
+EtcRaidtab::EtcRaidtab( const Storage* sto, const string& prefix )
+ : sto(sto), mdadm_dev_line(-1), mdadm_auto_line(-1)
{
- mdadm_dev_line = -1;
mdadmname = prefix+"/etc/mdadm.conf";
mdadm = new AsciiFile( mdadmname );
buildMdadmMap();
@@ -65,17 +65,12 @@
{
mdadm->append( mline );
}
- if( mdadm_dev_line<0 )
- {
- dline = "DEVICE partitions";
- mdadm_dev_line = mdadm->numLines();
- mdadm->insert( 0, dline );
- }
- else
- {
- dline = "DEVICE partitions";
- (*mdadm)[mdadm_dev_line] = dline;
- }
+
+ setDeviceLine("DEVICE partitions");
+
+ if (sto->hasIScsiDisks())
+ setAutoLine("AUTO -all");
+
updateMdadmFile();
}
@@ -117,6 +112,37 @@
return true;
}
+
+void
+EtcRaidtab::setDeviceLine(const string& line)
+{
+ if (mdadm_dev_line < 0)
+ {
+ mdadm_dev_line = mdadm->numLines();
+ mdadm->insert(0, line);
+ }
+ else
+ {
+ (*mdadm)[mdadm_dev_line] = line;
+ }
+}
+
+
+void
+EtcRaidtab::setAutoLine(const string& line)
+{
+ if (mdadm_auto_line < 0)
+ {
+ mdadm_auto_line = mdadm->numLines();
+ mdadm->insert(0, line);
+ }
+ else
+ {
+ (*mdadm)[mdadm_auto_line] = line;
+ }
+}
+
+
bool EtcRaidtab::updateContainer(const mdconf_info& info)
{
while( true )
@@ -250,19 +276,22 @@
unsigned lineno = 0;
unsigned mdnum;
mdadm_dev_line = -1;
+ mdadm_auto_line = -1;
entry e;
while( lineno<mdadm->numLines() )
{
string key = extractNthWord( 0, (*mdadm)[lineno] );
if( mdadm_dev_line<0 && key == "DEVICE" )
mdadm_dev_line = lineno;
+ else if (mdadm_auto_line < 0 && key == "AUTO")
+ mdadm_auto_line = lineno;
else if( key == "ARRAY" &&
Md::mdStringNum( extractNthWord( 1, (*mdadm)[lineno] ), mdnum ))
{
e.first = lineno++;
while( lineno<mdadm->numLines() &&
(key = extractNthWord( 0, (*mdadm)[lineno] ))!="ARRAY" &&
- key != "DEVICE" )
+ key != "DEVICE" && key != "AUTO" )
{
key = extractNthWord( 0, (*mdadm)[lineno++] );
}
Modified: branches/SuSE-Code-11-SP1-Branch/storage/libstorage/src/EtcRaidtab.h
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP1-Branch/storage/libstorage/src/EtcRaidtab.h?rev=61193&r1=61192&r2=61193&view=diff
==============================================================================
--- branches/SuSE-Code-11-SP1-Branch/storage/libstorage/src/EtcRaidtab.h (original)
+++ branches/SuSE-Code-11-SP1-Branch/storage/libstorage/src/EtcRaidtab.h Tue Mar 9 12:50:04 2010
@@ -26,6 +26,9 @@
#include <string>
#include <map>
+#include "y2storage/Storage.h"
+
+
namespace storage
{
@@ -36,7 +39,7 @@
class EtcRaidtab
{
public:
- EtcRaidtab( const string& prefix="" );
+ EtcRaidtab( const Storage* sto, const string& prefix="" );
~EtcRaidtab();
void updateEntry( unsigned num, const std::list<string>& entries,
const string&, const std::list<string>& devs );
@@ -101,8 +104,14 @@
string ArrayLine(const mdconf_info& info);
bool updateContainer(const mdconf_info& info);
+ void setDeviceLine(const string& line);
+ void setAutoLine(const string& line);
+
+ const Storage* sto;
+
string mdadmname;
int mdadm_dev_line;
+ int mdadm_auto_line;
std::map
participants (1)
-
aschnell@svn.opensuse.org