Always return last partition end address in 512B blocks
For 4K disks 'endofpart' is an index of the last 4K sector used by partition. mdadm is using number of 512-byte sectors, so value returned by get_last_partition_end must be multiplied by 8 for devices with 4K sectors. Also, unused 'ret' variable has been removed. Signed-off-by: Mariusz Dabrowski <mariusz.dabrowski@intel.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
This commit is contained in:
parent
41b06495ba
commit
31208db97e
7
util.c
7
util.c
|
@ -1435,6 +1435,7 @@ static int get_last_partition_end(int fd, unsigned long long *endofpart)
|
|||
struct MBR boot_sect;
|
||||
unsigned long long curr_part_end;
|
||||
unsigned part_nr;
|
||||
unsigned int sector_size;
|
||||
int retval = 0;
|
||||
|
||||
*endofpart = 0;
|
||||
|
@ -1474,6 +1475,9 @@ static int get_last_partition_end(int fd, unsigned long long *endofpart)
|
|||
/* Unknown partition table */
|
||||
retval = -1;
|
||||
}
|
||||
/* calculate number of 512-byte blocks */
|
||||
if (get_dev_sector_size(fd, NULL, §or_size))
|
||||
*endofpart *= (sector_size / 512);
|
||||
abort:
|
||||
return retval;
|
||||
}
|
||||
|
@ -1485,9 +1489,8 @@ int check_partitions(int fd, char *dname, unsigned long long freesize,
|
|||
* Check where the last partition ends
|
||||
*/
|
||||
unsigned long long endofpart;
|
||||
int ret;
|
||||
|
||||
if ((ret = get_last_partition_end(fd, &endofpart)) > 0) {
|
||||
if (get_last_partition_end(fd, &endofpart) > 0) {
|
||||
/* There appears to be a partition table here */
|
||||
if (freesize == 0) {
|
||||
/* partitions will not be visible in new device */
|
||||
|
|
Loading…
Reference in New Issue