add: if (partition->type && !strcmp(partition->type, kPartitionTypeIntelExtended)) { return -1; }
context: pm_identify_partition(int fd, partition_data *partition, void **cookie){	// check parameters	if (fd < 0 || !partition || !cookie)		return -1;	TRACE(("intel: pm_identify_partition(%d, %ld: %lld, %lld, %ld)\n", fd,		   partition->id, partition->offset, partition->size,		   partition->block_size));	// check block size	uint32 blockSize = partition->block_size;	if (blockSize < sizeof(partition_table_sector)) {		TRACE(("intel: read_partition_map: bad block size: %ld, should be "			   ">= %ld\n", blockSize, sizeof(partition_table_sector)));		return -1;	}	// allocate a PartitionMap	PartitionMap *map = new(nothrow) PartitionMap;	if (!map)		return -1;	// read the partition structure	PartitionMapParser parser(fd, 0, partition->size, blockSize);	status_t error = parser.Parse(NULL, map);	if (error == B_OK) {		*cookie = map;		return 0.5;	}	// cleanup, if not detected	delete map;	return -1;}