Sophie

Sophie

distrib > Mageia > 8 > i586 > by-pkgid > f65f1d773383ac49d6fcc3657259ff43 > files > 177

kernel-5.10.45-2.mga8.src.rpm

From ee37fa9ebcc3a0be4944e11a5fddcde45e634c2e Mon Sep 17 00:00:00 2001
From: Thomas Backlund <tmb@mageia.org>
Date: Tue, 5 Jan 2021 18:55:26 +0200
Subject: [PATCH] Revert "block: remove check_disk_change"

This reverts commit b92b53079aedbfb56bbb9ea360e5119fb563a2a1.

https://bugs.mageia.org/show_bug.cgi?id=27877
https://bugzilla.kernel.org/show_bug.cgi?id=211023

Signed-off-by: Thomas Backlund <tmb@mageia.org>

---
 fs/block_dev.c        | 20 ++++++++++++++++++++
 include/linux/genhd.h |  1 +
 2 files changed, 21 insertions(+)

diff --git a/fs/block_dev.c b/fs/block_dev.c
index 9e84b1928b94..8bb24db579ed 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -1370,6 +1370,26 @@ void revalidate_disk_size(struct gendisk *disk, bool verbose)
 }
 EXPORT_SYMBOL(revalidate_disk_size);
 
+/*
+ * This routine checks whether a removable media has been changed,
+ * and invalidates all buffer-cache-entries in that case. This
+ * is a relatively slow routine, so we have to try to minimize using
+ * it. Thus it is called only upon a 'mount' or 'open'. This
+ * is the best way of combining speed and utility, I think.
+ * People changing diskettes in the middle of an operation deserve
+ * to lose :-)
+ */
+int check_disk_change(struct block_device *bdev)
+{
+	if (!bdev_check_media_change(bdev))
+		return 0;
+	if (bdev->bd_disk->fops->revalidate_disk)
+		bdev->bd_disk->fops->revalidate_disk(bdev->bd_disk);
+	return 1;
+}
+
+EXPORT_SYMBOL(check_disk_change);
+
 void bd_set_nr_sectors(struct block_device *bdev, sector_t sectors)
 {
 	spin_lock(&bdev->bd_size_lock);
diff --git a/include/linux/genhd.h b/include/linux/genhd.h
index 03da3f603d30..803cdec86238 100644
--- a/include/linux/genhd.h
+++ b/include/linux/genhd.h
@@ -372,6 +372,7 @@ int register_blkdev(unsigned int major, const char *name);
 void unregister_blkdev(unsigned int major, const char *name);
 
 void revalidate_disk_size(struct gendisk *disk, bool verbose);
+int check_disk_change(struct block_device *bdev);
 bool bdev_check_media_change(struct block_device *bdev);
 int __invalidate_device(struct block_device *bdev, bool kill_dirty);
 void bd_set_nr_sectors(struct block_device *bdev, sector_t sectors);
-- 
2.30.0