libstorage
StorageInterface.h
1 /*
2  * Copyright (c) [2004-2010] Novell, Inc.
3  *
4  * All Rights Reserved.
5  *
6  * This program is free software; you can redistribute it and/or modify it
7  * under the terms of version 2 of the GNU General Public License as published
8  * by the Free Software Foundation.
9  *
10  * This program is distributed in the hope that it will be useful, but WITHOUT
11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
13  * more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, contact Novell, Inc.
17  *
18  * To contact Novell about this file by physical or electronic mail, you may
19  * find current contact information at www.novell.com.
20  */
21 
22 
23 #ifndef STORAGE_INTERFACE_H
24 #define STORAGE_INTERFACE_H
25 
26 
27 #include <string>
28 #include <deque>
29 #include <list>
30 
31 using std::string;
32 using std::deque;
33 using std::list;
34 
35 
36 #include "storage/StorageVersion.h"
37 
38 #ifndef SWIG
39 #define SWIG_OUTPUT( var_name ) var_name
40 #else
41 #if defined(SWIGPYTHON) || defined(SWIGRUBY)
42 #define SWIG_OUTPUT( var_name ) OUTPUT
43 #else
44 #define SWIG_OUTPUT( var_name ) REFERENCE
45 #endif
46 #endif
47 
48 
146 namespace storage
147 {
148  enum FsType { FSUNKNOWN, REISERFS, EXT2, EXT3, EXT4, BTRFS, VFAT, XFS, JFS, HFS, NTFS,
149  SWAP, HFSPLUS, NFS, NFS4, TMPFS, FSNONE };
150 
151  enum PartitionType { PRIMARY, EXTENDED, LOGICAL, PTYPE_ANY };
152 
153  enum MountByType { MOUNTBY_DEVICE, MOUNTBY_UUID, MOUNTBY_LABEL, MOUNTBY_ID, MOUNTBY_PATH };
154 
155  enum EncryptType { ENC_NONE, ENC_TWOFISH, ENC_TWOFISH_OLD,
156  ENC_TWOFISH256_OLD, ENC_LUKS, ENC_UNKNOWN };
157 
158  enum MdType { RAID_UNK, RAID0, RAID1, RAID5, RAID6, RAID10, MULTIPATH };
159 
160  enum MdParity { PAR_DEFAULT, LEFT_ASYMMETRIC, LEFT_SYMMETRIC,
161  RIGHT_ASYMMETRIC, RIGHT_SYMMETRIC, PAR_FIRST, PAR_LAST,
162  LEFT_ASYMMETRIC_6, LEFT_SYMMETRIC_6, RIGHT_ASYMMETRIC_6,
163  RIGHT_SYMMETRIC_6, PAR_FIRST_6,
164  PAR_NEAR_2, PAR_OFFSET_2, PAR_FAR_2,
165  PAR_NEAR_3, PAR_OFFSET_3, PAR_FAR_3 };
166 
167  enum MdArrayState { UNKNOWN, CLEAR, INACTIVE, SUSPENDED, READONLY, READ_AUTO,
168  CLEAN, ACTIVE, WRITE_PENDING, ACTIVE_IDLE };
169 
170  enum UsedByType { UB_NONE, UB_LVM, UB_MD, UB_MDPART, UB_DM, UB_DMRAID, UB_DMMULTIPATH, UB_BTRFS };
171 
172  enum CType { CUNKNOWN, DISK, MD, LOOP, LVM, DM, DMRAID, NFSC, DMMULTIPATH, MDPART, BTRFSC, TMPFSC };
173 
174  enum Transport { TUNKNOWN, SBP, ATA, FC, ISCSI, SAS, SATA, SPI, USB, FCOE };
175 
176  enum ImsmDriver { IMSM_UNDECIDED, IMSM_DMRAID, IMSM_MDADM };
177 
178  enum MultipathAutostart { MPAS_UNDECIDED, MPAS_ON, MPAS_OFF };
179 
180  enum PartAlign { ALIGN_OPTIMAL, ALIGN_CYLINDER };
181 
182 
187  typedef void (*CallbackProgressBar)(const string& id, unsigned cur, unsigned max);
188 
193  typedef void (*CallbackShowInstallInfo)(const string& id);
194 
199  typedef void (*CallbackInfoPopup)(const string& text);
200 
207  typedef bool (*CallbackYesNoPopup)(const string& text);
208 
214  typedef bool (*CallbackCommitErrorPopup)(int error, const string& last_action,
215  const string& extended_message);
216 
222  typedef bool (*CallbackPasswordPopup)(const string& device, int attempts, string& password);
223 
224 
229  {
230  FsCapabilities() {}
231  bool isExtendable;
232  bool isExtendableWhileMounted;
233  bool isReduceable;
234  bool isReduceableWhileMounted;
235  bool supportsUuid;
236  bool supportsLabel;
237  bool labelWhileMounted;
238  unsigned int labelLength;
239  unsigned long long minimalFsSizeK;
240  };
241 
246  {
247  DlabelCapabilities() {}
248  unsigned maxPrimary;
249  bool extendedPossible;
250  unsigned maxLogical;
251  unsigned long long maxSectors;
252  };
253 
254 
255  struct UsedByInfo
256  {
257  UsedByInfo(UsedByType type, const string& device) : type(type), device(device) {}
258  UsedByType type;
259  string device;
260  };
261 
262 
263  struct SubvolInfo
264  {
265  SubvolInfo(const string& path) : path(path) {}
266  string path;
267  };
268 
269 
270  struct ResizeInfo
271  {
272  ResizeInfo() : df_freeK(0), resize_freeK(0), usedK(0), resize_ok(false) {}
273  unsigned long long df_freeK;
274  unsigned long long resize_freeK;
275  unsigned long long usedK;
276  bool resize_ok;
277  };
278 
279 
280  struct ContentInfo
281  {
282  ContentInfo() : windows(false), efi(false), homes(0) {}
283  bool windows;
284  bool efi;
285  unsigned homes;
286  };
287 
288 
293  {
294  ContainerInfo() {}
295  CType type;
296  string device;
297  string name;
298  string udevPath;
299  string udevId;
300  list<UsedByInfo> usedBy;
301  UsedByType usedByType; // deprecated
302  string usedByDevice; // deprecated
303  bool readonly;
304  };
305 
309  struct DiskInfo
310  {
311  DiskInfo() {}
312  unsigned long long sizeK;
313  unsigned long long cylSize;
314  unsigned long cyl;
315  unsigned long heads;
316  unsigned long sectors;
317  unsigned int sectorSize;
318  string disklabel;
319  string orig_disklabel;
320  unsigned maxPrimary;
321  bool extendedPossible;
322  unsigned maxLogical;
323  bool initDisk;
324  Transport transport;
325  bool iscsi; // deprecated
326  };
327 
331  struct LvmVgInfo
332  {
333  LvmVgInfo() {}
334  unsigned long long sizeK;
335  unsigned long long peSizeK;
336  unsigned long peCount;
337  unsigned long peFree;
338  string uuid;
339  bool lvm2;
340  bool create;
341  string devices;
342  string devices_add;
343  string devices_rem;
344  };
345 
350  {
351  DmPartCoInfo() {}
352  DiskInfo d;
353  string devices;
354  unsigned long minor;
355  };
356 
358  {
359  DmraidCoInfo() {}
360  DmPartCoInfo p;
361  };
362 
364  {
365  DmmultipathCoInfo() {}
366  DmPartCoInfo p;
367  string vendor;
368  string model;
369  };
370 
374  struct VolumeInfo
375  {
376  VolumeInfo() {}
377  unsigned long long sizeK;
378  unsigned long major;
379  unsigned long minor;
380  string name;
381  string device;
382  string mount;
383  string crypt_device;
384  MountByType mount_by;
385  string udevPath;
386  string udevId;
387  list<UsedByInfo> usedBy;
388  UsedByType usedByType; // deprecated
389  string usedByDevice; // deprecated
390  bool ignore_fstab;
391  string fstab_options;
392  string uuid;
393  string label;
394  string mkfs_options;
395  string tunefs_options;
396  string loop;
397  string dtxt;
398  EncryptType encryption;
399  string crypt_pwd;
400  FsType fs;
401  FsType detected_fs;
402  bool format;
403  bool create;
404  bool is_mounted;
405  bool resize;
406  bool ignore_fs;
407  unsigned long long origSizeK;
408  };
409 
411  {
412  PartitionAddInfo() {}
413  unsigned nr;
414  unsigned long cylStart;
415  unsigned long cylSize;
416  PartitionType partitionType;
417  unsigned id;
418  bool boot;
419  };
420 
425  {
426  PartitionInfo() {}
427  PartitionInfo& operator=( const PartitionAddInfo& rhs );
428  VolumeInfo v;
429  unsigned nr;
430  unsigned long cylStart;
431  unsigned long cylSize;
432  PartitionType partitionType;
433  unsigned id;
434  bool boot;
435  };
436 
440  struct LvmLvInfo
441  {
442  LvmLvInfo() {}
443  VolumeInfo v;
444  unsigned stripes;
445  unsigned stripeSizeK;
446  string uuid;
447  string status;
448  string allocation;
449  string dm_table;
450  string dm_target;
451  string origin;
452  unsigned long long sizeK;
453  };
454 
459  {
461  bool active;
462  double allocated;
463  };
464 
468  struct MdInfo
469  {
470  MdInfo() {}
471  VolumeInfo v;
472  unsigned nr;
473  unsigned type;
474  unsigned parity;
475  string uuid;
476  string sb_ver;
477  unsigned long chunkSizeK;
478  string devices;
479  string spares;
480  };
481 
485  struct MdStateInfo
486  {
487  MdStateInfo() {}
488  MdArrayState state;
489  };
490 
496  {
497  MdPartCoInfo() {}
498  DiskInfo d;
499  unsigned type; // RAID level
500  unsigned nr; // MD device number
501  unsigned parity; // Parity (not for all RAID level)
502  string uuid; // MD Device UUID
503  string sb_ver; // Metadata version
504  unsigned long chunkSizeK; // Chunksize (strip size)
505  string devices;
506  string spares;
507  };
508 
510  {
511  MdPartCoStateInfo() {}
512  MdArrayState state;
513  };
514 
518  struct MdPartInfo
519  {
520  MdPartInfo() {}
521  VolumeInfo v;
523  bool part;
524  };
525 
529  struct NfsInfo
530  {
531  NfsInfo() {}
532  VolumeInfo v;
533  };
534 
538  struct LoopInfo
539  {
540  LoopInfo() {}
541  VolumeInfo v;
542  bool reuseFile;
543  unsigned nr;
544  string file;
545  };
546 
550  struct BtrfsInfo
551  {
552  BtrfsInfo() {}
553  VolumeInfo v;
554  string devices;
555  string devices_add;
556  string devices_rem;
557  string subvol;
558  string subvol_add;
559  string subvol_rem;
560  };
561 
565  struct TmpfsInfo
566  {
567  TmpfsInfo() {}
568  VolumeInfo v;
569  };
570 
574  struct DmInfo
575  {
576  DmInfo() {}
577  VolumeInfo v;
578  unsigned nr;
579  string table;
580  string target;
581  };
582 
586  struct DmPartInfo
587  {
588  DmPartInfo() {}
589  VolumeInfo v;
591  bool part;
592  string table;
593  string target;
594  };
595 
599  struct DmraidInfo
600  {
601  DmraidInfo() {}
602  DmPartInfo p;
603  };
604 
609  {
610  DmmultipathInfo() {}
611  DmPartInfo p;
612  };
613 
617  struct ContVolInfo
618  {
619  ContVolInfo() : ctype(CUNKNOWN), num(-1) {}
620  CType ctype;
621  string cname;
622  string cdevice;
623  string vname;
624  string vdevice;
625  int num;
626  };
627 
632  {
633  PartitionSlotInfo() {}
634  unsigned long cylStart;
635  unsigned long cylSize;
636  bool primarySlot;
637  bool primaryPossible;
638  bool extendedSlot;
639  bool extendedPossible;
640  bool logicalSlot;
641  bool logicalPossible;
642  };
643 
647  struct CommitInfo
648  {
649  CommitInfo() {}
650  bool destructive;
651  string text;
652  };
653 
654 
658  enum ErrorCodes
659  {
660  STORAGE_NO_ERROR = 0,
661 
662  DISK_PARTITION_OVERLAPS_EXISTING = -1000,
663  DISK_PARTITION_EXCEEDS_DISK = -1001,
664  DISK_CREATE_PARTITION_EXT_ONLY_ONCE = -1002,
665  DISK_CREATE_PARTITION_EXT_IMPOSSIBLE = -1003,
666  DISK_PARTITION_NO_FREE_NUMBER = -1004,
667  DISK_CREATE_PARTITION_INVALID_VOLUME = -1005,
668  DISK_CREATE_PARTITION_INVALID_TYPE = -1006,
669  DISK_CREATE_PARTITION_PARTED_FAILED = -1007,
670  DISK_PARTITION_NOT_FOUND = -1008,
671  DISK_CREATE_PARTITION_LOGICAL_NO_EXT = -1009,
672  DISK_PARTITION_LOGICAL_OUTSIDE_EXT = -1010,
673  DISK_SET_TYPE_INVALID_VOLUME = -1011,
674  DISK_SET_TYPE_PARTED_FAILED = -1012,
675  DISK_SET_LABEL_PARTED_FAILED = -1013,
676  DISK_REMOVE_PARTITION_PARTED_FAILED = -1014,
677  DISK_REMOVE_PARTITION_INVALID_VOLUME = -1015,
678  DISK_REMOVE_PARTITION_LIST_ERASE = -1016,
679  DISK_DESTROY_TABLE_INVALID_LABEL = -1017,
680  DISK_PARTITION_ZERO_SIZE = -1018,
681  DISK_CHANGE_READONLY = -1019,
682  DISK_RESIZE_PARTITION_INVALID_VOLUME = -1020,
683  DISK_RESIZE_PARTITION_PARTED_FAILED = -1021,
684  DISK_RESIZE_NO_SPACE = -1022,
685  DISK_CHECK_RESIZE_INVALID_VOLUME = -1023,
686  DISK_REMOVE_PARTITION_CREATE_NOT_FOUND = -1024,
687  DISK_COMMIT_NOTHING_TODO = -1025,
688  DISK_CREATE_PARTITION_NO_SPACE = -1026,
689  DISK_REMOVE_USED_BY = -1027,
690  DISK_INIT_NOT_POSSIBLE = -1028,
691  DISK_INVALID_PARTITION_ID = -1029,
692 
693  STORAGE_DISK_NOT_FOUND = -2000,
694  STORAGE_VOLUME_NOT_FOUND = -2001,
695  STORAGE_REMOVE_PARTITION_INVALID_CONTAINER = -2002,
696  STORAGE_CHANGE_PARTITION_ID_INVALID_CONTAINER = -2003,
697  STORAGE_CHANGE_READONLY = -2004,
698  STORAGE_DISK_USED_BY = -2005,
699  STORAGE_LVM_VG_EXISTS = -2006,
700  STORAGE_LVM_VG_NOT_FOUND = -2007,
701  STORAGE_LVM_INVALID_DEVICE = -2008,
702  STORAGE_CONTAINER_NOT_FOUND = -2009,
703  STORAGE_VG_INVALID_NAME = -2010,
704  STORAGE_REMOVE_USED_VOLUME = -2011,
705  STORAGE_REMOVE_USING_UNKNOWN_TYPE = -2012,
706  STORAGE_NOT_YET_IMPLEMENTED = -2013,
707  STORAGE_MD_INVALID_NAME = -2014,
708  STORAGE_MD_NOT_FOUND = -2015,
709  STORAGE_MEMORY_EXHAUSTED = -2016,
710  STORAGE_LOOP_NOT_FOUND = -2017,
711  STORAGE_CREATED_LOOP_NOT_FOUND = -2018,
712  STORAGE_CHANGE_AREA_INVALID_CONTAINER = -2023,
713  STORAGE_BACKUP_STATE_NOT_FOUND = -2024,
714  STORAGE_INVALID_FSTAB_VALUE = -2025,
715  STORAGE_NO_FSTAB_PTR = -2026,
716  STORAGE_DEVICE_NODE_NOT_FOUND = -2027,
717  STORAGE_DMRAID_CO_NOT_FOUND = -2028,
718  STORAGE_RESIZE_INVALID_CONTAINER = -2029,
719  STORAGE_DMMULTIPATH_CO_NOT_FOUND = -2030,
720  STORAGE_ZERO_DEVICE_FAILED = -2031,
721  STORAGE_INVALID_BACKUP_STATE_NAME = -2032,
722  STORAGE_MDPART_CO_NOT_FOUND = -2033,
723  STORAGE_DEVICE_NOT_FOUND = -2034,
724  STORAGE_BTRFS_CO_NOT_FOUND = -2035,
725  STORAGE_TMPFS_CO_NOT_FOUND = -2036,
726  STORAGE_VOLUME_NOT_ENCRYPTED = -2037,
727  STORAGE_DM_RENAME_FAILED = -2038,
728 
729  VOLUME_COMMIT_UNKNOWN_STAGE = -3000,
730  VOLUME_FSTAB_EMPTY_MOUNT = -3001,
731  VOLUME_UMOUNT_FAILED = -3002,
732  VOLUME_MOUNT_FAILED = -3003,
733  VOLUME_FORMAT_UNKNOWN_FS = -3005,
734  VOLUME_FORMAT_FS_UNDETECTED = -3006,
735  VOLUME_FORMAT_FS_TOO_SMALL = -3007,
736  VOLUME_FORMAT_FAILED = -3008,
737  VOLUME_TUNE2FS_FAILED = -3009,
738  VOLUME_MKLABEL_FS_UNABLE = -3010,
739  VOLUME_MKLABEL_FAILED = -3011,
740  VOLUME_LOSETUP_NO_LOOP = -3012,
741  VOLUME_LOSETUP_FAILED = -3013,
742  VOLUME_CRYPT_NO_PWD = -3014,
743  VOLUME_CRYPT_PWD_TOO_SHORT = -3015,
744  VOLUME_CRYPT_NOT_DETECTED = -3016,
745  VOLUME_FORMAT_EXTENDED_UNSUPPORTED = -3017,
746  VOLUME_MOUNT_EXTENDED_UNSUPPORTED = -3018,
747  VOLUME_MOUNT_POINT_INVALID = -3019,
748  VOLUME_MOUNTBY_NOT_ENCRYPTED = -3020,
749  VOLUME_MOUNTBY_UNSUPPORTED_BY_FS = -3021,
750  VOLUME_LABEL_NOT_SUPPORTED = -3022,
751  VOLUME_LABEL_TOO_LONG = -3023,
752  VOLUME_LABEL_WHILE_MOUNTED = -3024,
753  VOLUME_RESIZE_UNSUPPORTED_BY_FS = -3025,
754  VOLUME_RESIZE_UNSUPPORTED_BY_CONTAINER = -3026,
755  VOLUME_RESIZE_FAILED = -3027,
756  VOLUME_ALREADY_IN_USE = -3028,
757  VOLUME_LOUNSETUP_FAILED = -3029,
758  VOLUME_DEVICE_NOT_PRESENT = -3030,
759  VOLUME_DEVICE_NOT_BLOCK = -3031,
760  VOLUME_MOUNTBY_UNSUPPORTED_BY_VOLUME = -3032,
761  VOLUME_CRYPTFORMAT_FAILED = -3033,
762  VOLUME_CRYPTSETUP_FAILED = -3034,
763  VOLUME_CRYPTUNSETUP_FAILED = -3035,
764  VOLUME_FORMAT_NOT_IMPLEMENTED = -3036,
765  VOLUME_FORMAT_IMPOSSIBLE = -3037,
766  VOLUME_CRYPT_NFS_IMPOSSIBLE = -3038,
767  VOLUME_REMOUNT_FAILED = -3039,
768  VOLUME_TUNEREISERFS_FAILED = -3040,
769  VOLUME_UMOUNT_NOT_MOUNTED = -3041,
770  VOLUME_BTRFS_ADD_FAILED = -3042,
771  VOLUME_CANNOT_TMP_MOUNT = -3043,
772  VOLUME_CANNOT_TMP_UMOUNT = -3044,
773  VOLUME_BTRFS_SUBVOL_INIT_FAILED = -3045,
774  VOLUME_BTRFS_SUBVOL_DETDEFAULT = -3046,
775 
776  LVM_CREATE_PV_FAILED = -4000,
777  LVM_PV_ALREADY_CONTAINED = -4001,
778  LVM_PV_DEVICE_UNKNOWN = -4002,
779  LVM_PV_DEVICE_USED = -4003,
780  LVM_VG_HAS_NONE_PV = -4004,
781  LVM_LV_INVALID_NAME = -4005,
782  LVM_LV_DUPLICATE_NAME = -4006,
783  LVM_LV_NO_SPACE = -4007,
784  LVM_LV_UNKNOWN_NAME = -4008,
785  LVM_LV_NOT_IN_LIST = -4009,
786  LVM_VG_CREATE_FAILED = -4010,
787  LVM_VG_EXTEND_FAILED = -4011,
788  LVM_VG_REDUCE_FAILED = -4012,
789  LVM_VG_REMOVE_FAILED = -4013,
790  LVM_LV_CREATE_FAILED = -4014,
791  LVM_LV_REMOVE_FAILED = -4015,
792  LVM_LV_RESIZE_FAILED = -4016,
793  LVM_PV_STILL_ADDED = -4017,
794  LVM_PV_REMOVE_NOT_FOUND = -4018,
795  LVM_CREATE_LV_INVALID_VOLUME = -4019,
796  LVM_REMOVE_LV_INVALID_VOLUME = -4020,
797  LVM_RESIZE_LV_INVALID_VOLUME = -4021,
798  LVM_CHANGE_READONLY = -4022,
799  LVM_CHECK_RESIZE_INVALID_VOLUME = -4023,
800  LVM_COMMIT_NOTHING_TODO = -4024,
801  LVM_LV_REMOVE_USED_BY = -4025,
802  LVM_LV_ALREADY_ON_DISK = -4026,
803  LVM_LV_NO_STRIPE_SIZE = -4027,
804  LVM_LV_UNKNOWN_ORIGIN = -4028,
805  LVM_LV_NOT_ON_DISK = -4029,
806  LVM_LV_NOT_SNAPSHOT = -4030,
807  LVM_LV_HAS_SNAPSHOTS = -4031,
808  LVM_LV_IS_SNAPSHOT = -4032,
809  LVM_LIST_EMPTY = -4033,
810 
811  FSTAB_ENTRY_NOT_FOUND = -5000,
812  FSTAB_CHANGE_PREFIX_IMPOSSIBLE = -5001,
813  FSTAB_REMOVE_ENTRY_NOT_FOUND = -5002,
814  FSTAB_UPDATE_ENTRY_NOT_FOUND = -5003,
815  FSTAB_ADD_ENTRY_FOUND = -5004,
816 
817  MD_CHANGE_READONLY = -6000,
818  MD_DUPLICATE_NUMBER = -6001,
819  MD_TOO_FEW_DEVICES = -6002,
820  MD_DEVICE_UNKNOWN = -6003,
821  MD_DEVICE_USED = -6004,
822  MD_CREATE_INVALID_VOLUME = -6005,
823  MD_REMOVE_FAILED = -6006,
824  MD_NOT_IN_LIST = -6007,
825  MD_CREATE_FAILED = -6008,
826  MD_UNKNOWN_NUMBER = -6009,
827  MD_REMOVE_USED_BY = -6010,
828  MD_NUMBER_TOO_LARGE = -6011,
829  MD_REMOVE_INVALID_VOLUME = -6012,
830  MD_REMOVE_CREATE_NOT_FOUND = -6013,
831  MD_NO_RESIZE_ON_DISK = -6014,
832  MD_ADD_DUPLICATE = -6015,
833  MD_REMOVE_NONEXISTENT = -6016,
834  MD_NO_CHANGE_ON_DISK = -6017,
835  MD_NO_CREATE_UNKNOWN = -6018,
836  MD_STATE_NOT_ON_DISK = -6019,
837  MD_PARTITION_NOT_FOUND = -6020,
838  MD_INVALID_PARITY = -6021,
839  MD_TOO_MANY_SPARES = -6022,
840  MD_GET_STATE_FAILED = -6023,
841 
842  MDPART_CHANGE_READONLY = -6100,
843  MDPART_INTERNAL_ERR = -6101,
844  MDPART_INVALID_VOLUME = -6012,
845  MDPART_PARTITION_NOT_FOUND = -6103,
846  MDPART_REMOVE_PARTITION_LIST_ERASE = -6104,
847  MDPART_COMMIT_NOTHING_TODO = -6105,
848  MDPART_NO_REMOVE = -6106,
849  MDPART_DEVICE_NOT_FOUND = -6107,
850 
851  LOOP_CHANGE_READONLY = -7000,
852  LOOP_DUPLICATE_FILE = -7001,
853  LOOP_UNKNOWN_FILE = -7002,
854  LOOP_REMOVE_USED_BY = -7003,
855  LOOP_FILE_CREATE_FAILED = -7004,
856  LOOP_CREATE_INVALID_VOLUME = -7005,
857  LOOP_REMOVE_FILE_FAILED = -7006,
858  LOOP_REMOVE_INVALID_VOLUME = -7007,
859  LOOP_NOT_IN_LIST = -7008,
860  LOOP_REMOVE_CREATE_NOT_FOUND = -7009,
861  LOOP_MODIFY_EXISTING = -7010,
862 
863  PEC_PE_SIZE_INVALID = -9000,
864  PEC_PV_NOT_FOUND = -9001,
865  PEC_REMOVE_PV_IN_USE = -9002,
866  PEC_REMOVE_PV_SIZE_NEEDED = -9003,
867  PEC_LV_NO_SPACE_STRIPED = -9004,
868  PEC_LV_NO_SPACE_SINGLE = -9005,
869  PEC_LV_PE_DEV_NOT_FOUND = -9006,
870 
871  DM_CHANGE_READONLY = -10000,
872  DM_UNKNOWN_TABLE = -10001,
873  DM_REMOVE_USED_BY = -10002,
874  DM_REMOVE_CREATE_NOT_FOUND = -10003,
875  DM_REMOVE_INVALID_VOLUME = -10004,
876  DM_REMOVE_FAILED = -10005,
877  DM_NOT_IN_LIST = -10006,
878 
879  DASD_NOT_POSSIBLE = -11000,
880  DASD_FDASD_FAILED = -11001,
881  DASD_DASDFMT_FAILED = -11002,
882 
883  DMPART_CHANGE_READONLY = -12001,
884  DMPART_INTERNAL_ERR = -12002,
885  DMPART_INVALID_VOLUME = -12003,
886  DMPART_PARTITION_NOT_FOUND = -12004,
887  DMPART_REMOVE_PARTITION_LIST_ERASE = -12005,
888  DMPART_COMMIT_NOTHING_TODO = -12006,
889  DMPART_NO_REMOVE = -12007,
890 
891  DMRAID_REMOVE_FAILED = -13001,
892 
893  NFS_VOLUME_NOT_FOUND = -14001,
894  NFS_CHANGE_READONLY = -14002,
895  NFS_REMOVE_VOLUME_CREATE_NOT_FOUND = -14003,
896  NFS_REMOVE_VOLUME_LIST_ERASE = -14004,
897  NFS_REMOVE_INVALID_VOLUME = -14005,
898 
899  BTRFS_COMMIT_INVALID_VOLUME = -15001,
900  BTRFS_CANNOT_TMP_MOUNT = -15002,
901  BTRFS_CANNOT_TMP_UMOUNT = -15003,
902  BTRFS_DELETE_SUBVOL_FAIL = -15004,
903  BTRFS_CREATE_SUBVOL_FAIL = -15005,
904  BTRFS_VOLUME_NOT_FOUND = -15006,
905  BTRFS_SUBVOL_EXISTS = -15007,
906  BTRFS_SUBVOL_NON_EXISTS = -15008,
907  BTRFS_REMOVE_NOT_FOUND = -15009,
908  BTRFS_REMOVE_NO_BTRFS = -15010,
909  BTRFS_REMOVE_INVALID_VOLUME = -15011,
910  BTRFS_CHANGE_READONLY = -15012,
911  BTRFS_DEV_ALREADY_CONTAINED = -15013,
912  BTRFS_DEVICE_UNKNOWN = -15014,
913  BTRFS_DEVICE_USED = -15015,
914  BTRFS_HAS_NONE_DEV = -15016,
915  BTRFS_DEV_NOT_FOUND = -15017,
916  BTRFS_EXTEND_FAIL = -15018,
917  BTRFS_REDUCE_FAIL = -15019,
918  BTRFS_LIST_EMPTY = -15020,
919  BTRFS_RESIZE_INVALID_VOLUME = -15021,
920  BTRFS_MULTIDEV_SHRINK_UNSUPPORTED = -15022,
921 
922  TMPFS_REMOVE_INVALID_VOLUME = -16001,
923  TMPFS_REMOVE_NO_TMPFS = -16002,
924  TMPFS_REMOVE_NOT_FOUND = -16003,
925 
926  CONTAINER_INTERNAL_ERROR = -99000,
927  CONTAINER_INVALID_VIRTUAL_CALL = -99001,
928 
929  };
930 
931 
936  {
937  public:
938 
939  StorageInterface () {}
940  virtual ~StorageInterface () {}
941 
945  virtual void getContainers( deque<ContainerInfo>& infos) = 0;
946 
954  virtual int getDiskInfo( const string& disk, DiskInfo& info) = 0;
955 
964  virtual int getContDiskInfo( const string& disk, ContainerInfo& cinfo,
965  DiskInfo& info ) = 0;
966 
974  virtual int getLvmVgInfo( const string& name, LvmVgInfo& info) = 0;
975 
984  virtual int getContLvmVgInfo( const string& name, ContainerInfo& cinfo,
985  LvmVgInfo& info) = 0;
986 
994  virtual int getDmraidCoInfo( const string& name, DmraidCoInfo& info) = 0;
995 
1004  virtual int getContDmraidCoInfo( const string& name, ContainerInfo& cinfo,
1005  DmraidCoInfo& info) = 0;
1006 
1014  virtual int getDmmultipathCoInfo( const string& name, DmmultipathCoInfo& info) = 0;
1015 
1024  virtual int getContDmmultipathCoInfo( const string& name, ContainerInfo& cinfo,
1025  DmmultipathCoInfo& info) = 0;
1026 
1034  virtual int getMdPartCoInfo( const string& name, MdPartCoInfo& info) = 0;
1035 
1036 
1045  virtual int getContMdPartCoInfo( const string& name, ContainerInfo& cinfo,
1046  MdPartCoInfo& info) = 0;
1047 
1053  virtual void setImsmDriver(ImsmDriver driver) = 0;
1054 
1060  virtual ImsmDriver getImsmDriver() const = 0;
1061 
1067  virtual void setMultipathAutostart(MultipathAutostart multipath_autostart) = 0;
1068 
1074  virtual MultipathAutostart getMultipathAutostart() const = 0;
1075 
1081  virtual void getVolumes( deque<VolumeInfo>& infos) = 0;
1082 
1090  virtual int getVolume( const string& device, VolumeInfo& info) = 0;
1091 
1099  virtual int getPartitionInfo( const string& disk,
1100  deque<PartitionInfo>& plist ) = 0;
1101 
1109  virtual int getLvmLvInfo( const string& name,
1110  deque<LvmLvInfo>& plist ) = 0;
1111 
1118  virtual int getMdInfo( deque<MdInfo>& plist ) = 0;
1119 
1127  virtual int getMdPartInfo( const string& device,
1128  deque<MdPartInfo>& plist ) = 0;
1129 
1136  virtual int getNfsInfo( deque<NfsInfo>& plist ) = 0;
1137 
1144  virtual int getLoopInfo( deque<LoopInfo>& plist ) = 0;
1145 
1152  virtual int getDmInfo( deque<DmInfo>& plist ) = 0;
1153 
1160  virtual int getBtrfsInfo( deque<BtrfsInfo>& plist ) = 0;
1161 
1168  virtual int getTmpfsInfo( deque<TmpfsInfo>& plist ) = 0;
1169 
1177  virtual int getDmraidInfo( const string& name,
1178  deque<DmraidInfo>& plist ) = 0;
1179 
1187  virtual int getDmmultipathInfo( const string& name,
1188  deque<DmmultipathInfo>& plist ) = 0;
1189 
1193  virtual bool getFsCapabilities (FsType fstype, FsCapabilities& fscapabilities) const = 0;
1194 
1198  virtual bool getDlabelCapabilities(const string& dlabel,
1199  DlabelCapabilities& dlabelcapabilities) const = 0;
1200 
1204  virtual list<string> getAllUsedFs() const = 0;
1205 
1218  virtual int createPartition( const string& disk, PartitionType type,
1219  unsigned long startCyl,
1220  unsigned long sizeCyl,
1221  string& SWIG_OUTPUT(device) ) = 0;
1222 
1231  virtual int resizePartition( const string& device,
1232  unsigned long sizeCyl ) = 0;
1233 
1242  virtual int resizePartitionNoFs( const string& device,
1243  unsigned long sizeCyl ) = 0;
1244 
1255  virtual int updatePartitionArea( const string& device,
1256  unsigned long startCyl,
1257  unsigned long sizeCyl ) = 0;
1258 
1267  virtual int freeCylindersAroundPartition(const string& device, unsigned long& freeCylsBefore,
1268  unsigned long& freeCylsAfter) = 0;
1269 
1279  virtual int nextFreePartition( const string& disk, PartitionType type,
1280  unsigned & SWIG_OUTPUT(nr),
1281  string& SWIG_OUTPUT(device) ) = 0;
1282 
1295  virtual int createPartitionKb( const string& disk, PartitionType type,
1296  unsigned long long startK,
1297  unsigned long long sizeK,
1298  string& SWIG_OUTPUT(device) ) = 0;
1299 
1310  virtual int createPartitionAny( const string& disk,
1311  unsigned long long sizeK,
1312  string& SWIG_OUTPUT(device) ) = 0;
1313 
1324  virtual int createPartitionMax( const string& disk, PartitionType type,
1325  string& SWIG_OUTPUT(device) ) = 0;
1326 
1334  virtual unsigned long long cylinderToKb( const string& disk,
1335  unsigned long sizeCyl) = 0;
1336 
1344  virtual unsigned long kbToCylinder( const string& disk,
1345  unsigned long long sizeK) = 0;
1346 
1353  virtual int removePartition (const string& partition) = 0;
1354 
1362  virtual int changePartitionId (const string& partition, unsigned id) = 0;
1363 
1370  virtual int forgetChangePartitionId (const string& partition ) = 0;
1371 
1379  virtual string getPartitionPrefix(const string& disk) = 0;
1380 
1389  virtual string getPartitionName(const string& disk, int partition_no) = 0;
1390 
1398  virtual int getUnusedPartitionSlots(const string& disk, list<PartitionSlotInfo>& slots) = 0;
1399 
1408  virtual int destroyPartitionTable (const string& disk, const string& label) = 0;
1409 
1420  virtual int initializeDisk( const string& disk, bool value ) = 0;
1421 
1430  virtual string defaultDiskLabel(const string& device) = 0;
1431 
1440  virtual int changeFormatVolume( const string& device, bool format, FsType fs ) = 0;
1441 
1449  virtual int changeLabelVolume( const string& device, const string& label ) = 0;
1450 
1458  virtual int changeMkfsOptVolume( const string& device, const string& opts ) = 0;
1459 
1467  virtual int changeTunefsOptVolume( const string& device, const string& opts ) = 0;
1468 
1477  virtual int changeMountPoint( const string& device, const string& mount ) = 0;
1478 
1486  virtual int getMountPoint( const string& device,
1487  string& SWIG_OUTPUT(mount) ) = 0;
1488 
1496  virtual int changeMountBy( const string& device, MountByType mby ) = 0;
1497 
1505  virtual int getMountBy( const string& device,
1506  MountByType& SWIG_OUTPUT(mby) ) = 0;
1507 
1517  virtual int changeFstabOptions( const string& device, const string& options ) = 0;
1518 
1527  virtual int getFstabOptions( const string& device,
1528  string& SWIG_OUTPUT(options) ) = 0;
1529 
1530 
1539  virtual int addFstabOptions( const string& device, const string& options ) = 0;
1540 
1550  virtual int removeFstabOptions( const string& device, const string& options ) = 0;
1551 
1559  virtual int setCryptPassword( const string& device, const string& pwd ) = 0;
1560 
1567  virtual int forgetCryptPassword( const string& device ) = 0;
1568 
1576  virtual int getCryptPassword( const string& device,
1577  string& SWIG_OUTPUT(pwd) ) = 0;
1578 
1587  virtual int verifyCryptPassword( const string& device,
1588  const string& pwd, bool erase ) = 0;
1589 
1596  virtual bool needCryptPassword( const string& device ) = 0;
1597 
1605  virtual int setCrypt( const string& device, bool val ) = 0;
1606 
1615  virtual int setCryptType( const string& device, bool val, EncryptType typ ) = 0;
1616 
1624  virtual int getCrypt( const string& device, bool& SWIG_OUTPUT(val) ) = 0;
1625 
1635  virtual int setIgnoreFstab( const string& device, bool val ) = 0;
1636 
1644  virtual int getIgnoreFstab( const string& device, bool& SWIG_OUTPUT(val) ) = 0;
1645 
1655  virtual int changeDescText( const string& device, const string& txt ) = 0;
1656 
1671  virtual int addFstabEntry( const string& device, const string& mount,
1672  const string& vfs, const string& options,
1673  unsigned freq, unsigned passno ) = 0;
1674 
1675 
1683  virtual int resizeVolume(const string& device, unsigned long long newSizeK) = 0;
1684 
1692  virtual int resizeVolumeNoFs(const string& device, unsigned long long newSizeK) = 0;
1693 
1700  virtual int forgetResizeVolume( const string& device ) = 0;
1701 
1716  virtual void setRecursiveRemoval( bool val ) = 0;
1717 
1723  virtual bool getRecursiveRemoval() const = 0;
1724 
1734  virtual int getRecursiveUsing(const list<string>& devices, bool itself,
1735  list<string>& using_devices) = 0;
1736 
1746  virtual int getRecursiveUsedBy(const list<string>& devices, bool itself,
1747  list<string>& usedby_devices) = 0;
1748 
1762  virtual void setZeroNewPartitions( bool val ) = 0;
1763 
1769  virtual bool getZeroNewPartitions() const = 0;
1770 
1782  virtual void setPartitionAlignment( PartAlign val ) = 0;
1783 
1789  virtual PartAlign getPartitionAlignment() const = 0;
1790 
1796  virtual void setDefaultMountBy( MountByType val ) = 0;
1797 
1803  virtual MountByType getDefaultMountBy() const = 0;
1804 
1810  virtual void setDefaultFs(FsType val) = 0;
1811 
1817  virtual FsType getDefaultFs() const = 0;
1818 
1824  virtual void setDefaultSubvolName( const string& val) = 0;
1825 
1831  virtual string getDefaultSubvolName() const = 0;
1832 
1838  virtual bool getEfiBoot() = 0;
1839 
1850  virtual void setRootPrefix( const string& root ) = 0;
1851 
1857  virtual string getRootPrefix() const = 0;
1858 
1864  virtual void setDetectMountedVolumes( bool val ) = 0;
1865 
1871  virtual bool getDetectMountedVolumes() const = 0;
1872 
1880  virtual int removeVolume( const string& device ) = 0;
1881 
1892  virtual int createLvmVg( const string& name,
1893  unsigned long long peSizeK, bool lvm1,
1894  const deque<string>& devs ) = 0;
1895 
1903  virtual int removeLvmVg( const string& name ) = 0;
1904 
1912  virtual int extendLvmVg( const string& name,
1913  const deque<string>& devs ) = 0;
1914 
1922  virtual int shrinkLvmVg( const string& name,
1923  const deque<string>& devs ) = 0;
1924 
1936  virtual int createLvmLv( const string& vg, const string& name,
1937  unsigned long long sizeK, unsigned stripes,
1938  string& SWIG_OUTPUT(device) ) = 0;
1939 
1946  virtual int removeLvmLvByDevice( const string& device ) = 0;
1947 
1955  virtual int removeLvmLv( const string& vg, const string& name ) = 0;
1956 
1966  virtual int changeLvStripeCount( const string& vg, const string& name,
1967  unsigned long stripes ) = 0;
1968 
1978  virtual int changeLvStripeSize( const string& vg, const string& name,
1979  unsigned long long stripeSizeK) = 0;
1980 
1991  virtual int createLvmLvSnapshot(const string& vg, const string& origin,
1992  const string& name, unsigned long long cowSizeK,
1993  string& SWIG_OUTPUT(device) ) = 0;
1994 
2002  virtual int removeLvmLvSnapshot(const string& vg, const string& name) = 0;
2003 
2014  virtual int getLvmLvSnapshotStateInfo(const string& vg, const string& name,
2015  LvmLvSnapshotStateInfo& info) = 0;
2016 
2024  virtual int nextFreeMd(unsigned& SWIG_OUTPUT(nr),
2025  string& SWIG_OUTPUT(device)) = 0;
2026 
2036  virtual int createMd(const string& name, MdType md_type, const list<string>& devices,
2037  const list<string>& spares) = 0;
2038 
2048  virtual int createMdAny(MdType md_type, const list<string>& devices,
2049  const list<string>& spares,
2050  string& SWIG_OUTPUT(device) ) = 0;
2051 
2060  virtual int removeMd( const string& name, bool destroySb ) = 0;
2061 
2071  virtual int extendMd(const string& name, const list<string>& devices,
2072  const list<string>& spares) = 0;
2073 
2083  virtual int updateMd(const string& name, const list<string>& devices,
2084  const list<string>& spares) = 0;
2085 
2095  virtual int shrinkMd(const string& name, const list<string>& devices,
2096  const list<string>& spares) = 0;
2097 
2106  virtual int changeMdType(const string& name, MdType md_type) = 0;
2107 
2116  virtual int changeMdChunk(const string& name, unsigned long chunkSizeK) = 0;
2117 
2126  virtual int changeMdParity( const string& name, MdParity ptype ) = 0;
2127 
2134  virtual int checkMd( const string& name ) = 0;
2135 
2145  virtual int getMdStateInfo(const string& name, MdStateInfo& info) = 0;
2146 
2156  virtual int getMdPartCoStateInfo(const string& name,
2157  MdPartCoStateInfo& info) = 0;
2158 
2171  virtual int computeMdSize(MdType md_type, const list<string>& devices,
2172  const list<string>& spares, unsigned long long& sizeK) = 0;
2173 
2181  virtual list<int> getMdAllowedParity(MdType md_type, unsigned devnr) = 0;
2182 
2193  virtual int removeMdPartCo(const string& name, bool destroySb ) = 0;
2194 
2205  virtual int addNfsDevice(const string& nfsDev, const string& opts,
2206  unsigned long long sizeK, const string& mp,
2207  bool nfs4) = 0;
2208 
2218  virtual int checkNfsDevice(const string& nfsDev, const string& opts,
2219  bool nfs4, unsigned long long& sizeK) = 0;
2220 
2237  virtual int createFileLoop( const string& lname, bool reuseExisting,
2238  unsigned long long sizeK,
2239  const string& mp, const string& pwd,
2240  string& SWIG_OUTPUT(device) ) = 0;
2241 
2259  virtual int modifyFileLoop( const string& device, const string& lname,
2260  bool reuseExisting,
2261  unsigned long long sizeK ) = 0;
2262 
2271  virtual int removeFileLoop( const string& lname, bool removeFile ) = 0;
2272 
2279  virtual int removeDmraid( const string& name ) = 0;
2280 
2288  virtual bool existSubvolume( const string& device, const string& name ) = 0;
2289 
2297  virtual int createSubvolume( const string& device, const string& name ) = 0;
2298 
2306  virtual int removeSubvolume( const string& device, const string& name ) = 0;
2307 
2316  virtual int extendBtrfsVolume( const string& name,
2317  const deque<string>& devs ) = 0;
2318 
2327  virtual int shrinkBtrfsVolume( const string& name,
2328  const deque<string>& devs ) = 0;
2329 
2337  virtual int addTmpfsMount( const string& mp, const string& opts ) = 0;
2338 
2345  virtual int removeTmpfsMount( const string& mp ) = 0;
2346 
2352  virtual void getCommitInfos(list<CommitInfo>& infos) const = 0;
2353 
2359  virtual const string& getLastAction() const = 0;
2360 
2367  virtual const string& getExtendedErrorMessage() const = 0;
2368 
2369 // temporarily disable callback function for swig
2370 #ifndef SWIG
2371 
2377  virtual void setCallbackProgressBar(CallbackProgressBar pfnc) = 0;
2378 
2384  virtual CallbackProgressBar getCallbackProgressBar() const = 0;
2385 
2386 
2392  virtual void setCallbackShowInstallInfo(CallbackShowInstallInfo pfnc) = 0;
2393 
2399  virtual CallbackShowInstallInfo getCallbackShowInstallInfo() const = 0;
2400 
2401 
2408  virtual void setCallbackInfoPopup(CallbackInfoPopup pfnc) = 0;
2409 
2416  virtual CallbackInfoPopup getCallbackInfoPopup() const = 0;
2417 
2418 
2425  virtual void setCallbackYesNoPopup(CallbackYesNoPopup pfnc) = 0;
2426 
2433  virtual CallbackYesNoPopup getCallbackYesNoPopup() const = 0;
2434 
2435 
2441  virtual void setCallbackCommitErrorPopup(CallbackCommitErrorPopup pfnc) = 0;
2442 
2448  virtual CallbackCommitErrorPopup getCallbackCommitErrorPopup() const = 0;
2449 
2450 
2456  virtual void setCallbackPasswordPopup(CallbackPasswordPopup pfnc) = 0;
2457 
2464  virtual CallbackPasswordPopup getCallbackPasswordPopup() const = 0;
2465 
2466 #endif
2467 
2473  virtual void setCacheChanges (bool cache) = 0;
2474 
2478  virtual bool isCacheChanges () const = 0;
2479 
2484  virtual int commit() = 0;
2485 
2489  virtual string getErrorString(int error) const = 0;
2490 
2497  virtual int createBackupState( const string& name ) = 0;
2498 
2505  virtual int restoreBackupState( const string& name ) = 0;
2506 
2513  virtual bool checkBackupState(const string& name) const = 0;
2514 
2523  virtual bool equalBackupStates(const string& lhs, const string& rhs,
2524  bool verbose_log) const = 0;
2525 
2533  virtual int removeBackupState( const string& name ) = 0;
2534 
2542  virtual bool checkDeviceMounted(const string& device, list<string>& mps) = 0;
2543 
2553  virtual bool umountDevice( const string& device ) = 0;
2554 
2565  virtual bool mountDevice( const string& device, const string& mp ) = 0;
2566 
2577  virtual int activateEncryption( const string& device, bool on ) = 0;
2578 
2590  virtual bool mountDeviceOpts( const string& device, const string& mp,
2591  const string& opts ) = 0;
2592 
2604  virtual bool mountDeviceRo( const string& device, const string& mp,
2605  const string& opts ) = 0;
2606 
2613  virtual bool checkDmMapsTo( const string& device ) = 0;
2614 
2620  virtual void removeDmTableTo( const string& device ) = 0;
2621 
2630  virtual int renameCryptDm( const string& device,
2631  const string& new_name ) = 0;
2632 
2644  virtual bool getFreeInfo(const string& device, bool get_resize, ResizeInfo& resize_info,
2645  bool get_content, ContentInfo& content_info, bool use_cache) = 0;
2646 
2654  virtual bool readFstab( const string& dir, deque<VolumeInfo>& infos) = 0;
2655 
2665  virtual void activateHld( bool val ) = 0;
2666 
2675  virtual void activateMultipath( bool val ) = 0;
2676 
2685  virtual void rescanEverything() = 0;
2686 
2695  virtual bool rescanCryptedObjects() = 0;
2696 
2700  virtual void dumpObjectList() = 0;
2701 
2705  virtual void dumpCommitInfos() const = 0;
2706 
2716  virtual int getContVolInfo(const string& dev, ContVolInfo& info) = 0;
2717 
2718  };
2719 
2720 
2724  void initDefaultLogger();
2725 
2729  void initDefaultLogger( const string& logdir );
2730 
2735  typedef void (*CallbackLogDo)( int level, const string& component, const char* file,
2736  int line, const char* function, const string& content );
2737 
2742  typedef bool (*CallbackLogQuery)( int level, const string& component );
2743 
2747  void setLogDoCallback( CallbackLogDo pfc );
2748 
2752  CallbackLogDo getLogDoCallback();
2753 
2757  void setLogQueryCallback( CallbackLogQuery pfc );
2758 
2762  CallbackLogQuery getLogQueryCallback();
2763 
2768  {
2769  Environment(bool readonly, const string& logdr="/var/log/YaST2") : readonly(readonly), testmode(false), autodetect(true),
2770  instsys(false), logdir(logdr), testdir("tmp")
2771  {
2772  storage::initDefaultLogger( logdir );
2773  }
2774 
2775  bool readonly;
2776  bool testmode;
2777  bool autodetect;
2778  bool instsys;
2779  string logdir;
2780  string testdir;
2781  };
2782 
2783 
2789  StorageInterface* createStorageInterface(const Environment& env);
2790 
2791 
2799  StorageInterface* createStorageInterfacePid(const Environment& env, int& locker_pid);
2800 
2801 
2805  void destroyStorageInterface(StorageInterface*);
2806 
2807 }
2808 
2809 
2810 #endif