From: Andrew Patterson <andrew.patterson@hp.com>
To: linux-scsi@vger.kernel.org
Cc: andrew.patterson@hp.com, James.Bottomley@HansenPartnership.com,
linux-kernel@vger.kernel.org, viro@zeniv.linux.org.uk,
axboe@kernel.dk, andmike@linux.vnet.ibm.com, mike.miller@hp.com,
genanr@emsphone.com, jmoyer@redhat.com
Subject: [PATCH 5/6] Added flush_disk to factor out common buffer cache flushing code.
Date: Fri, 29 Aug 2008 17:13:20 -0600 [thread overview]
Message-ID: <20080829231320.25065.44013.stgit@bluto.andrew> (raw)
In-Reply-To: <20080829231254.25065.66052.stgit@bluto.andrew>
Added flush_disk to factor out common buffer cache flushing code.
We need to be able to flush the buffer cache for for more than
just when a disk is changed, so we factor out common cache flush code
in check_disk_change() to an internal flush_disk() routine. This
routine will then be used for both disk changes and disk resizes (in a
later patch).
Include the disk name in the text indicating that there are busy
inodes on the device and increase the KERN severity of the message.
Signed-off-by: Andrew Patterson <andrew.patterson@hp.com>
---
fs/block_dev.c | 33 ++++++++++++++++++++++++++++-----
1 files changed, 28 insertions(+), 5 deletions(-)
diff --git a/fs/block_dev.c b/fs/block_dev.c
index f8df73a..5ce28b1 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -868,6 +868,33 @@ struct block_device *open_by_devnum(dev_t dev, unsigned mode)
EXPORT_SYMBOL(open_by_devnum);
+
+/**
+ * flush_disk - invalidates all buffer-cache entries on a disk
+ *
+ * @bdev: struct block device to be flushed
+ *
+ * Invalidates all buffer-cache entries on a disk. It should be called
+ * when a disk has been changed -- either by a media change or online
+ * resize.
+ */
+static void flush_disk(struct block_device *bdev)
+{
+ if (__invalidate_device(bdev)) {
+ char name[BDEVNAME_SIZE] = "";
+
+ if (bdev->bd_disk)
+ disk_name(bdev->bd_disk, 0, name);
+ printk(KERN_WARNING "VFS: busy inodes on changed media %s\n",
+ name);
+ }
+
+ if (!bdev->bd_disk)
+ return;
+ if (bdev->bd_disk->minors > 1)
+ bdev->bd_invalidated = 1;
+}
+
/**
* check_disk_size_change - checks for disk size change and adjusts
* bdev size.
@@ -945,13 +972,9 @@ int check_disk_change(struct block_device *bdev)
if (!bdops->media_changed(bdev->bd_disk))
return 0;
- if (__invalidate_device(bdev))
- printk("VFS: busy inodes on changed media.\n");
-
+ flush_disk(bdev);
if (bdops->revalidate_disk)
bdops->revalidate_disk(bdev->bd_disk);
- if (bdev->bd_disk->minors > 1)
- bdev->bd_invalidated = 1;
return 1;
}
next prev parent reply other threads:[~2008-08-29 23:13 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-29 23:12 [PATCH 0/6] detect online disk resize Andrew Patterson
2008-08-29 23:13 ` [PATCH 1/6] Wrapper for lower-level revalidate_disk routines Andrew Patterson
2008-09-03 18:16 ` Jeff Moyer
2008-08-29 23:13 ` [PATCH 2/6] Adjust block device size after an online resize of a disk Andrew Patterson
2008-09-03 18:17 ` Jeff Moyer
2008-08-29 23:13 ` [PATCH 3/6] Check for device resize when rescanning partitions Andrew Patterson
2008-09-03 18:17 ` Jeff Moyer
2008-08-29 23:13 ` [PATCH 4/6] SCSI sd driver calls revalidate_disk wrapper Andrew Patterson
2008-09-03 18:17 ` Jeff Moyer
2008-08-29 23:13 ` Andrew Patterson [this message]
2008-09-03 18:19 ` [PATCH 5/6] Added flush_disk to factor out common buffer cache flushing code Jeff Moyer
2008-09-04 4:16 ` Andrew Patterson
2008-09-04 13:13 ` Jeff Moyer
2008-08-29 23:13 ` [PATCH 6/6] Call flush_disk() after detecting an online resize Andrew Patterson
2008-09-03 18:20 ` Jeff Moyer
2008-09-04 7:26 ` [PATCH 0/6] detect online disk resize Jens Axboe
2008-09-04 14:25 ` Andrew Patterson
2008-09-08 18:01 ` Jeff Moyer
2008-09-09 7:41 ` Pasi Kärkkäinen
2008-09-24 15:23 ` Vladislav Bolkhovitin
-- strict thread matches above, loose matches on Subject: below --
2008-09-04 20:27 Andrew Patterson
2008-09-04 20:27 ` [PATCH 5/6] Added flush_disk to factor out common buffer cache flushing code Andrew Patterson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080829231320.25065.44013.stgit@bluto.andrew \
--to=andrew.patterson@hp.com \
--cc=James.Bottomley@HansenPartnership.com \
--cc=andmike@linux.vnet.ibm.com \
--cc=axboe@kernel.dk \
--cc=genanr@emsphone.com \
--cc=jmoyer@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=mike.miller@hp.com \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.