return MB2BYTES(64);
}
+static int hw_device_has_p_suffix(const struct hw_destination* dest) {
+ // All RAID devices have the p suffix.
+ if (dest->is_raid)
+ return 1;
+
+ // Devices with a number at the end have the p suffix, too.
+ // e.g. mmcblk0, cciss0
+ unsigned int last_char = strlen(dest->path);
+ if ((dest->path[last_char] >= '0') && (dest->path[last_char] <= '9'))
+ return 1;
+
+ return 0;
+}
+
static int hw_calculate_partition_table(struct hw_destination* dest) {
char path[DEV_SIZE];
int part_idx = 1;
- snprintf(path, sizeof(path), "%s%s", dest->path, (dest->is_raid) ? "p" : "");
+ snprintf(path, sizeof(path), "%s%s", dest->path,
+ hw_device_has_p_suffix(dest) ? "p" : "");
dest->part_boot_idx = 0;
// Determine the size of the target block device