mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
block: read i_size with i_size_read()
Convert direct reads of an inode's i_size to using i_size_read().
i_size_{read,write} use a seqcount to protect reads from accessing
incomple writes. Concurrent i_size_write()s require mutual exclussion
to protect the seqcount that is used by i_size_{read,write}. But
i_size_read() callers do not need to use additional locking.
Signed-off-by: Mike Snitzer <[email protected]>
Acked-by: NeilBrown <[email protected]>
Acked-by: Lars Ellenberg <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
This commit is contained in:
parent
90fdb0b98a
commit
77304d2aba
5 changed files with 18 additions and 18 deletions
|
|
@ -1351,7 +1351,7 @@ static void handle_bad_sector(struct bio *bio)
|
|||
bdevname(bio->bi_bdev, b),
|
||||
bio->bi_rw,
|
||||
(unsigned long long)bio->bi_sector + bio_sectors(bio),
|
||||
(long long)(bio->bi_bdev->bd_inode->i_size >> 9));
|
||||
(long long)(i_size_read(bio->bi_bdev->bd_inode) >> 9));
|
||||
|
||||
set_bit(BIO_EOF, &bio->bi_flags);
|
||||
}
|
||||
|
|
@ -1404,7 +1404,7 @@ static inline int bio_check_eod(struct bio *bio, unsigned int nr_sectors)
|
|||
return 0;
|
||||
|
||||
/* Test device or partition size, when known. */
|
||||
maxsector = bio->bi_bdev->bd_inode->i_size >> 9;
|
||||
maxsector = i_size_read(bio->bi_bdev->bd_inode) >> 9;
|
||||
if (maxsector) {
|
||||
sector_t sector = bio->bi_sector;
|
||||
|
||||
|
|
|
|||
|
|
@ -744,13 +744,13 @@ long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg)
|
|||
bdi->ra_pages = (arg * 512) / PAGE_CACHE_SIZE;
|
||||
return 0;
|
||||
case BLKGETSIZE:
|
||||
size = bdev->bd_inode->i_size;
|
||||
size = i_size_read(bdev->bd_inode);
|
||||
if ((size >> 9) > ~0UL)
|
||||
return -EFBIG;
|
||||
return compat_put_ulong(arg, size >> 9);
|
||||
|
||||
case BLKGETSIZE64_32:
|
||||
return compat_put_u64(arg, bdev->bd_inode->i_size);
|
||||
return compat_put_u64(arg, i_size_read(bdev->bd_inode));
|
||||
|
||||
case BLKTRACESETUP32:
|
||||
case BLKTRACESTART: /* compatible */
|
||||
|
|
|
|||
|
|
@ -125,7 +125,7 @@ static int blk_ioctl_discard(struct block_device *bdev, uint64_t start,
|
|||
start >>= 9;
|
||||
len >>= 9;
|
||||
|
||||
if (start + len > (bdev->bd_inode->i_size >> 9))
|
||||
if (start + len > (i_size_read(bdev->bd_inode) >> 9))
|
||||
return -EINVAL;
|
||||
if (secure)
|
||||
flags |= BLKDEV_DISCARD_SECURE;
|
||||
|
|
@ -307,12 +307,12 @@ int blkdev_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd,
|
|||
ret = blkdev_reread_part(bdev);
|
||||
break;
|
||||
case BLKGETSIZE:
|
||||
size = bdev->bd_inode->i_size;
|
||||
size = i_size_read(bdev->bd_inode);
|
||||
if ((size >> 9) > ~0UL)
|
||||
return -EFBIG;
|
||||
return put_ulong(arg, size >> 9);
|
||||
case BLKGETSIZE64:
|
||||
return put_u64(arg, bdev->bd_inode->i_size);
|
||||
return put_u64(arg, i_size_read(bdev->bd_inode));
|
||||
case BLKTRACESTART:
|
||||
case BLKTRACESTOP:
|
||||
case BLKTRACESETUP:
|
||||
|
|
|
|||
Loading…
Reference in a new issue