libstorage
/home/abuild/rpmbuild/BUILD/libstorage-2.21.15/storage/StorageInterface.h
00001 /*
00002  * Copyright (c) [2004-2010] Novell, Inc.
00003  *
00004  * All Rights Reserved.
00005  *
00006  * This program is free software; you can redistribute it and/or modify it
00007  * under the terms of version 2 of the GNU General Public License as published
00008  * by the Free Software Foundation.
00009  *
00010  * This program is distributed in the hope that it will be useful, but WITHOUT
00011  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00012  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
00013  * more details.
00014  *
00015  * You should have received a copy of the GNU General Public License along
00016  * with this program; if not, contact Novell, Inc.
00017  *
00018  * To contact Novell about this file by physical or electronic mail, you may
00019  * find current contact information at www.novell.com.
00020  */
00021 
00022 
00023 #ifndef STORAGE_INTERFACE_H
00024 #define STORAGE_INTERFACE_H
00025 
00026 
00027 #include <string>
00028 #include <deque>
00029 #include <list>
00030 
00031 using std::string;
00032 using std::deque;
00033 using std::list;
00034 
00035 
00036 #include "storage/StorageVersion.h"
00037 
00038 #ifndef SWIG
00039 #define SWIG_OUTPUT( var_name ) var_name
00040 #else
00041 #if defined(SWIGPYTHON) || defined(SWIGRUBY)
00042 #define SWIG_OUTPUT( var_name ) OUTPUT
00043 #else
00044 #define SWIG_OUTPUT( var_name ) REFERENCE
00045 #endif
00046 #endif
00047 
00048 
00146 namespace storage
00147 {
00148     enum FsType { FSUNKNOWN, REISERFS, EXT2, EXT3, EXT4, BTRFS, VFAT, XFS, JFS, HFS, NTFS,
00149                   SWAP, HFSPLUS, NFS, NFS4, TMPFS, FSNONE };
00150 
00151     enum PartitionType { PRIMARY, EXTENDED, LOGICAL, PTYPE_ANY };
00152 
00153     enum MountByType { MOUNTBY_DEVICE, MOUNTBY_UUID, MOUNTBY_LABEL, MOUNTBY_ID, MOUNTBY_PATH };
00154 
00155     enum EncryptType { ENC_NONE, ENC_TWOFISH, ENC_TWOFISH_OLD,
00156                        ENC_TWOFISH256_OLD, ENC_LUKS, ENC_UNKNOWN };
00157 
00158     enum MdType { RAID_UNK, RAID0, RAID1, RAID5, RAID6, RAID10, MULTIPATH };
00159 
00160     enum MdParity { PAR_DEFAULT, LEFT_ASYMMETRIC, LEFT_SYMMETRIC,
00161                     RIGHT_ASYMMETRIC, RIGHT_SYMMETRIC, PAR_FIRST, PAR_LAST,
00162                     LEFT_ASYMMETRIC_6, LEFT_SYMMETRIC_6, RIGHT_ASYMMETRIC_6, 
00163                     RIGHT_SYMMETRIC_6, PAR_FIRST_6,
00164                     PAR_NEAR_2, PAR_OFFSET_2, PAR_FAR_2,
00165                     PAR_NEAR_3, PAR_OFFSET_3, PAR_FAR_3 };
00166 
00167     enum MdArrayState { UNKNOWN, CLEAR, INACTIVE, SUSPENDED, READONLY, READ_AUTO,
00168                         CLEAN, ACTIVE, WRITE_PENDING, ACTIVE_IDLE };
00169 
00170     enum UsedByType { UB_NONE, UB_LVM, UB_MD, UB_MDPART, UB_DM, UB_DMRAID, UB_DMMULTIPATH, UB_BTRFS };
00171 
00172     enum CType { CUNKNOWN, DISK, MD, LOOP, LVM, DM, DMRAID, NFSC, DMMULTIPATH, MDPART, BTRFSC, TMPFSC };
00173 
00174     enum Transport { TUNKNOWN, SBP, ATA, FC, ISCSI, SAS, SATA, SPI, USB, FCOE };
00175 
00176     enum ImsmDriver { IMSM_UNDECIDED, IMSM_DMRAID, IMSM_MDADM };
00177 
00178     enum PartAlign { ALIGN_OPTIMAL, ALIGN_CYLINDER };
00179 
00180 
00185     typedef void (*CallbackProgressBar)(const string& id, unsigned cur, unsigned max);
00186 
00191     typedef void (*CallbackShowInstallInfo)(const string& id);
00192 
00197     typedef void (*CallbackInfoPopup)(const string& text);
00198 
00205     typedef bool (*CallbackYesNoPopup)(const string& text);
00206 
00212     typedef bool (*CallbackCommitErrorPopup)(int error, const string& last_action,
00213                                              const string& extended_message);
00214 
00220     typedef bool (*CallbackPasswordPopup)(const string& device, int attempts, string& password);
00221 
00222 
00226     struct FsCapabilities
00227     {
00228         FsCapabilities() {}
00229         bool isExtendable;
00230         bool isExtendableWhileMounted;
00231         bool isReduceable;
00232         bool isReduceableWhileMounted;
00233         bool supportsUuid;
00234         bool supportsLabel;
00235         bool labelWhileMounted;
00236         unsigned int labelLength;
00237         unsigned long long minimalFsSizeK;
00238     };
00239 
00243     struct DlabelCapabilities
00244     {
00245         DlabelCapabilities() {}
00246         unsigned maxPrimary;
00247         bool extendedPossible;
00248         unsigned maxLogical;
00249         unsigned long long maxSectors;
00250     };
00251 
00252 
00253     struct UsedByInfo
00254     {
00255         UsedByInfo(UsedByType type, const string& device) : type(type), device(device) {}
00256         UsedByType type;
00257         string device;
00258     };
00259 
00260 
00261     struct SubvolInfo
00262     {
00263         SubvolInfo(const string& path) : path(path) {}
00264         string path;
00265     };
00266 
00267 
00268     struct ResizeInfo
00269     {
00270         ResizeInfo() : df_freeK(0), resize_freeK(0), usedK(0), resize_ok(false) {}
00271         unsigned long long df_freeK;
00272         unsigned long long resize_freeK;
00273         unsigned long long usedK;
00274         bool resize_ok;
00275     };
00276 
00277 
00278     struct ContentInfo
00279     {
00280         ContentInfo() : windows(false), efi(false), homes(0) {}
00281         bool windows;
00282         bool efi;
00283         unsigned homes;
00284     };
00285 
00286 
00290     struct ContainerInfo
00291     {
00292         ContainerInfo() {}
00293         CType type;
00294         string device;
00295         string name;
00296         string udevPath;
00297         string udevId;
00298         list<UsedByInfo> usedBy;
00299         UsedByType usedByType;  // deprecated
00300         string usedByDevice;    // deprecated
00301         bool readonly;
00302     };
00303 
00307     struct DiskInfo
00308     {
00309         DiskInfo() {}
00310         unsigned long long sizeK;
00311         unsigned long long cylSize;
00312         unsigned long cyl;
00313         unsigned long heads;
00314         unsigned long sectors;
00315         unsigned int sectorSize;
00316         string disklabel;
00317         string orig_disklabel;
00318         unsigned maxPrimary;
00319         bool extendedPossible;
00320         unsigned maxLogical;
00321         bool initDisk;
00322         Transport transport;
00323         bool iscsi;             // deprecated
00324     };
00325 
00329     struct LvmVgInfo
00330     {
00331         LvmVgInfo() {}
00332         unsigned long long sizeK;
00333         unsigned long long peSizeK;
00334         unsigned long peCount;
00335         unsigned long peFree;
00336         string uuid;
00337         bool lvm2;
00338         bool create;
00339         string devices;
00340         string devices_add;
00341         string devices_rem;
00342     };
00343 
00347     struct DmPartCoInfo
00348     {
00349         DmPartCoInfo() {}
00350         DiskInfo d;
00351         string devices;
00352         unsigned long minor;
00353     };
00354 
00355     struct DmraidCoInfo
00356     {
00357         DmraidCoInfo() {}
00358         DmPartCoInfo p;
00359     };
00360 
00361     struct DmmultipathCoInfo
00362     {
00363         DmmultipathCoInfo() {}
00364         DmPartCoInfo p;
00365         string vendor;
00366         string model;
00367     };
00368 
00372     struct VolumeInfo
00373     {
00374         VolumeInfo() {}
00375         unsigned long long sizeK;
00376         unsigned long major;
00377         unsigned long minor;
00378         string name;
00379         string device;
00380         string mount;
00381         string crypt_device;
00382         MountByType mount_by;
00383         string udevPath;
00384         string udevId;
00385         list<UsedByInfo> usedBy;
00386         UsedByType usedByType;  // deprecated
00387         string usedByDevice;    // deprecated
00388         bool ignore_fstab;
00389         string fstab_options;
00390         string uuid;
00391         string label;
00392         string mkfs_options;
00393         string tunefs_options;
00394         string loop;
00395         string dtxt;
00396         EncryptType encryption;
00397         string crypt_pwd;
00398         FsType fs;
00399         FsType detected_fs;
00400         bool format;
00401         bool create;
00402         bool is_mounted;
00403         bool resize;
00404         bool ignore_fs;
00405         unsigned long long origSizeK;
00406     };
00407 
00408     struct PartitionAddInfo
00409     {
00410         PartitionAddInfo() {}
00411         unsigned nr;
00412         unsigned long cylStart;
00413         unsigned long cylSize;
00414         PartitionType partitionType;
00415         unsigned id;
00416         bool boot;
00417     };
00418 
00422     struct PartitionInfo
00423     {
00424         PartitionInfo() {}
00425         PartitionInfo& operator=( const PartitionAddInfo& rhs );
00426         VolumeInfo v;
00427         unsigned nr;
00428         unsigned long cylStart;
00429         unsigned long cylSize;
00430         PartitionType partitionType;
00431         unsigned id;
00432         bool boot;
00433     };
00434 
00438     struct LvmLvInfo
00439     {
00440         LvmLvInfo() {}
00441         VolumeInfo v;
00442         unsigned stripes;
00443         unsigned stripeSizeK;
00444         string uuid;
00445         string status;
00446         string allocation;
00447         string dm_table;
00448         string dm_target;
00449         string origin;
00450         unsigned long long sizeK;
00451     };
00452 
00456     struct LvmLvSnapshotStateInfo
00457     {
00458         LvmLvSnapshotStateInfo() {}
00459         bool active;
00460         double allocated;
00461     };
00462 
00466     struct MdInfo
00467     {
00468         MdInfo() {}
00469         VolumeInfo v;
00470         unsigned nr;
00471         unsigned type;
00472         unsigned parity;
00473         string uuid;
00474         string sb_ver;
00475         unsigned long chunkSizeK;
00476         string devices;
00477         string spares;
00478     };
00479 
00483     struct MdStateInfo
00484     {
00485         MdStateInfo() {}
00486         MdArrayState state;
00487     };
00488 
00493     struct MdPartCoInfo
00494     {
00495         MdPartCoInfo() {}
00496         DiskInfo d;
00497         unsigned type;        // RAID level
00498         unsigned nr;          // MD device number
00499         unsigned parity;      // Parity (not for all RAID level)
00500         string   uuid;        // MD Device UUID
00501         string   sb_ver;      // Metadata version
00502         unsigned long chunkSizeK;  // Chunksize (strip size)
00503         string devices;
00504         string spares;
00505     };
00506 
00507     struct MdPartCoStateInfo
00508     {
00509         MdPartCoStateInfo() {}
00510         MdArrayState state;
00511     };
00512 
00516     struct MdPartInfo
00517     {
00518         MdPartInfo() {}
00519         VolumeInfo v;
00520         PartitionAddInfo p;
00521         bool part;
00522     };
00523 
00527     struct NfsInfo
00528     {
00529         NfsInfo() {}
00530         VolumeInfo v;
00531     };
00532 
00536     struct LoopInfo
00537     {
00538         LoopInfo() {}
00539         VolumeInfo v;
00540         bool reuseFile;
00541         unsigned nr;
00542         string file;
00543     };
00544 
00548     struct BtrfsInfo
00549     {
00550         BtrfsInfo() {}
00551         VolumeInfo v;
00552         string devices;
00553         string devices_add;
00554         string devices_rem;
00555         string subvol;
00556         string subvol_add;
00557         string subvol_rem;
00558     };
00559 
00563     struct TmpfsInfo
00564     {
00565         TmpfsInfo() {}
00566         VolumeInfo v;
00567     };
00568 
00572     struct DmInfo
00573     {
00574         DmInfo() {}
00575         VolumeInfo v;
00576         unsigned nr;
00577         string table;
00578         string target;
00579     };
00580 
00584     struct DmPartInfo
00585     {
00586         DmPartInfo() {}
00587         VolumeInfo v;
00588         PartitionAddInfo p;
00589         bool part;
00590         string table;
00591         string target;
00592     };
00593 
00597     struct DmraidInfo
00598     {
00599         DmraidInfo() {}
00600         DmPartInfo p;
00601     };
00602 
00606     struct DmmultipathInfo
00607     {
00608         DmmultipathInfo() {}
00609         DmPartInfo p;
00610     };
00611 
00615     struct ContVolInfo
00616     {
00617         ContVolInfo() : ctype(CUNKNOWN), num(-1) {}
00618         CType ctype;
00619         string cname;
00620         string cdevice;
00621         string vname;
00622         string vdevice;
00623         int num;
00624     };
00625 
00629     struct PartitionSlotInfo
00630     {
00631         PartitionSlotInfo() {}
00632         unsigned long cylStart;
00633         unsigned long cylSize;
00634         bool primarySlot;
00635         bool primaryPossible;
00636         bool extendedSlot;
00637         bool extendedPossible;
00638         bool logicalSlot;
00639         bool logicalPossible;
00640     };
00641 
00645     struct CommitInfo
00646     {
00647         CommitInfo() {}
00648         bool destructive;
00649         string text;
00650     };
00651 
00652 
00656     enum ErrorCodes
00657     {
00658         STORAGE_NO_ERROR = 0,
00659 
00660         DISK_PARTITION_OVERLAPS_EXISTING = -1000,
00661         DISK_PARTITION_EXCEEDS_DISK = -1001,
00662         DISK_CREATE_PARTITION_EXT_ONLY_ONCE = -1002,
00663         DISK_CREATE_PARTITION_EXT_IMPOSSIBLE = -1003,
00664         DISK_PARTITION_NO_FREE_NUMBER = -1004,
00665         DISK_CREATE_PARTITION_INVALID_VOLUME = -1005,
00666         DISK_CREATE_PARTITION_INVALID_TYPE = -1006,
00667         DISK_CREATE_PARTITION_PARTED_FAILED = -1007,
00668         DISK_PARTITION_NOT_FOUND = -1008,
00669         DISK_CREATE_PARTITION_LOGICAL_NO_EXT = -1009,
00670         DISK_PARTITION_LOGICAL_OUTSIDE_EXT = -1010,
00671         DISK_SET_TYPE_INVALID_VOLUME = -1011,
00672         DISK_SET_TYPE_PARTED_FAILED = -1012,
00673         DISK_SET_LABEL_PARTED_FAILED = -1013,
00674         DISK_REMOVE_PARTITION_PARTED_FAILED = -1014,
00675         DISK_REMOVE_PARTITION_INVALID_VOLUME = -1015,
00676         DISK_REMOVE_PARTITION_LIST_ERASE = -1016,
00677         DISK_DESTROY_TABLE_INVALID_LABEL = -1017,
00678         DISK_PARTITION_ZERO_SIZE = -1018,
00679         DISK_CHANGE_READONLY = -1019,
00680         DISK_RESIZE_PARTITION_INVALID_VOLUME = -1020,
00681         DISK_RESIZE_PARTITION_PARTED_FAILED = -1021,
00682         DISK_RESIZE_NO_SPACE = -1022,
00683         DISK_CHECK_RESIZE_INVALID_VOLUME = -1023,
00684         DISK_REMOVE_PARTITION_CREATE_NOT_FOUND = -1024,
00685         DISK_COMMIT_NOTHING_TODO = -1025,
00686         DISK_CREATE_PARTITION_NO_SPACE = -1026,
00687         DISK_REMOVE_USED_BY = -1027,
00688         DISK_INIT_NOT_POSSIBLE = -1028,
00689         DISK_INVALID_PARTITION_ID = -1029,
00690 
00691         STORAGE_DISK_NOT_FOUND = -2000,
00692         STORAGE_VOLUME_NOT_FOUND = -2001,
00693         STORAGE_REMOVE_PARTITION_INVALID_CONTAINER = -2002,
00694         STORAGE_CHANGE_PARTITION_ID_INVALID_CONTAINER = -2003,
00695         STORAGE_CHANGE_READONLY = -2004,
00696         STORAGE_DISK_USED_BY = -2005,
00697         STORAGE_LVM_VG_EXISTS = -2006,
00698         STORAGE_LVM_VG_NOT_FOUND = -2007,
00699         STORAGE_LVM_INVALID_DEVICE = -2008,
00700         STORAGE_CONTAINER_NOT_FOUND = -2009,
00701         STORAGE_VG_INVALID_NAME = -2010,
00702         STORAGE_REMOVE_USED_VOLUME = -2011,
00703         STORAGE_REMOVE_USING_UNKNOWN_TYPE = -2012,
00704         STORAGE_NOT_YET_IMPLEMENTED = -2013,
00705         STORAGE_MD_INVALID_NAME = -2014,
00706         STORAGE_MD_NOT_FOUND = -2015,
00707         STORAGE_MEMORY_EXHAUSTED = -2016,
00708         STORAGE_LOOP_NOT_FOUND = -2017,
00709         STORAGE_CREATED_LOOP_NOT_FOUND = -2018,
00710         STORAGE_CHANGE_AREA_INVALID_CONTAINER = -2023,
00711         STORAGE_BACKUP_STATE_NOT_FOUND = -2024,
00712         STORAGE_INVALID_FSTAB_VALUE = -2025,
00713         STORAGE_NO_FSTAB_PTR = -2026,
00714         STORAGE_DEVICE_NODE_NOT_FOUND = -2027,
00715         STORAGE_DMRAID_CO_NOT_FOUND = -2028,
00716         STORAGE_RESIZE_INVALID_CONTAINER = -2029,
00717         STORAGE_DMMULTIPATH_CO_NOT_FOUND = -2030,
00718         STORAGE_ZERO_DEVICE_FAILED = -2031,
00719         STORAGE_INVALID_BACKUP_STATE_NAME = -2032,
00720         STORAGE_MDPART_CO_NOT_FOUND = -2033,
00721         STORAGE_DEVICE_NOT_FOUND = -2034,
00722         STORAGE_BTRFS_CO_NOT_FOUND = -2035,
00723         STORAGE_TMPFS_CO_NOT_FOUND = -2036,
00724 
00725         VOLUME_COMMIT_UNKNOWN_STAGE = -3000,
00726         VOLUME_FSTAB_EMPTY_MOUNT = -3001,
00727         VOLUME_UMOUNT_FAILED = -3002,
00728         VOLUME_MOUNT_FAILED = -3003,
00729         VOLUME_FORMAT_UNKNOWN_FS = -3005,
00730         VOLUME_FORMAT_FS_UNDETECTED = -3006,
00731         VOLUME_FORMAT_FS_TOO_SMALL = -3007,
00732         VOLUME_FORMAT_FAILED = -3008,
00733         VOLUME_TUNE2FS_FAILED = -3009,
00734         VOLUME_MKLABEL_FS_UNABLE = -3010,
00735         VOLUME_MKLABEL_FAILED = -3011,
00736         VOLUME_LOSETUP_NO_LOOP = -3012,
00737         VOLUME_LOSETUP_FAILED = -3013,
00738         VOLUME_CRYPT_NO_PWD = -3014,
00739         VOLUME_CRYPT_PWD_TOO_SHORT = -3015,
00740         VOLUME_CRYPT_NOT_DETECTED = -3016,
00741         VOLUME_FORMAT_EXTENDED_UNSUPPORTED = -3017,
00742         VOLUME_MOUNT_EXTENDED_UNSUPPORTED = -3018,
00743         VOLUME_MOUNT_POINT_INVALID = -3019,
00744         VOLUME_MOUNTBY_NOT_ENCRYPTED = -3020,
00745         VOLUME_MOUNTBY_UNSUPPORTED_BY_FS = -3021,
00746         VOLUME_LABEL_NOT_SUPPORTED = -3022,
00747         VOLUME_LABEL_TOO_LONG = -3023,
00748         VOLUME_LABEL_WHILE_MOUNTED = -3024,
00749         VOLUME_RESIZE_UNSUPPORTED_BY_FS = -3025,
00750         VOLUME_RESIZE_UNSUPPORTED_BY_CONTAINER = -3026,
00751         VOLUME_RESIZE_FAILED = -3027,
00752         VOLUME_ALREADY_IN_USE = -3028,
00753         VOLUME_LOUNSETUP_FAILED = -3029,
00754         VOLUME_DEVICE_NOT_PRESENT = -3030,
00755         VOLUME_DEVICE_NOT_BLOCK = -3031,
00756         VOLUME_MOUNTBY_UNSUPPORTED_BY_VOLUME = -3032,
00757         VOLUME_CRYPTFORMAT_FAILED = -3033,
00758         VOLUME_CRYPTSETUP_FAILED = -3034,
00759         VOLUME_CRYPTUNSETUP_FAILED = -3035,
00760         VOLUME_FORMAT_NOT_IMPLEMENTED = -3036,
00761         VOLUME_FORMAT_IMPOSSIBLE = -3037,
00762         VOLUME_CRYPT_NFS_IMPOSSIBLE = -3038,
00763         VOLUME_REMOUNT_FAILED = -3039,
00764         VOLUME_TUNEREISERFS_FAILED = -3040,
00765         VOLUME_UMOUNT_NOT_MOUNTED = -3041,
00766         VOLUME_BTRFS_ADD_FAILED = -3042,
00767         VOLUME_CANNOT_TMP_MOUNT = -3043,
00768         VOLUME_CANNOT_TMP_UMOUNT = -3044,
00769         VOLUME_BTRFS_SUBVOL_INIT_FAILED = -3045,
00770         VOLUME_BTRFS_SUBVOL_DETDEFAULT = -3046,
00771 
00772         LVM_CREATE_PV_FAILED = -4000,
00773         LVM_PV_ALREADY_CONTAINED = -4001,
00774         LVM_PV_DEVICE_UNKNOWN = -4002,
00775         LVM_PV_DEVICE_USED = -4003,
00776         LVM_VG_HAS_NONE_PV = -4004,
00777         LVM_LV_INVALID_NAME = -4005,
00778         LVM_LV_DUPLICATE_NAME = -4006,
00779         LVM_LV_NO_SPACE = -4007,
00780         LVM_LV_UNKNOWN_NAME = -4008,
00781         LVM_LV_NOT_IN_LIST = -4009,
00782         LVM_VG_CREATE_FAILED = -4010,
00783         LVM_VG_EXTEND_FAILED = -4011,
00784         LVM_VG_REDUCE_FAILED = -4012,
00785         LVM_VG_REMOVE_FAILED = -4013,
00786         LVM_LV_CREATE_FAILED = -4014,
00787         LVM_LV_REMOVE_FAILED = -4015,
00788         LVM_LV_RESIZE_FAILED = -4016,
00789         LVM_PV_STILL_ADDED = -4017,
00790         LVM_PV_REMOVE_NOT_FOUND = -4018,
00791         LVM_CREATE_LV_INVALID_VOLUME = -4019,
00792         LVM_REMOVE_LV_INVALID_VOLUME = -4020,
00793         LVM_RESIZE_LV_INVALID_VOLUME = -4021,
00794         LVM_CHANGE_READONLY = -4022,
00795         LVM_CHECK_RESIZE_INVALID_VOLUME = -4023,
00796         LVM_COMMIT_NOTHING_TODO = -4024,
00797         LVM_LV_REMOVE_USED_BY = -4025,
00798         LVM_LV_ALREADY_ON_DISK = -4026,
00799         LVM_LV_NO_STRIPE_SIZE = -4027,
00800         LVM_LV_UNKNOWN_ORIGIN = -4028,
00801         LVM_LV_NOT_ON_DISK = -4029,
00802         LVM_LV_NOT_SNAPSHOT = -4030,
00803         LVM_LV_HAS_SNAPSHOTS = -4031,
00804         LVM_LV_IS_SNAPSHOT = -4032,
00805         LVM_LIST_EMPTY = -4033,
00806 
00807         FSTAB_ENTRY_NOT_FOUND = -5000,
00808         FSTAB_CHANGE_PREFIX_IMPOSSIBLE = -5001,
00809         FSTAB_REMOVE_ENTRY_NOT_FOUND = -5002,
00810         FSTAB_UPDATE_ENTRY_NOT_FOUND = -5003,
00811         FSTAB_ADD_ENTRY_FOUND = -5004,
00812 
00813         MD_CHANGE_READONLY = -6000,
00814         MD_DUPLICATE_NUMBER = -6001,
00815         MD_TOO_FEW_DEVICES = -6002,
00816         MD_DEVICE_UNKNOWN = -6003,
00817         MD_DEVICE_USED = -6004,
00818         MD_CREATE_INVALID_VOLUME = -6005,
00819         MD_REMOVE_FAILED = -6006,
00820         MD_NOT_IN_LIST = -6007,
00821         MD_CREATE_FAILED = -6008,
00822         MD_UNKNOWN_NUMBER = -6009,
00823         MD_REMOVE_USED_BY = -6010,
00824         MD_NUMBER_TOO_LARGE = -6011,
00825         MD_REMOVE_INVALID_VOLUME = -6012,
00826         MD_REMOVE_CREATE_NOT_FOUND = -6013,
00827         MD_NO_RESIZE_ON_DISK = -6014,
00828         MD_ADD_DUPLICATE = -6015,
00829         MD_REMOVE_NONEXISTENT = -6016,
00830         MD_NO_CHANGE_ON_DISK = -6017,
00831         MD_NO_CREATE_UNKNOWN = -6018,
00832         MD_STATE_NOT_ON_DISK = -6019,
00833         MD_PARTITION_NOT_FOUND = -6020,
00834         MD_INVALID_PARITY = -6021,
00835         MD_TOO_MANY_SPARES = -6022,
00836         MD_GET_STATE_FAILED = -6023,
00837 
00838         MDPART_CHANGE_READONLY = -6100,
00839         MDPART_INTERNAL_ERR = -6101,
00840         MDPART_INVALID_VOLUME = -6012,
00841         MDPART_PARTITION_NOT_FOUND = -6103,
00842         MDPART_REMOVE_PARTITION_LIST_ERASE = -6104,
00843         MDPART_COMMIT_NOTHING_TODO = -6105,
00844         MDPART_NO_REMOVE = -6106,
00845         MDPART_DEVICE_NOT_FOUND = -6107,
00846 
00847         LOOP_CHANGE_READONLY = -7000,
00848         LOOP_DUPLICATE_FILE = -7001,
00849         LOOP_UNKNOWN_FILE = -7002,
00850         LOOP_REMOVE_USED_BY = -7003,
00851         LOOP_FILE_CREATE_FAILED = -7004,
00852         LOOP_CREATE_INVALID_VOLUME = -7005,
00853         LOOP_REMOVE_FILE_FAILED = -7006,
00854         LOOP_REMOVE_INVALID_VOLUME = -7007,
00855         LOOP_NOT_IN_LIST = -7008,
00856         LOOP_REMOVE_CREATE_NOT_FOUND = -7009,
00857         LOOP_MODIFY_EXISTING = -7010,
00858 
00859         PEC_PE_SIZE_INVALID = -9000,
00860         PEC_PV_NOT_FOUND = -9001,
00861         PEC_REMOVE_PV_IN_USE = -9002,
00862         PEC_REMOVE_PV_SIZE_NEEDED = -9003,
00863         PEC_LV_NO_SPACE_STRIPED = -9004,
00864         PEC_LV_NO_SPACE_SINGLE = -9005,
00865         PEC_LV_PE_DEV_NOT_FOUND = -9006,
00866 
00867         DM_CHANGE_READONLY = -10000,
00868         DM_UNKNOWN_TABLE = -10001,
00869         DM_REMOVE_USED_BY = -10002,
00870         DM_REMOVE_CREATE_NOT_FOUND = -10003,
00871         DM_REMOVE_INVALID_VOLUME = -10004,
00872         DM_REMOVE_FAILED = -10005,
00873         DM_NOT_IN_LIST = -10006,
00874 
00875         DASD_NOT_POSSIBLE = -11000,
00876         DASD_FDASD_FAILED = -11001,
00877         DASD_DASDFMT_FAILED = -11002,
00878 
00879         DMPART_CHANGE_READONLY = -12001,
00880         DMPART_INTERNAL_ERR = -12002,
00881         DMPART_INVALID_VOLUME = -12003,
00882         DMPART_PARTITION_NOT_FOUND = -12004,
00883         DMPART_REMOVE_PARTITION_LIST_ERASE = -12005,
00884         DMPART_COMMIT_NOTHING_TODO = -12006,
00885         DMPART_NO_REMOVE = -12007,
00886 
00887         DMRAID_REMOVE_FAILED = -13001,
00888 
00889         NFS_VOLUME_NOT_FOUND = -14001,
00890         NFS_CHANGE_READONLY = -14002,
00891         NFS_REMOVE_VOLUME_CREATE_NOT_FOUND = -14003,
00892         NFS_REMOVE_VOLUME_LIST_ERASE = -14004,
00893         NFS_REMOVE_INVALID_VOLUME = -14005,
00894 
00895         BTRFS_COMMIT_INVALID_VOLUME = -15001,
00896         BTRFS_CANNOT_TMP_MOUNT = -15002,
00897         BTRFS_CANNOT_TMP_UMOUNT = -15003,
00898         BTRFS_DELETE_SUBVOL_FAIL = -15004,
00899         BTRFS_CREATE_SUBVOL_FAIL = -15005,
00900         BTRFS_VOLUME_NOT_FOUND = -15006,
00901         BTRFS_SUBVOL_EXISTS = -15007,
00902         BTRFS_SUBVOL_NON_EXISTS = -15008,
00903         BTRFS_REMOVE_NOT_FOUND = -15009,
00904         BTRFS_REMOVE_NO_BTRFS = -15010,
00905         BTRFS_REMOVE_INVALID_VOLUME = -15011,
00906         BTRFS_CHANGE_READONLY = -15012,
00907         BTRFS_DEV_ALREADY_CONTAINED = -15013,
00908         BTRFS_DEVICE_UNKNOWN = -15014,
00909         BTRFS_DEVICE_USED = -15015,
00910         BTRFS_HAS_NONE_DEV = -15016,
00911         BTRFS_DEV_NOT_FOUND = -15017,
00912         BTRFS_EXTEND_FAIL = -15018,
00913         BTRFS_REDUCE_FAIL = -15019,
00914         BTRFS_LIST_EMPTY = -15020,
00915 
00916         TMPFS_REMOVE_INVALID_VOLUME = -16001,
00917         TMPFS_REMOVE_NO_TMPFS = -16002,
00918         TMPFS_REMOVE_NOT_FOUND = -16003,
00919 
00920         CONTAINER_INTERNAL_ERROR = -99000,
00921         CONTAINER_INVALID_VIRTUAL_CALL = -99001,
00922 
00923     };
00924 
00925 
00929     class StorageInterface
00930     {
00931     public:
00932 
00933         StorageInterface () {}
00934         virtual ~StorageInterface () {}
00935 
00939         virtual void getContainers( deque<ContainerInfo>& infos) = 0;
00940 
00948         virtual int getDiskInfo( const string& disk, DiskInfo& info) = 0;
00949 
00958         virtual int getContDiskInfo( const string& disk, ContainerInfo& cinfo,
00959                                      DiskInfo& info ) = 0;
00960 
00968         virtual int getLvmVgInfo( const string& name, LvmVgInfo& info) = 0;
00969 
00978         virtual int getContLvmVgInfo( const string& name, ContainerInfo& cinfo,
00979                                       LvmVgInfo& info) = 0;
00980 
00988         virtual int getDmraidCoInfo( const string& name, DmraidCoInfo& info) = 0;
00989 
00998         virtual int getContDmraidCoInfo( const string& name, ContainerInfo& cinfo,
00999                                          DmraidCoInfo& info) = 0;
01000 
01008         virtual int getDmmultipathCoInfo( const string& name, DmmultipathCoInfo& info) = 0;
01009 
01018         virtual int getContDmmultipathCoInfo( const string& name, ContainerInfo& cinfo,
01019                                               DmmultipathCoInfo& info) = 0;
01020 
01028         virtual int getMdPartCoInfo( const string& name, MdPartCoInfo& info) = 0;
01029 
01030 
01039         virtual int getContMdPartCoInfo( const string& name, ContainerInfo& cinfo,
01040                                          MdPartCoInfo& info) = 0;
01041 
01047         virtual void setImsmDriver(ImsmDriver driver) = 0;
01048 
01054         virtual ImsmDriver getImsmDriver() const = 0;
01055 
01061         virtual void getVolumes( deque<VolumeInfo>& infos) = 0;
01062 
01070         virtual int getVolume( const string& device, VolumeInfo& info) = 0;
01071 
01079         virtual int getPartitionInfo( const string& disk,
01080                                       deque<PartitionInfo>& plist ) = 0;
01081 
01089         virtual int getLvmLvInfo( const string& name,
01090                                   deque<LvmLvInfo>& plist ) = 0;
01091 
01098         virtual int getMdInfo( deque<MdInfo>& plist ) = 0;
01099 
01107         virtual int getMdPartInfo( const string& device,
01108                                    deque<MdPartInfo>& plist ) = 0;
01109 
01116         virtual int getNfsInfo( deque<NfsInfo>& plist ) = 0;
01117 
01124         virtual int getLoopInfo( deque<LoopInfo>& plist ) = 0;
01125 
01132         virtual int getDmInfo( deque<DmInfo>& plist ) = 0;
01133 
01140         virtual int getBtrfsInfo( deque<BtrfsInfo>& plist ) = 0;
01141 
01148         virtual int getTmpfsInfo( deque<TmpfsInfo>& plist ) = 0;
01149 
01157         virtual int getDmraidInfo( const string& name,
01158                                    deque<DmraidInfo>& plist ) = 0;
01159 
01167         virtual int getDmmultipathInfo( const string& name,
01168                                         deque<DmmultipathInfo>& plist ) = 0;
01169 
01173         virtual bool getFsCapabilities (FsType fstype, FsCapabilities& fscapabilities) const = 0;
01174 
01178         virtual bool getDlabelCapabilities(const string& dlabel,
01179                                            DlabelCapabilities& dlabelcapabilities) const = 0;
01180 
01184         virtual list<string> getAllUsedFs() const = 0;
01185 
01198         virtual int createPartition( const string& disk, PartitionType type,
01199                                      unsigned long startCyl,
01200                                      unsigned long sizeCyl,
01201                                      string& SWIG_OUTPUT(device) ) = 0;
01202 
01211         virtual int resizePartition( const string& device,
01212                                      unsigned long sizeCyl ) = 0;
01213 
01222         virtual int resizePartitionNoFs( const string& device,
01223                                          unsigned long sizeCyl ) = 0;
01224 
01235         virtual int updatePartitionArea( const string& device,
01236                                          unsigned long startCyl,
01237                                          unsigned long sizeCyl ) = 0;
01238 
01247         virtual int freeCylindersAroundPartition(const string& device, unsigned long& freeCylsBefore,
01248                                                  unsigned long& freeCylsAfter) = 0;
01249 
01259         virtual int nextFreePartition( const string& disk, PartitionType type,
01260                                        unsigned & SWIG_OUTPUT(nr), 
01261                                        string& SWIG_OUTPUT(device) ) = 0;
01262 
01275         virtual int createPartitionKb( const string& disk, PartitionType type,
01276                                        unsigned long long startK,
01277                                        unsigned long long sizeK,
01278                                        string& SWIG_OUTPUT(device) ) = 0;
01279 
01290         virtual int createPartitionAny( const string& disk,
01291                                         unsigned long long sizeK,
01292                                         string& SWIG_OUTPUT(device) ) = 0;
01293 
01304         virtual int createPartitionMax( const string& disk, PartitionType type,
01305                                         string& SWIG_OUTPUT(device) ) = 0;
01306 
01314         virtual unsigned long long cylinderToKb( const string& disk,
01315                                                  unsigned long sizeCyl) = 0;
01316 
01324         virtual unsigned long kbToCylinder( const string& disk,
01325                                             unsigned long long sizeK) = 0;
01326 
01333         virtual int removePartition (const string& partition) = 0;
01334 
01342         virtual int changePartitionId (const string& partition, unsigned id) = 0;
01343 
01350         virtual int forgetChangePartitionId (const string& partition ) = 0;
01351 
01359         virtual string getPartitionPrefix(const string& disk) = 0;
01360 
01369         virtual string getPartitionName(const string& disk, int partition_no) = 0;
01370 
01378         virtual int getUnusedPartitionSlots(const string& disk, list<PartitionSlotInfo>& slots) = 0;
01379 
01388         virtual int destroyPartitionTable (const string& disk, const string& label) = 0;
01389 
01400         virtual int initializeDisk( const string& disk, bool value ) = 0;
01401 
01410         virtual string defaultDiskLabel(const string& device) = 0;
01411 
01420         virtual int changeFormatVolume( const string& device, bool format, FsType fs ) = 0;
01421 
01429         virtual int changeLabelVolume( const string& device, const string& label ) = 0;
01430 
01438         virtual int changeMkfsOptVolume( const string& device, const string& opts ) = 0;
01439 
01447         virtual int changeTunefsOptVolume( const string& device, const string& opts ) = 0;
01448 
01457         virtual int changeMountPoint( const string& device, const string& mount ) = 0;
01458 
01466         virtual int getMountPoint( const string& device,
01467                                    string& SWIG_OUTPUT(mount) ) = 0;
01468 
01476         virtual int changeMountBy( const string& device, MountByType mby ) = 0;
01477 
01485         virtual int getMountBy( const string& device, 
01486                                 MountByType& SWIG_OUTPUT(mby) ) = 0;
01487 
01497         virtual int changeFstabOptions( const string& device, const string& options ) = 0;
01498 
01507         virtual int getFstabOptions( const string& device,
01508                                      string& SWIG_OUTPUT(options) ) = 0;
01509 
01510 
01519         virtual int addFstabOptions( const string& device, const string& options ) = 0;
01520 
01530         virtual int removeFstabOptions( const string& device, const string& options ) = 0;
01531 
01539         virtual int setCryptPassword( const string& device, const string& pwd ) = 0;
01540 
01547         virtual int forgetCryptPassword( const string& device ) = 0;
01548 
01556         virtual int getCryptPassword( const string& device,
01557                                       string& SWIG_OUTPUT(pwd) ) = 0;
01558 
01567         virtual int verifyCryptPassword( const string& device, 
01568                                          const string& pwd, bool erase ) = 0;
01569 
01576         virtual bool needCryptPassword( const string& device ) = 0;
01577 
01585         virtual int setCrypt( const string& device, bool val ) = 0;
01586 
01595         virtual int setCryptType( const string& device, bool val, EncryptType typ ) = 0;
01596 
01604         virtual int getCrypt( const string& device, bool& SWIG_OUTPUT(val) ) = 0;
01605 
01615         virtual int setIgnoreFstab( const string& device, bool val ) = 0;
01616 
01624         virtual int getIgnoreFstab( const string& device, bool& SWIG_OUTPUT(val) ) = 0;
01625 
01635         virtual int changeDescText( const string& device, const string& txt ) = 0;
01636 
01651         virtual int addFstabEntry( const string& device, const string& mount,
01652                                    const string& vfs, const string& options,
01653                                    unsigned freq, unsigned passno ) = 0;
01654 
01655 
01663         virtual int resizeVolume(const string& device, unsigned long long newSizeK) = 0;
01664 
01672         virtual int resizeVolumeNoFs(const string& device, unsigned long long newSizeK) = 0;
01673 
01680         virtual int forgetResizeVolume( const string& device ) = 0;
01681 
01696         virtual void setRecursiveRemoval( bool val ) = 0;
01697 
01703         virtual bool getRecursiveRemoval() const = 0;
01704 
01713         virtual int getRecursiveUsing(const string& device, list<string>& devices) = 0;
01714 
01728         virtual void setZeroNewPartitions( bool val ) = 0;
01729 
01735         virtual bool getZeroNewPartitions() const = 0;
01736 
01748         virtual void setPartitionAlignment( PartAlign val ) = 0;
01749 
01755         virtual PartAlign getPartitionAlignment() const = 0;
01756 
01762         virtual void setDefaultMountBy( MountByType val ) = 0;
01763 
01769         virtual MountByType getDefaultMountBy() const = 0;
01770 
01776         virtual void setDefaultFs(FsType val) = 0;
01777 
01783         virtual FsType getDefaultFs() const = 0;
01784 
01790         virtual void setDefaultSubvolName( const string& val) = 0;
01791 
01797         virtual string getDefaultSubvolName() const = 0;
01798 
01804         virtual bool getEfiBoot() = 0;
01805 
01816         virtual void setRootPrefix( const string& root ) = 0;
01817 
01823         virtual string getRootPrefix() const = 0;
01824 
01830         virtual void setDetectMountedVolumes( bool val ) = 0;
01831 
01837         virtual bool getDetectMountedVolumes() const = 0;
01838 
01846         virtual int removeVolume( const string& device ) = 0;
01847 
01858         virtual int createLvmVg( const string& name,
01859                                  unsigned long long peSizeK, bool lvm1,
01860                                  const deque<string>& devs ) = 0;
01861 
01869         virtual int removeLvmVg( const string& name ) = 0;
01870 
01878         virtual int extendLvmVg( const string& name,
01879                                  const deque<string>& devs ) = 0;
01880 
01888         virtual int shrinkLvmVg( const string& name,
01889                                  const deque<string>& devs ) = 0;
01890 
01902         virtual int createLvmLv( const string& vg, const string& name,
01903                                  unsigned long long sizeK, unsigned stripes,
01904                                  string& SWIG_OUTPUT(device) ) = 0;
01905 
01912         virtual int removeLvmLvByDevice( const string& device ) = 0;
01913 
01921         virtual int removeLvmLv( const string& vg, const string& name ) = 0;
01922 
01932         virtual int changeLvStripeCount( const string& vg, const string& name,
01933                                          unsigned long stripes ) = 0;
01934 
01944         virtual int changeLvStripeSize( const string& vg, const string& name,
01945                                         unsigned long long stripeSizeK) = 0;
01946 
01957         virtual int createLvmLvSnapshot(const string& vg, const string& origin,
01958                                         const string& name, unsigned long long cowSizeK,
01959                                         string& SWIG_OUTPUT(device) ) = 0;
01960 
01968         virtual int removeLvmLvSnapshot(const string& vg, const string& name) = 0;
01969 
01980         virtual int getLvmLvSnapshotStateInfo(const string& vg, const string& name,
01981                                               LvmLvSnapshotStateInfo& info) = 0;
01982 
01990         virtual int nextFreeMd(unsigned& SWIG_OUTPUT(nr),
01991                                string& SWIG_OUTPUT(device)) = 0;
01992 
02002         virtual int createMd(const string& name, MdType md_type, const list<string>& devices,
02003                              const list<string>& spares) = 0;
02004 
02014         virtual int createMdAny(MdType md_type, const list<string>& devices,
02015                                 const list<string>& spares, 
02016                                 string& SWIG_OUTPUT(device) ) = 0;
02017 
02026         virtual int removeMd( const string& name, bool destroySb ) = 0;
02027 
02037         virtual int extendMd(const string& name, const list<string>& devices,
02038                              const list<string>& spares) = 0;
02039 
02049         virtual int shrinkMd(const string& name, const list<string>& devices,
02050                              const list<string>& spares) = 0;
02051 
02060         virtual int changeMdType(const string& name, MdType md_type) = 0;
02061 
02070         virtual int changeMdChunk(const string& name, unsigned long chunkSizeK) = 0;
02071 
02080         virtual int changeMdParity( const string& name, MdParity ptype ) = 0;
02081 
02088         virtual int checkMd( const string& name ) = 0;
02089 
02099         virtual int getMdStateInfo(const string& name, MdStateInfo& info) = 0;
02100 
02110         virtual int getMdPartCoStateInfo(const string& name,
02111                                          MdPartCoStateInfo& info) = 0;
02112 
02125         virtual int computeMdSize(MdType md_type, const list<string>& devices,
02126                                   const list<string>& spares, unsigned long long& sizeK) = 0;
02127 
02135         virtual list<int> getMdAllowedParity(MdType md_type, unsigned devnr) = 0;
02136 
02147         virtual int removeMdPartCo(const string& name, bool destroySb ) = 0;
02148 
02159         virtual int addNfsDevice(const string& nfsDev, const string& opts,
02160                                  unsigned long long sizeK, const string& mp,
02161                                  bool nfs4) = 0;
02162 
02172         virtual int checkNfsDevice(const string& nfsDev, const string& opts,
02173                                    bool nfs4, unsigned long long& sizeK) = 0;
02174 
02191         virtual int createFileLoop( const string& lname, bool reuseExisting,
02192                                     unsigned long long sizeK,
02193                                     const string& mp, const string& pwd,
02194                                     string& SWIG_OUTPUT(device) ) = 0;
02195 
02213         virtual int modifyFileLoop( const string& device, const string& lname,
02214                                     bool reuseExisting,
02215                                     unsigned long long sizeK ) = 0;
02216 
02225         virtual int removeFileLoop( const string& lname, bool removeFile ) = 0;
02226 
02233         virtual int removeDmraid( const string& name ) = 0;
02234 
02242         virtual bool existSubvolume( const string& device, const string& name ) = 0;
02243 
02251         virtual int createSubvolume( const string& device, const string& name ) = 0;
02252 
02260         virtual int removeSubvolume( const string& device, const string& name ) = 0;
02261 
02270         virtual int extendBtrfsVolume( const string& name,
02271                                        const deque<string>& devs ) = 0;
02272 
02281         virtual int shrinkBtrfsVolume( const string& name,
02282                                        const deque<string>& devs ) = 0;
02283 
02291         virtual int addTmpfsMount( const string& mp, const string& opts ) = 0;
02292 
02299         virtual int removeTmpfsMount( const string& mp ) = 0;
02300 
02306         virtual void getCommitInfos(list<CommitInfo>& infos) const = 0;
02307 
02313         virtual const string& getLastAction() const = 0;
02314 
02321         virtual const string& getExtendedErrorMessage() const = 0;
02322 
02323 // temporarily disable callback function for swig
02324 #ifndef SWIG
02325 
02331         virtual void setCallbackProgressBar(CallbackProgressBar pfnc) = 0;
02332 
02338         virtual CallbackProgressBar getCallbackProgressBar() const = 0;
02339 
02340 
02346         virtual void setCallbackShowInstallInfo(CallbackShowInstallInfo pfnc) = 0;
02347 
02353         virtual CallbackShowInstallInfo getCallbackShowInstallInfo() const = 0;
02354 
02355 
02362         virtual void setCallbackInfoPopup(CallbackInfoPopup pfnc) = 0;
02363 
02370         virtual CallbackInfoPopup getCallbackInfoPopup() const = 0;
02371 
02372 
02379         virtual void setCallbackYesNoPopup(CallbackYesNoPopup pfnc) = 0;
02380 
02387         virtual CallbackYesNoPopup getCallbackYesNoPopup() const = 0;
02388 
02389 
02395         virtual void setCallbackCommitErrorPopup(CallbackCommitErrorPopup pfnc) = 0;
02396 
02402         virtual CallbackCommitErrorPopup getCallbackCommitErrorPopup() const = 0;
02403 
02404 
02410         virtual void setCallbackPasswordPopup(CallbackPasswordPopup pfnc) = 0;
02411 
02418         virtual CallbackPasswordPopup getCallbackPasswordPopup() const = 0;
02419 
02420 #endif
02421 
02427         virtual void setCacheChanges (bool cache) = 0;
02428 
02432         virtual bool isCacheChanges () const = 0;
02433 
02438         virtual int commit() = 0;
02439 
02443         virtual string getErrorString(int error) const = 0;
02444 
02451         virtual int createBackupState( const string& name ) = 0;
02452 
02459         virtual int restoreBackupState( const string& name ) = 0;
02460 
02467         virtual bool checkBackupState(const string& name) const = 0;
02468 
02477         virtual bool equalBackupStates(const string& lhs, const string& rhs,
02478                                        bool verbose_log) const = 0;
02479 
02487         virtual int removeBackupState( const string& name ) = 0;
02488 
02496         virtual bool checkDeviceMounted(const string& device, list<string>& mps) = 0;
02497 
02507         virtual bool umountDevice( const string& device ) = 0;
02508 
02519         virtual bool mountDevice( const string& device, const string& mp ) = 0;
02520 
02531         virtual int activateEncryption( const string& device, bool on ) = 0;
02532 
02544         virtual bool mountDeviceOpts( const string& device, const string& mp,
02545                                       const string& opts ) = 0;
02546 
02558         virtual bool mountDeviceRo( const string& device, const string& mp,
02559                                     const string& opts ) = 0;
02560 
02567         virtual bool checkDmMapsTo( const string& device ) = 0;
02568 
02574         virtual void removeDmTableTo( const string& device ) = 0;
02575 
02587         virtual bool getFreeInfo(const string& device, bool get_resize, ResizeInfo& resize_info,
02588                                  bool get_content, ContentInfo& content_info, bool use_cache) = 0;
02589 
02597         virtual bool readFstab( const string& dir, deque<VolumeInfo>& infos) = 0;
02598 
02608         virtual void activateHld( bool val ) = 0;
02609 
02618         virtual void activateMultipath( bool val ) = 0;
02619 
02628         virtual void rescanEverything() = 0;
02629 
02638         virtual bool rescanCryptedObjects() = 0;
02639 
02643         virtual void dumpObjectList() = 0;
02644 
02648         virtual void dumpCommitInfos() const = 0;
02649 
02659         virtual int getContVolInfo(const string& dev, ContVolInfo& info) = 0;
02660 
02661     };
02662 
02663 
02667     void initDefaultLogger();
02668 
02669 
02673     struct Environment
02674     {
02675         Environment(bool readonly) : readonly(readonly), testmode(false), autodetect(true),
02676             instsys(false), logdir("/var/log/YaST2"), testdir("tmp") {}
02677 
02678         bool readonly;
02679         bool testmode;
02680         bool autodetect;
02681         bool instsys;
02682         string logdir;
02683         string testdir;
02684     };
02685 
02686 
02692     StorageInterface* createStorageInterface(const Environment& env);
02693 
02694 
02702     StorageInterface* createStorageInterfacePid(const Environment& env, int& locker_pid);
02703 
02704 
02708     void destroyStorageInterface(StorageInterface*);
02709 
02710 }
02711 
02712 
02713 #endif