Patchwork [3.5.y.z,extended,stable] Patch "block: use i_size_write() in bd_set_size()" has been added to staging queue

mail settings
Submitter Luis Henriques
Date March 20, 2013, 10:43 a.m.
Message ID <>
Download mbox | patch
Permalink /patch/229322/
State New
Headers show


Luis Henriques - March 20, 2013, 10:43 a.m.
This is a note to let you know that I have just added a patch titled

    block: use i_size_write() in bd_set_size()

to the linux-3.5.y-queue branch of the 3.5.y.z extended stable tree 
which can be found at:;a=shortlog;h=refs/heads/linux-3.5.y-queue

If you, or anyone else, feels it should not be added to this tree, please 
reply to this email.

For more information about the 3.5.y.z tree, see



From f1444f07124e83568c5b9122e909f4126981380c Mon Sep 17 00:00:00 2001
From: Guo Chao <>
Date: Thu, 21 Feb 2013 15:16:42 -0800
Subject: [PATCH] block: use i_size_write() in bd_set_size()

commit d646a02a9d44d1421f273ae3923d97b47b918176 upstream.

blkdev_ioctl(GETBLKSIZE) uses i_size_read() to read size of block device.
If we update block size directly, reader may see intermediate result in
some machines and configurations.  Use i_size_write() instead.

Signed-off-by: Guo Chao <>
Cc: Alexander Viro <>
Cc: Guo Chao <>
Cc: M. Hindess <>
Cc: Nikanth Karthikesan <>
Cc: Jens Axboe <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Jens Axboe <>
Signed-off-by: Luis Henriques <>
 fs/block_dev.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)



diff --git a/fs/block_dev.c b/fs/block_dev.c
index db64e31..77e86b3 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -1086,7 +1086,9 @@  void bd_set_size(struct block_device *bdev, loff_t size)
 	unsigned bsize = bdev_logical_block_size(bdev);

-	bdev->bd_inode->i_size = size;
+	mutex_lock(&bdev->bd_inode->i_mutex);
+	i_size_write(bdev->bd_inode, size);
+	mutex_unlock(&bdev->bd_inode->i_mutex);
 	while (bsize < PAGE_CACHE_SIZE) {
 		if (size & bsize)