HAL: Storage and Volume abstraction

Main Page | Modules | Data Structures | Directories | File List | Data Fields | Related Pages

# Storage and Volume abstraction

## Data Structures
struct | LibHalStoragePolicyIconPair
## Enumerations
enum | LibHalStoragePolicyIcon { LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK = 0x10000, LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_IDE = 0x10001, LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_SCSI = 0x10002, LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_USB = 0x10003, LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_IEEE1394 = 0x10004, LIBHAL_STORAGE_ICON_DRIVE_DISK = 0x10100, LIBHAL_STORAGE_ICON_DRIVE_DISK_IDE = 0x10101, LIBHAL_STORAGE_ICON_DRIVE_DISK_SCSI = 0x10102, LIBHAL_STORAGE_ICON_DRIVE_DISK_USB = 0x10103, LIBHAL_STORAGE_ICON_DRIVE_DISK_IEEE1394 = 0x10104, LIBHAL_STORAGE_ICON_DRIVE_CDROM = 0x10200, LIBHAL_STORAGE_ICON_DRIVE_CDROM_IDE = 0x10201, LIBHAL_STORAGE_ICON_DRIVE_CDROM_SCSI = 0x10202, LIBHAL_STORAGE_ICON_DRIVE_CDROM_USB = 0x10203, LIBHAL_STORAGE_ICON_DRIVE_CDROM_IEEE1394 = 0x10204, LIBHAL_STORAGE_ICON_DRIVE_FLOPPY = 0x10300, LIBHAL_STORAGE_ICON_DRIVE_FLOPPY_IDE = 0x10301, LIBHAL_STORAGE_ICON_DRIVE_FLOPPY_SCSI = 0x10302, LIBHAL_STORAGE_ICON_DRIVE_FLOPPY_USB = 0x10303, LIBHAL_STORAGE_ICON_DRIVE_FLOPPY_IEEE1394 = 0x10304, LIBHAL_STORAGE_ICON_DRIVE_TAPE = 0x10400, LIBHAL_STORAGE_ICON_DRIVE_COMPACT_FLASH = 0x10500, LIBHAL_STORAGE_ICON_DRIVE_MEMORY_STICK = 0x10600, LIBHAL_STORAGE_ICON_DRIVE_SMART_MEDIA = 0x10700, LIBHAL_STORAGE_ICON_DRIVE_SD_MMC = 0x10800, LIBHAL_STORAGE_ICON_DRIVE_CAMERA = 0x10900, LIBHAL_STORAGE_ICON_DRIVE_PORTABLE_AUDIO_PLAYER = 0x10a00, LIBHAL_STORAGE_ICON_DRIVE_ZIP = 0x10b00, LIBHAL_STORAGE_ICON_DRIVE_JAZ = 0x10c00, LIBHAL_STORAGE_ICON_DRIVE_FLASH_KEY = 0x10d00, LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK = 0x20000, LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_IDE = 0x20001, LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_SCSI = 0x20002, LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_USB = 0x20003, LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_IEEE1394 = 0x20004, LIBHAL_STORAGE_ICON_VOLUME_DISK = 0x20100, LIBHAL_STORAGE_ICON_VOLUME_DISK_IDE = 0x20101, LIBHAL_STORAGE_ICON_VOLUME_DISK_SCSI = 0x20102, LIBHAL_STORAGE_ICON_VOLUME_DISK_USB = 0x20103, LIBHAL_STORAGE_ICON_VOLUME_DISK_IEEE1394 = 0x20104, LIBHAL_STORAGE_ICON_VOLUME_CDROM = 0x20200, LIBHAL_STORAGE_ICON_VOLUME_CDROM_IDE = 0x20201, LIBHAL_STORAGE_ICON_VOLUME_CDROM_SCSI = 0x20202, LIBHAL_STORAGE_ICON_VOLUME_CDROM_USB = 0x20203, LIBHAL_STORAGE_ICON_VOLUME_CDROM_IEEE1394 = 0x20204, LIBHAL_STORAGE_ICON_VOLUME_FLOPPY = 0x20300, LIBHAL_STORAGE_ICON_VOLUME_FLOPPY_IDE = 0x20301, LIBHAL_STORAGE_ICON_VOLUME_FLOPPY_SCSI = 0x20302, LIBHAL_STORAGE_ICON_VOLUME_FLOPPY_USB = 0x20303, LIBHAL_STORAGE_ICON_VOLUME_FLOPPY_IEEE1394 = 0x20304, LIBHAL_STORAGE_ICON_VOLUME_TAPE = 0x20400, LIBHAL_STORAGE_ICON_VOLUME_COMPACT_FLASH = 0x20500, LIBHAL_STORAGE_ICON_VOLUME_MEMORY_STICK = 0x20600, LIBHAL_STORAGE_ICON_VOLUME_SMART_MEDIA = 0x20700, LIBHAL_STORAGE_ICON_VOLUME_SD_MMC = 0x20800, LIBHAL_STORAGE_ICON_VOLUME_CAMERA = 0x20900, LIBHAL_STORAGE_ICON_VOLUME_PORTABLE_AUDIO_PLAYER = 0x20a00, LIBHAL_STORAGE_ICON_VOLUME_ZIP = 0x20b00, LIBHAL_STORAGE_ICON_VOLUME_JAZ = 0x20c00, LIBHAL_STORAGE_ICON_VOLUME_FLASH_KEY = 0x20d00, LIBHAL_STORAGE_ICON_DISC_CDROM = 0x30000, LIBHAL_STORAGE_ICON_DISC_CDR = 0x30001, LIBHAL_STORAGE_ICON_DISC_CDRW = 0x30002, LIBHAL_STORAGE_ICON_DISC_DVDROM = 0x30003, LIBHAL_STORAGE_ICON_DISC_DVDRAM = 0x30004, LIBHAL_STORAGE_ICON_DISC_DVDR = 0x30005, LIBHAL_STORAGE_ICON_DISC_DVDRW = 0x30006, LIBHAL_STORAGE_ICON_DISC_DVDPLUSR = 0x30007, LIBHAL_STORAGE_ICON_DISC_DVDPLUSRW = 0x30008 }
enum | LibHalDriveBus { LIBHAL_DRIVE_BUS_UNKNOWN = 0x00, LIBHAL_DRIVE_BUS_IDE = 0x01, LIBHAL_DRIVE_BUS_SCSI = 0x02, LIBHAL_DRIVE_BUS_USB = 0x03, LIBHAL_DRIVE_BUS_IEEE1394 = 0x04, LIBHAL_DRIVE_BUS_CCW = 0x05 }
enum | LibHalDriveType { LIBHAL_DRIVE_TYPE_REMOVABLE_DISK = 0x00, LIBHAL_DRIVE_TYPE_DISK = 0x01, LIBHAL_DRIVE_TYPE_CDROM = 0x02, LIBHAL_DRIVE_TYPE_FLOPPY = 0x03, LIBHAL_DRIVE_TYPE_TAPE = 0x04, LIBHAL_DRIVE_TYPE_COMPACT_FLASH = 0x05, LIBHAL_DRIVE_TYPE_MEMORY_STICK = 0x06, LIBHAL_DRIVE_TYPE_SMART_MEDIA = 0x07, LIBHAL_DRIVE_TYPE_SD_MMC = 0x08, LIBHAL_DRIVE_TYPE_CAMERA = 0x09, LIBHAL_DRIVE_TYPE_PORTABLE_AUDIO_PLAYER = 0x0a, LIBHAL_DRIVE_TYPE_ZIP = 0x0b, LIBHAL_DRIVE_TYPE_JAZ = 0x0c, LIBHAL_DRIVE_TYPE_FLASHKEY = 0x0d }
enum | LibHalDriveCdromCaps { LIBHAL_DRIVE_CDROM_CAPS_CDROM = 0x0001, LIBHAL_DRIVE_CDROM_CAPS_CDR = 0x0002, LIBHAL_DRIVE_CDROM_CAPS_CDRW = 0x0004, LIBHAL_DRIVE_CDROM_CAPS_DVDRAM = 0x0008, LIBHAL_DRIVE_CDROM_CAPS_DVDROM = 0x0010, LIBHAL_DRIVE_CDROM_CAPS_DVDR = 0x0020, LIBHAL_DRIVE_CDROM_CAPS_DVDRW = 0x0040, LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSR = 0x0080, LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSRW = 0x0100, LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSRDL = 0x0120 }
enum | LibHalVolumeUsage { LIBHAL_VOLUME_USAGE_MOUNTABLE_FILESYSTEM, LIBHAL_VOLUME_USAGE_PARTITION_TABLE, LIBHAL_VOLUME_USAGE_RAID_MEMBER, LIBHAL_VOLUME_USAGE_CRYPTO, LIBHAL_VOLUME_USAGE_UNKNOWN }
enum | LibHalVolumeDiscType { LIBHAL_VOLUME_DISC_TYPE_CDROM = 0x00, LIBHAL_VOLUME_DISC_TYPE_CDR = 0x01, LIBHAL_VOLUME_DISC_TYPE_CDRW = 0x02, LIBHAL_VOLUME_DISC_TYPE_DVDROM = 0x03, LIBHAL_VOLUME_DISC_TYPE_DVDRAM = 0x04, LIBHAL_VOLUME_DISC_TYPE_DVDR = 0x05, LIBHAL_VOLUME_DISC_TYPE_DVDRW = 0x06, LIBHAL_VOLUME_DISC_TYPE_DVDPLUSR = 0x07, LIBHAL_VOLUME_DISC_TYPE_DVDPLUSRW = 0x08, LIBHAL_VOLUME_DISC_TYPE_DVDPLUSR_DL = 0x09 }
## Functions
LibHalStoragePolicy * | libhal_storage_policy_new (void)
void | libhal_storage_policy_free (LibHalStoragePolicy *policy)
void | libhal_storage_policy_set_icon_path (LibHalStoragePolicy *policy, LibHalStoragePolicyIcon icon, const char *path)
void | libhal_storage_policy_set_icon_mapping (LibHalStoragePolicy *policy, LibHalStoragePolicyIconPair *pairs)
const char * | libhal_storage_policy_lookup_icon (LibHalStoragePolicy *policy, LibHalStoragePolicyIcon icon)
LibHalDrive * | libhal_drive_from_udi (LibHalContext *hal_ctx, const char *udi)
| Given a UDI for a HAL device of capability 'storage', this function retrieves all the relevant properties into convenient in-process data structures.
LibHalDrive * | libhal_drive_from_device_file (LibHalContext *hal_ctx, const char *device_file)
| Get the drive object that either is (when given e.g.
void | libhal_drive_free (LibHalDrive *drive)
| Free all resources used by a LibHalDrive object.
dbus_bool_t | libhal_drive_is_hotpluggable (LibHalDrive *drive)
dbus_bool_t | libhal_drive_uses_removable_media (LibHalDrive *drive)
dbus_bool_t | libhal_drive_no_partitions_hint (LibHalDrive *drive)
dbus_bool_t | libhal_drive_requires_eject (LibHalDrive *drive)
LibHalDriveType | libhal_drive_get_type (LibHalDrive *drive)
LibHalDriveBus | libhal_drive_get_bus (LibHalDrive *drive)
LibHalDriveCdromCaps | libhal_drive_get_cdrom_caps (LibHalDrive *drive)
unsigned int | libhal_drive_get_device_major (LibHalDrive *drive)
unsigned int | libhal_drive_get_device_minor (LibHalDrive *drive)
const char * | libhal_drive_get_type_textual (LibHalDrive *drive)
const char * | libhal_drive_get_device_file (LibHalDrive *drive)
const char * | libhal_drive_get_udi (LibHalDrive *drive)
const char * | libhal_drive_get_serial (LibHalDrive *drive)
const char * | libhal_drive_get_firmware_version (LibHalDrive *drive)
const char * | libhal_drive_get_model (LibHalDrive *drive)
const char * | libhal_drive_get_vendor (LibHalDrive *drive)
const char * | libhal_drive_get_physical_device_udi (LibHalDrive *drive)
const char * | libhal_drive_get_dedicated_icon_drive (LibHalDrive *drive)
const char * | libhal_drive_get_dedicated_icon_volume (LibHalDrive *drive)
char * | libhal_drive_policy_compute_display_name (LibHalDrive *drive, LibHalVolume *volume, LibHalStoragePolicy *policy)
char * | libhal_drive_policy_compute_icon_name (LibHalDrive *drive, LibHalVolume *volume, LibHalStoragePolicy *policy)
dbus_bool_t | libhal_drive_policy_is_mountable (LibHalDrive *drive, LibHalStoragePolicy *policy)
const char * | libhal_drive_policy_get_desired_mount_point (LibHalDrive *drive, LibHalStoragePolicy *policy)
const char * | libhal_drive_policy_get_mount_options (LibHalDrive *drive, LibHalStoragePolicy *policy)
const char * | libhal_drive_policy_get_mount_fs (LibHalDrive *drive, LibHalStoragePolicy *policy)
char ** | libhal_drive_find_all_volumes (LibHalContext *hal_ctx, LibHalDrive *drive, int *num_volumes)
char * | libhal_drive_policy_default_get_mount_root (LibHalContext *hal_ctx)
dbus_bool_t | libhal_drive_policy_default_use_managed_keyword (LibHalContext *hal_ctx)
char * | libhal_drive_policy_default_get_managed_keyword_primary (LibHalContext *hal_ctx)
char * | libhal_drive_policy_default_get_managed_keyword_secondary (LibHalContext *hal_ctx)
LibHalVolume * | libhal_volume_from_udi (LibHalContext *hal_ctx, const char *udi)
| Given a UDI for a LIBHAL device of capability 'volume', this function retrieves all the relevant properties into convenient in-process data structures.
LibHalVolume * | libhal_volume_from_device_file (LibHalContext *hal_ctx, const char *device_file)
| Get the volume object for a given device file.
void | libhal_volume_free (LibHalVolume *volume)
| Free all resources used by a LibHalVolume object.
dbus_uint64_t | libhal_volume_get_size (LibHalVolume *volume)
const char * | libhal_volume_get_udi (LibHalVolume *volume)
const char * | libhal_volume_get_device_file (LibHalVolume *volume)
unsigned int | libhal_volume_get_device_major (LibHalVolume *volume)
unsigned int | libhal_volume_get_device_minor (LibHalVolume *volume)
const char * | libhal_volume_get_fstype (LibHalVolume *volume)
const char * | libhal_volume_get_fsversion (LibHalVolume *volume)
LibHalVolumeUsage | libhal_volume_get_fsusage (LibHalVolume *volume)
dbus_bool_t | libhal_volume_is_mounted (LibHalVolume *volume)
dbus_bool_t | libhal_volume_is_partition (LibHalVolume *volume)
dbus_bool_t | libhal_volume_is_disc (LibHalVolume *volume)
unsigned int | libhal_volume_get_partition_number (LibHalVolume *volume)
const char * | libhal_volume_get_label (LibHalVolume *volume)
const char * | libhal_volume_get_mount_point (LibHalVolume *volume)
const char * | libhal_volume_get_uuid (LibHalVolume *volume)
const char * | libhal_volume_get_storage_device_udi (LibHalVolume *volume)
dbus_bool_t | libhal_volume_disc_has_audio (LibHalVolume *volume)
dbus_bool_t | libhal_volume_disc_has_data (LibHalVolume *volume)
dbus_bool_t | libhal_volume_disc_is_blank (LibHalVolume *volume)
dbus_bool_t | libhal_volume_disc_is_rewritable (LibHalVolume *volume)
dbus_bool_t | libhal_volume_disc_is_appendable (LibHalVolume *volume)
LibHalVolumeDiscType | libhal_volume_get_disc_type (LibHalVolume *volume)
int | libhal_volume_get_msdos_part_table_type (LibHalVolume *volume)
| If the volume is on a drive with a MSDOS style partition table, return the partition table id.
char * | libhal_volume_policy_compute_size_as_string (LibHalVolume *volume)
char * | libhal_volume_policy_compute_display_name (LibHalDrive *drive, LibHalVolume *volume, LibHalStoragePolicy *policy)
char * | libhal_volume_policy_compute_icon_name (LibHalDrive *drive, LibHalVolume *volume, LibHalStoragePolicy *policy)
dbus_bool_t | libhal_volume_policy_should_be_visible (LibHalDrive *drive, LibHalVolume *volume, LibHalStoragePolicy *policy, const char *target_mount_point)
| Policy function to determine if a volume should be visible in a desktop environment.
dbus_bool_t | libhal_volume_policy_is_mountable (LibHalDrive *drive, LibHalVolume *volume, LibHalStoragePolicy *policy)
const char * | libhal_volume_policy_get_desired_mount_point (LibHalDrive *drive, LibHalVolume *volume, LibHalStoragePolicy *policy)
const char * | libhal_volume_policy_get_mount_options (LibHalDrive *drive, LibHalVolume *volume, LibHalStoragePolicy *policy)
const char * | libhal_volume_policy_get_mount_fs (LibHalDrive *drive, LibHalVolume *volume, LibHalStoragePolicy *policy)

## Function Documentation

void libhal_drive_free | ( | LibHalDrive * | drive | ) |

  | Free all resources used by a LibHalDrive object. Parameters:
  | drive | Object to free
Definition at line 733 of file libhal-storage.c. References libhal_free_string(), and libhal_free_string_array(). Referenced by libhal_drive_from_udi().

LibHalDrive* libhal_drive_from_device_file | ( | LibHalContext * | hal_ctx,
|  | const char * | device_file
| ) |

  | Get the drive object that either is (when given e.g. /dev/sdb) or contains (when given e.g. /dev/sdb1) the given device file. Parameters:
  | hal_ctx | libhal context to use
  | device_file | Name of special device file, e.g. '/dev/hdc'
Returns: LibHalDrive object or NULL if it doesn't exist Definition at line 1144 of file libhal-storage.c. References libhal_device_get_property_string(), libhal_device_query_capability(), libhal_drive_from_udi(), libhal_free_string(), libhal_free_string_array(), and libhal_manager_find_device_string_match().

LibHalDrive* libhal_drive_from_udi | ( | LibHalContext * | hal_ctx,
|  | const char * | udi
| ) |

  | Given a UDI for a HAL device of capability 'storage', this function retrieves all the relevant properties into convenient in-process data structures. Parameters:
  | hal_ctx | libhal context
  | udi | HAL UDI
Returns: LibHalDrive object or NULL if UDI is invalid Definition at line 815 of file libhal-storage.c. References libhal_device_get_all_properties(), libhal_device_query_capability(), libhal_drive_free(), libhal_free_property_set(), libhal_free_string(), LIBHAL_PROP_EXTRACT_BEGIN, LIBHAL_PROP_EXTRACT_BOOL, LIBHAL_PROP_EXTRACT_BOOL_BITFIELD, LIBHAL_PROP_EXTRACT_END, LIBHAL_PROP_EXTRACT_INT, LIBHAL_PROP_EXTRACT_STRING, LIBHAL_PROP_EXTRACT_STRLIST, libhal_psi_get_key(), libhal_psi_get_type(), libhal_psi_has_more(), libhal_psi_init(), and libhal_psi_next(). Referenced by libhal_drive_from_device_file().

void libhal_volume_free | ( | LibHalVolume * | vol | ) |

  | Free all resources used by a LibHalVolume object. Parameters:
  | volume | Object to free
Definition at line 757 of file libhal-storage.c. References libhal_free_string(). Referenced by libhal_volume_from_udi().

LibHalVolume* libhal_volume_from_device_file | ( | LibHalContext * | hal_ctx,
|  | const char * | device_file
| ) |

  | Get the volume object for a given device file. Parameters:
  | hal_ctx | libhal context to use
  | device_file | Name of special device file, e.g. '/dev/hda5'
Returns: LibHalVolume object or NULL if it doesn't exist Definition at line 1203 of file libhal-storage.c. References libhal_device_query_capability(), libhal_free_string_array(), libhal_manager_find_device_string_match(), and libhal_volume_from_udi().

LibHalVolume* libhal_volume_from_udi | ( | LibHalContext * | hal_ctx,
|  | const char * | udi
| ) |

  | Given a UDI for a LIBHAL device of capability 'volume', this function retrieves all the relevant properties into convenient in-process data structures. Parameters:
  | hal_ctx | libhal context
  | udi | HAL UDI
Returns: LibHalVolume object or NULL if UDI is invalid Definition at line 997 of file libhal-storage.c. References libhal_device_get_all_properties(), libhal_device_query_capability(), libhal_free_property_set(), libhal_free_string(), LIBHAL_PROP_EXTRACT_BEGIN, LIBHAL_PROP_EXTRACT_BOOL, LIBHAL_PROP_EXTRACT_END, LIBHAL_PROP_EXTRACT_INT, LIBHAL_PROP_EXTRACT_STRING, libhal_psi_get_key(), libhal_psi_get_type(), libhal_psi_has_more(), libhal_psi_init(), libhal_psi_next(), and libhal_volume_free(). Referenced by libhal_volume_from_device_file().

int libhal_volume_get_msdos_part_table_type | ( | LibHalVolume * | volume | ) |

  | If the volume is on a drive with a MSDOS style partition table, return the partition table id. Parameters:
  | volume | Volume object
Returns: The partition type or -1 if volume is not a partition or the media the volume stems from isn't partition with a MS DOS style table Definition at line 1129 of file libhal-storage.c.

dbus_bool_t libhal_volume_policy_should_be_visible | ( | LibHalDrive * | drive,
|  | LibHalVolume * | volume,
|  | LibHalStoragePolicy * | policy,
|  | const char * | target_mount_point
| ) |

  | Policy function to determine if a volume should be visible in a desktop environment. This is useful to hide certain system volumes as bootstrap partitions, the /usr partition, swap partitions and other volumes that a unprivileged desktop user shouldn't know even exists. Parameters:
  | drive | Drive that the volume is stemming from
  | volume | Volume
  | policy | Policy object
  | target_mount_point | The mount point that the volume is expected to be mounted at if not already mounted. This may e.g. stem from /etc/fstab. If this is NULL the then mount point isn't taking into account when evaluating whether the volume should be visible
Returns: Whether the volume should be shown in a desktop environment. Definition at line 564 of file libhal-storage.c. References libhal_volume_get_fstype(), libhal_volume_get_fsusage(), libhal_volume_get_label(), and libhal_volume_get_mount_point().