@@ -132,7 +132,7 @@ static int blk_ioctl_discard(struct block_device *bdev, fmode_t mode,
132
132
if (len & 511 )
133
133
return - EINVAL ;
134
134
135
- if (start + len > i_size_read (bdev -> bd_inode ))
135
+ if (start + len > bdev_nr_bytes (bdev ))
136
136
return - EINVAL ;
137
137
138
138
err = truncate_bdev_range (bdev , mode , start , start + len - 1 );
@@ -164,7 +164,7 @@ static int blk_ioctl_zeroout(struct block_device *bdev, fmode_t mode,
164
164
return - EINVAL ;
165
165
if (len & 511 )
166
166
return - EINVAL ;
167
- if (end >= (uint64_t )i_size_read (bdev -> bd_inode ))
167
+ if (end >= (uint64_t )bdev_nr_bytes (bdev ))
168
168
return - EINVAL ;
169
169
if (end < start )
170
170
return - EINVAL ;
@@ -543,7 +543,6 @@ long blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg)
543
543
struct block_device * bdev = I_BDEV (file -> f_mapping -> host );
544
544
void __user * argp = (void __user * )arg ;
545
545
fmode_t mode = file -> f_mode ;
546
- loff_t size ;
547
546
int ret ;
548
547
549
548
/*
@@ -570,18 +569,17 @@ long blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg)
570
569
return put_long (argp ,
571
570
(bdev -> bd_disk -> bdi -> ra_pages * PAGE_SIZE ) / 512 );
572
571
case BLKGETSIZE :
573
- size = i_size_read (bdev -> bd_inode );
574
- if ((size >> 9 ) > ~0UL )
572
+ if (bdev_nr_sectors (bdev ) > ~0UL )
575
573
return - EFBIG ;
576
- return put_ulong (argp , size >> 9 );
574
+ return put_ulong (argp , bdev_nr_sectors ( bdev ) );
577
575
578
576
/* The data is compatible, but the command number is different */
579
577
case BLKBSZGET : /* get block device soft block size (cf. BLKSSZGET) */
580
578
return put_int (argp , block_size (bdev ));
581
579
case BLKBSZSET :
582
580
return blkdev_bszset (bdev , mode , argp );
583
581
case BLKGETSIZE64 :
584
- return put_u64 (argp , i_size_read (bdev -> bd_inode ));
582
+ return put_u64 (argp , bdev_nr_bytes (bdev ));
585
583
586
584
/* Incompatible alignment on i386 */
587
585
case BLKTRACESETUP :
@@ -615,7 +613,6 @@ long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg)
615
613
struct block_device * bdev = I_BDEV (file -> f_mapping -> host );
616
614
struct gendisk * disk = bdev -> bd_disk ;
617
615
fmode_t mode = file -> f_mode ;
618
- loff_t size ;
619
616
620
617
/*
621
618
* O_NDELAY can be altered using fcntl(.., F_SETFL, ..), so we have
@@ -641,18 +638,17 @@ long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg)
641
638
return compat_put_long (argp ,
642
639
(bdev -> bd_disk -> bdi -> ra_pages * PAGE_SIZE ) / 512 );
643
640
case BLKGETSIZE :
644
- size = i_size_read (bdev -> bd_inode );
645
- if ((size >> 9 ) > ~0UL )
641
+ if (bdev_nr_sectors (bdev ) > ~0UL )
646
642
return - EFBIG ;
647
- return compat_put_ulong (argp , size >> 9 );
643
+ return compat_put_ulong (argp , bdev_nr_sectors ( bdev ) );
648
644
649
645
/* The data is compatible, but the command number is different */
650
646
case BLKBSZGET_32 : /* get the logical block size (cf. BLKSSZGET) */
651
647
return put_int (argp , bdev_logical_block_size (bdev ));
652
648
case BLKBSZSET_32 :
653
649
return blkdev_bszset (bdev , mode , argp );
654
650
case BLKGETSIZE64_32 :
655
- return put_u64 (argp , i_size_read (bdev -> bd_inode ));
651
+ return put_u64 (argp , bdev_nr_bytes (bdev ));
656
652
657
653
/* Incompatible alignment on i386 */
658
654
case BLKTRACESETUP32 :
0 commit comments