Re: [PATCH 3/3] partitions/ibm: use bdev_nr_sectors instead of open coding it

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 19 Oct 2021 at 08:20, Christoph Hellwig <hch@xxxxxx> wrote:
>
> Use the proper helper to read the block device size and switch various
> places to pass the size in terms of sectors which is more practical.
>
> Signed-off-by: Christoph Hellwig <hch@xxxxxx>
> ---
>  block/partitions/ibm.c | 19 ++++++++++---------
>  1 file changed, 10 insertions(+), 9 deletions(-)
>
> diff --git a/block/partitions/ibm.c b/block/partitions/ibm.c
> index 9bca396aef4ad..d56912fe81732 100644
> --- a/block/partitions/ibm.c
> +++ b/block/partitions/ibm.c
> @@ -198,7 +198,7 @@ static int find_lnx1_partitions(struct parsed_partitions *state,
>                                 char name[],
>                                 union label_t *label,
>                                 sector_t labelsect,
> -                               loff_t i_size,
> +                               sector_t nr_sectors,
>                                 dasd_information2_t *info)
>  {
>         loff_t offset, geo_size, size;
> @@ -213,14 +213,14 @@ static int find_lnx1_partitions(struct parsed_partitions *state,
>         } else {
>                 /*
>                  * Formated w/o large volume support. If the sanity check
> -                * 'size based on geo == size based on i_size' is true, then
> +                * 'size based on geo == size based on br_sectors' is true,

nr_sectors

>                  * we can safely assume that we know the formatted size of
>                  * the disk, otherwise we need additional information
>                  * that we can only get from a real DASD device.
>                  */
>                 geo_size = geo->cylinders * geo->heads
>                         * geo->sectors * secperblk;
> -               size = i_size >> 9;
> +               size = nr_sectors;
>                 if (size != geo_size) {
>                         if (!info) {
>                                 strlcat(state->pp_buf, "\n", PAGE_SIZE);
> @@ -229,7 +229,7 @@ static int find_lnx1_partitions(struct parsed_partitions *state,
>                         if (!strcmp(info->type, "ECKD"))
>                                 if (geo_size < size)
>                                         size = geo_size;
> -                       /* else keep size based on i_size */
> +                       /* else keep size based on nr_sectors */
>                 }
>         }
>         /* first and only partition starts in the first block after the label */
> @@ -293,7 +293,8 @@ int ibm_partition(struct parsed_partitions *state)
>         struct gendisk *disk = state->disk;
>         struct block_device *bdev = disk->part0;
>         int blocksize, res;
> -       loff_t i_size, offset, size;
> +       loff_t offset, size;
> +       sector_t nr_sectors;
>         dasd_information2_t *info;
>         struct hd_geometry *geo;
>         char type[5] = {0,};
> @@ -308,8 +309,8 @@ int ibm_partition(struct parsed_partitions *state)
>         blocksize = bdev_logical_block_size(bdev);
>         if (blocksize <= 0)
>                 goto out_symbol;
> -       i_size = i_size_read(bdev->bd_inode);
> -       if (i_size == 0)
> +       nr_sectors = bdev_nr_sectors(bdev);
> +       if (nr_sectors == 0)
>                 goto out_symbol;
>         info = kmalloc(sizeof(dasd_information2_t), GFP_KERNEL);
>         if (info == NULL)
> @@ -336,7 +337,7 @@ int ibm_partition(struct parsed_partitions *state)
>                                                    label);
>                 } else if (!strncmp(type, "LNX1", 4)) {
>                         res = find_lnx1_partitions(state, geo, blocksize, name,
> -                                                  label, labelsect, i_size,
> +                                                  label, labelsect, nr_sectors,
>                                                    info);
>                 } else if (!strncmp(type, "CMS1", 4)) {
>                         res = find_cms1_partitions(state, geo, blocksize, name,
> @@ -353,7 +354,7 @@ int ibm_partition(struct parsed_partitions *state)
>                 res = 1;
>                 if (info->format == DASD_FORMAT_LDL) {
>                         strlcat(state->pp_buf, "(nonl)", PAGE_SIZE);
> -                       size = i_size >> 9;
> +                       size = nr_sectors;
>                         offset = (info->label_block + 1) * (blocksize >> 9);
>                         put_partition(state, 1, offset, size-offset);
>                         strlcat(state->pp_buf, "\n", PAGE_SIZE);
> --
> 2.30.2
>



[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux