00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef LVM_LV_H
00024 #define LVM_LV_H
00025
00026 #include "storage/Dm.h"
00027
00028
00029 namespace storage
00030 {
00031
00032 class LvmVg;
00033
00034 class LvmLv : public Dm
00035 {
00036 public:
00037
00038 LvmLv(const LvmVg& c, const string& name, const string& device, const string& origin,
00039 unsigned long le, const string& uuid, const string& status, const string& alloc,
00040 SystemInfo& si);
00041 LvmLv(const LvmVg& c, const string& name, const string& device, const string& origin,
00042 unsigned long le, unsigned stripe );
00043 LvmLv(const LvmVg& c, const xmlNode* node);
00044 LvmLv(const LvmVg& c, const LvmLv& v);
00045 virtual ~LvmLv();
00046
00047 void saveData(xmlNode* node) const;
00048
00049 const LvmVg* vg() const;
00050
00051 void calcSize();
00052
00053 void getState(LvmLvSnapshotStateInfo& info);
00054
00055 void setOrigin( const string& o ) { origin=o; }
00056 string getOrigin() const { return origin; }
00057
00058 bool isSnapshot() const { return !origin.empty(); }
00059 bool hasSnapshots() const;
00060
00061 bool isPool() const { return pool; }
00062 void setPool( bool p=true ) { pool=p; }
00063 const string& usedPool() const { return used_pool; }
00064 void setUsedPool( const string& val ) { used_pool=val; }
00065 bool isThin() const { return !used_pool.empty(); }
00066 unsigned long long chunkSize() const { return chunk_size; }
00067 void setChunkSize( unsigned long long val ) { chunk_size=val; }
00068
00069 void setUuid( const string& uuid ) { vol_uuid=uuid; }
00070 void setStatus( const string& s ) { status=s; }
00071 void setAlloc( const string& a ) { allocation=a; }
00072
00073 friend std::ostream& operator<< (std::ostream& s, const LvmLv &p );
00074 bool operator< ( const LvmLv& rhs ) const;
00075 bool operator<= ( const LvmLv& rhs ) const
00076 { return( *this<rhs || *this==rhs ); }
00077 bool operator>= ( const LvmLv& rhs ) const
00078 { return( !(*this<rhs) ); }
00079 bool operator> ( const LvmLv& rhs ) const
00080 { return( !(*this<=rhs) ); }
00081
00082 virtual void print( std::ostream& s ) const { s << *this; }
00083 Text removeText( bool doing ) const;
00084 Text createText( bool doing ) const;
00085 Text formatText( bool doing ) const;
00086 Text resizeText( bool doing ) const;
00087 int setFormat( bool format, storage::FsType fs );
00088 int changeMount( const string& val );
00089 void getInfo( storage::LvmLvInfo& info ) const;
00090 bool equalContent( const LvmLv& rhs ) const;
00091 virtual list<string> getUsing() const;
00092 void logDifference(std::ostream& log, const LvmLv& rhs) const;
00093
00094 static bool notDeleted(const LvmLv& l) { return !l.deleted(); }
00095
00096 protected:
00097 static string makeDmTableName(const string& vg_name, const string& lv_name);
00098
00099 virtual const string shortPrintedName() const { return "Lv"; }
00100
00101 string origin;
00102
00103 string vol_uuid;
00104 string status;
00105 string allocation;
00106 string used_pool;
00107 unsigned long long chunk_size;
00108 bool pool;
00109
00110 mutable storage::LvmLvInfo info;
00111
00112 private:
00113
00114 LvmLv(const LvmLv&);
00115 LvmLv& operator=(const LvmLv&);
00116
00117 };
00118
00119 }
00120
00121 #endif