|
libstorage
|
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
1.7.5.1