public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] ext2: Avoid WARN() messages when failing to write to the superblock
@ 2009-10-20  5:22 Theodore Ts'o
  2009-10-25  6:21 ` Pavel Machek
  0 siblings, 1 reply; 4+ messages in thread
From: Theodore Ts'o @ 2009-10-20  5:22 UTC (permalink / raw)
  To: Linux Kernel Developers List; +Cc: Theodore Ts'o

This fixes a common warning reported by kerneloops.org

[Kernel summit hacking hour]
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
---
 fs/ext2/super.c |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/fs/ext2/super.c b/fs/ext2/super.c
index 1a9ffee..7b3b6cd 100644
--- a/fs/ext2/super.c
+++ b/fs/ext2/super.c
@@ -1089,9 +1089,30 @@ failed_sbi:
 	return ret;
 }
 
+static void ext2_clear_super_error(struct super_block * sb)
+{
+	struct buffer_head *sbh = EXT2_SB(sb)->s_sbh;
+
+	if (buffer_write_io_error(sbh)) {
+		/*
+		 * Oh, dear.  A previous attempt to write the
+		 * superblock failed.  This could happen because the
+		 * USB device was yanked out.  Or it could happen to
+		 * be a transient write error and maybe the block will
+		 * be remapped.  Nothing we can do but to retry the
+		 * write and hope for the best.
+		 */
+		printk(KERN_ERR "EXT2-fs: %s previous I/O error to "
+		       "superblock detected", sb->s_id);
+		clear_buffer_write_io_error(sbh);
+		set_buffer_uptodate(sbh);
+	}
+}
+
 static void ext2_commit_super (struct super_block * sb,
 			       struct ext2_super_block * es)
 {
+	ext2_clear_super_error(sb);
 	es->s_wtime = cpu_to_le32(get_seconds());
 	mark_buffer_dirty(EXT2_SB(sb)->s_sbh);
 	sb->s_dirt = 0;
@@ -1099,6 +1120,7 @@ static void ext2_commit_super (struct super_block * sb,
 
 static void ext2_sync_super(struct super_block *sb, struct ext2_super_block *es)
 {
+	ext2_clear_super_error(sb);
 	es->s_free_blocks_count = cpu_to_le32(ext2_count_free_blocks(sb));
 	es->s_free_inodes_count = cpu_to_le32(ext2_count_free_inodes(sb));
 	es->s_wtime = cpu_to_le32(get_seconds());
-- 
1.6.5.104.g2567b.dirty


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] ext2: Avoid WARN() messages when failing to write to the superblock
  2009-10-20  5:22 [PATCH] ext2: Avoid WARN() messages when failing to write to the superblock Theodore Ts'o
@ 2009-10-25  6:21 ` Pavel Machek
  2009-10-26  4:08   ` Theodore Tso
  0 siblings, 1 reply; 4+ messages in thread
From: Pavel Machek @ 2009-10-25  6:21 UTC (permalink / raw)
  To: Theodore Ts'o; +Cc: Linux Kernel Developers List

On Tue 2009-10-20 01:22:26, Theodore Ts'o wrote:
> This fixes a common warning reported by kerneloops.org
> 

> +static void ext2_clear_super_error(struct super_block * sb)
> +{
> +	struct buffer_head *sbh = EXT2_SB(sb)->s_sbh;
> +
> +	if (buffer_write_io_error(sbh)) {
> +		/*
> +		 * Oh, dear.  A previous attempt to write the
> +		 * superblock failed.  This could happen because the
> +		 * USB device was yanked out.  Or it could happen to
> +		 * be a transient write error and maybe the block will
> +		 * be remapped.  Nothing we can do but to retry the
> +		 * write and hope for the best.
> +		 */
> +		printk(KERN_ERR "EXT2-fs: %s previous I/O error to "
> +		       "superblock detected", sb->s_id);

KERN_ALERT/KERN_CRITICAL?
									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] ext2: Avoid WARN() messages when failing to write to the superblock
  2009-10-25  6:21 ` Pavel Machek
@ 2009-10-26  4:08   ` Theodore Tso
  2009-10-26  7:56     ` Pavel Machek
  0 siblings, 1 reply; 4+ messages in thread
From: Theodore Tso @ 2009-10-26  4:08 UTC (permalink / raw)
  To: Pavel Machek; +Cc: Linux Kernel Developers List

On Sun, Oct 25, 2009 at 07:21:28AM +0100, Pavel Machek wrote:
> > +	if (buffer_write_io_error(sbh)) {
> > +		/*
> > +		 * Oh, dear.  A previous attempt to write the
> > +		 * superblock failed.  This could happen because the
> > +		 * USB device was yanked out.  Or it could happen to
> > +		 * be a transient write error and maybe the block will
> > +		 * be remapped.  Nothing we can do but to retry the
> > +		 * write and hope for the best.
> > +		 */
> > +		printk(KERN_ERR "EXT2-fs: %s previous I/O error to "
> > +		       "superblock detected", sb->s_id);
> 
> KERN_ALERT/KERN_CRITICAL?

Based on kerneloops.org logs, it's apparently very frequent that
clueless lusers rip out USB drives without bothering to unmount them
first.  (Or people by crappy laptops where the SD cards sticks out
slightly and is easily jostled.)  It's not clear we really want to be
issueing KERN_ALERT or KERN_CRITICAL messages when this very common
event happens.

						- TRed

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] ext2: Avoid WARN() messages when failing to write to the superblock
  2009-10-26  4:08   ` Theodore Tso
@ 2009-10-26  7:56     ` Pavel Machek
  0 siblings, 0 replies; 4+ messages in thread
From: Pavel Machek @ 2009-10-26  7:56 UTC (permalink / raw)
  To: Theodore Tso, Linux Kernel Developers List

On Mon 2009-10-26 00:08:10, Theodore Tso wrote:
> On Sun, Oct 25, 2009 at 07:21:28AM +0100, Pavel Machek wrote:
> > > +	if (buffer_write_io_error(sbh)) {
> > > +		/*
> > > +		 * Oh, dear.  A previous attempt to write the
> > > +		 * superblock failed.  This could happen because the
> > > +		 * USB device was yanked out.  Or it could happen to
> > > +		 * be a transient write error and maybe the block will
> > > +		 * be remapped.  Nothing we can do but to retry the
> > > +		 * write and hope for the best.
> > > +		 */
> > > +		printk(KERN_ERR "EXT2-fs: %s previous I/O error to "
> > > +		       "superblock detected", sb->s_id);
> > 
> > KERN_ALERT/KERN_CRITICAL?
> 
> Based on kerneloops.org logs, it's apparently very frequent that
> clueless lusers rip out USB drives without bothering to unmount them
> first.  (Or people by crappy laptops where the SD cards sticks out
> slightly and is easily jostled.)  It's not clear we really want to be
> issueing KERN_ALERT or KERN_CRITICAL messages when this very common
> event happens.

I'd say that frequency of the message should not determine the
priority. (If this happens on your root filesystem you are in deep
trouble, and it _should_ be broadcast on all consoles).

OTOH filesystem should be handle device unplug just fine, so not
issuing this in that case would be nice...
								Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-10-26  7:56 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-20  5:22 [PATCH] ext2: Avoid WARN() messages when failing to write to the superblock Theodore Ts'o
2009-10-25  6:21 ` Pavel Machek
2009-10-26  4:08   ` Theodore Tso
2009-10-26  7:56     ` Pavel Machek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox