]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - src/patches/suse-2.6.27.39/patches.drivers/bdev-resize-adjust-block-device-size
Updated kernel (2.6.27.41).
[ipfire-2.x.git] / src / patches / suse-2.6.27.39 / patches.drivers / bdev-resize-adjust-block-device-size
diff --git a/src/patches/suse-2.6.27.39/patches.drivers/bdev-resize-adjust-block-device-size b/src/patches/suse-2.6.27.39/patches.drivers/bdev-resize-adjust-block-device-size
deleted file mode 100644 (file)
index 8f8ff9c..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-Subject: Adjust block device size after an online resize of a disk.
-From: Andrew Patterson <andrew.patterson@hp.com>
-Date: Thu Oct 9 08:56:12 2008 +0200:
-Git: c3279d1454cdfed02a557d789d8a6d08ab4cbe70
-References: FATE#302348,FATE#303786
-
-The revalidate_disk routine now checks if a disk has been resized by
-comparing the gendisk capacity to the bdev inode size.  If they are
-different (usually because the disk has been resized underneath the kernel)
-the bdev inode size is adjusted to match the capacity.
-
-Signed-off-by: Andrew Patterson <andrew.patterson@hp.com>
-Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
-Signed-off-by: Hannes Reinecke <hare@suse.de>
----
- fs/block_dev.c     |   37 +++++++++++++++++++++++++++++++++++++
- include/linux/fs.h |    2 ++
- 2 files changed, 39 insertions(+)
-
---- a/fs/block_dev.c
-+++ b/fs/block_dev.c
-@@ -869,6 +869,34 @@ struct block_device *open_by_devnum(dev_
- EXPORT_SYMBOL(open_by_devnum);
- /**
-+ * check_disk_size_change - checks for disk size change and adjusts
-+ *                          bdev size.
-+ *
-+ * @disk: struct gendisk to check
-+ * @bdev: struct bdev to adjust.
-+ *
-+ * This routine checks to see if the bdev size does not match the disk size
-+ * and adjusts it if it differs.
-+ */
-+void check_disk_size_change(struct gendisk *disk, struct block_device *bdev)
-+{
-+      loff_t disk_size, bdev_size;
-+
-+      disk_size = (loff_t)get_capacity(disk) << 9;
-+      bdev_size = i_size_read(bdev->bd_inode);
-+      if (disk_size != bdev_size) {
-+              char name[BDEVNAME_SIZE];
-+
-+              disk_name(disk, 0, name);
-+              printk(KERN_INFO
-+                     "%s: detected capacity change from %lld to %lld\n",
-+                     name, bdev_size, disk_size);
-+              i_size_write(bdev->bd_inode, disk_size);
-+      }
-+}
-+EXPORT_SYMBOL(check_disk_size_change);
-+
-+/**
-  * revalidate_disk - wrapper for lower-level driver's revalidate_disk
-  *                   call-back
-  *
-@@ -880,11 +908,20 @@ EXPORT_SYMBOL(open_by_devnum);
-  */
- int revalidate_disk(struct gendisk *disk)
- {
-+      struct block_device *bdev;
-       int ret = 0;
-       if (disk->fops->revalidate_disk)
-               ret = disk->fops->revalidate_disk(disk);
-+      bdev = bdget_disk(disk, 0);
-+      if (!bdev)
-+              return ret;
-+
-+      mutex_lock(&bdev->bd_mutex);
-+      check_disk_size_change(disk, bdev);
-+      mutex_unlock(&bdev->bd_mutex);
-+      bdput(bdev);
-       return ret;
- }
- EXPORT_SYMBOL(revalidate_disk);
---- a/include/linux/fs.h
-+++ b/include/linux/fs.h
-@@ -1742,6 +1742,8 @@ extern int fs_may_remount_ro(struct supe
-  */
- #define bio_data_dir(bio)     ((bio)->bi_rw & 1)
-+extern void check_disk_size_change(struct gendisk *disk,
-+                                 struct block_device *bdev);
- extern int revalidate_disk(struct gendisk *);
- extern int check_disk_change(struct block_device *);
- extern int __invalidate_device(struct block_device *);