00001 #ifndef DASD_H 00002 #define DASD_H 00003 00004 #include "y2storage/Disk.h" 00005 00006 namespace storage 00007 { 00008 00009 class SystemCmd; 00010 class ProcPart; 00011 00012 class Dasd : public Disk 00013 { 00014 friend class Storage; 00015 public: 00016 Dasd( Storage * const s, const string& Name, unsigned long long Size ); 00017 Dasd( const Dasd& rhs ); 00018 virtual ~Dasd(); 00019 int createPartition( storage::PartitionType type, long unsigned start, 00020 long unsigned len, string& device, 00021 bool checkRelaxed=false ); 00022 int removePartition( unsigned nr ); 00023 int changePartitionId( unsigned nr, unsigned id ) { return 0; } 00024 int resizePartition( Partition* p, unsigned long newCyl ); 00025 int initializeDisk( bool value ); 00026 string fdasdText() const; 00027 string dasdfmtText( bool doing ) const; 00028 static string dasdfmtTexts( bool single, const string& devs ); 00029 void getCommitActions( std::list<storage::commitAction*>& l ) const; 00030 int getToCommit( storage::CommitStage stage, std::list<Container*>& col, 00031 std::list<Volume*>& vol ); 00032 int commitChanges( storage::CommitStage stage ); 00033 bool detectGeometry(); 00034 00035 protected: 00036 enum DasdFormat { DASDF_NONE, DASDF_LDL, DASDF_CDL }; 00037 00038 virtual void print( std::ostream& s ) const { s << *this; } 00039 bool detectPartitionsFdasd(ProcPart& ppart); 00040 bool detectPartitions( ProcPart& ppart ); 00041 bool checkFdasdOutput( SystemCmd& Cmd, ProcPart& ppart ); 00042 bool scanFdasdLine( const string& Line, unsigned& nr, 00043 unsigned long& start, unsigned long& csize ); 00044 void getGeometry( SystemCmd& cmd, unsigned long& c, 00045 unsigned& h, unsigned& s ); 00046 void redetectGeometry() {}; 00047 int doCreate( Volume* v ) { return(doFdasd()); } 00048 int doRemove( Volume* v ) { return(init_disk?0:doFdasd()); } 00049 int doFdasd(); 00050 int doResize( Volume* v ); 00051 int doSetType( Volume* v ) { return 0; } 00052 int doCreateLabel() { return 0; } 00053 int doDasdfmt(); 00054 DasdFormat fmt; 00055 00056 Dasd& operator= ( const Dasd& rhs ); 00057 friend std::ostream& operator<< (std::ostream&, const Dasd& ); 00058 00059 }; 00060 00061 } 00062 00063 #endif