linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Hans Reiser <reiser@namesys.com>
To: Andrew Morton <akpm@zip.com.au>
Cc: Joshua Schmidlkofer <menion@srci.iwpsd.org>,
	kernel <linux-kernel@vger.kernel.org>,
	Chris Mason <mason@suse.com>,
	"Gryaznova E." <grev@namesys.botik.ru>,
	"Vladimir V. Saveliev" <monstr@namesys.com>
Subject: Re: ReiserFS / 2.4.6 / Data Corruption
Date: Fri, 27 Jul 2001 20:57:07 +0400	[thread overview]
Message-ID: <3B619D63.9989F9F@namesys.com> (raw)
In-Reply-To: <Pine.LNX.4.33.0107271515200.10139-100000@devel.blackstar.nl>, <Pine.LNX.4.33.0107271515200.10139-100000@devel.blackstar.nl> <0107270818120A.06707@widmers.oce.srci.oce.int> <3B619956.6AA072F9@zip.com.au>

Andrew, can you do this such that there is no disruption of our disk format, and make a mount option
out of it, and probably we should use this patch....

After you make a mount option out of it, grev will benchmark it for us using the usual suite of
benchmarks.

Comments Chris?  

Thanks,

Hans

Andrew Morton wrote:
> 
> Joshua Schmidlkofer wrote:
> >
> > I've almost quit using reiser, because everytime I have a power outage, the
> > last 2 or three files that I've editted, even ones that I haven't touched in
> > a while, will usually be hopelessly corrupted.  The '<file>~' that Emacs
> > makes is usually fine though.
> 
> It's a matter of timing.  There is a lengthy window where the metadata
> is written, but its data is not.  If you crash in this window, the files
> contain old data.
> 
> You can narrow the window of exposure by fiddling with the
> parameters in /proc/sys/vm/bdflush - force a full flush every
> five seconds, say.
> 
> >   It seems to be that any open file is
> > in danger.  I don't know if this is normal, or not, but I switched to XFS on
> > several machines.  I have nothing against reiser.  I assumed that these
> > problems were due to immaturity....
> 
> I'm under the impression that XFS also leaves data in the hands
> of the kernel's normal writeback mechanisms and will thus be
> exposed to the same problem.  I may be wrong about this.
> 
> Here's a ten-minute hack which gives reiserfs a simple `ordered data'
> mode.  It simply pushes all the dirty buffers and pages out to disk
> before running a commit.  Performance is still OK.
> 
> I hit reset partway through a massive file tree copy and every
> file which had been copied came up peachy - which is very different
> from the behaviour without the patch.  Interestingly, there were
> zero truncated files as well.  hmmm...
> 
> --- linux-2.4.7/include/linux/fs.h      Sat Jul 21 12:37:14 2001
> +++ lk-ext3/include/linux/fs.h  Sat Jul 28 02:37:43 2001
> @@ -1061,6 +1061,7 @@ extern int fs_may_remount_ro(struct supe
>  extern int try_to_free_buffers(struct page *, unsigned int);
>  extern void refile_buffer(struct buffer_head * buf);
>  extern void end_buffer_io_sync(struct buffer_head *bh, int uptodate);
> +extern int flush_all_but_supers(kdev_t dev);
> 
>  /* reiserfs_writepage needs this */
>  extern void set_buffer_async_io(struct buffer_head *bh) ;
> --- linux-2.4.7/include/linux/reiserfs_fs_sb.h  Sat Jul 21 12:37:14 2001
> +++ lk-ext3/include/linux/reiserfs_fs_sb.h      Sat Jul 28 02:37:43 2001
> @@ -289,6 +289,8 @@ struct reiserfs_sb_info
>                                 /* To be obsoleted soon by per buffer seals.. -Hans */
>      atomic_t s_generation_counter; // increased by one every time the
>      // tree gets re-balanced
> +
> +    int no_sync;
> 
>      /* session statistics */
>      int s_kmallocs;
> --- linux-2.4.7/fs/reiserfs/journal.c   Sat Jul 21 12:37:14 2001
> +++ lk-ext3/fs/reiserfs/journal.c       Sat Jul 28 02:37:43 2001
> @@ -2719,6 +2719,9 @@ static int do_journal_end(struct reiserf
>    reiserfs_discard_all_prealloc(th); /* it should not involve new blocks into
>                                       * the transaction */
>  #endif
> +
> +  if (!p_s_sb->u.reiserfs_sb.no_sync)
> +       flush_all_but_supers(p_s_sb->s_dev);
> 
>    rs = SB_DISK_SUPER_BLOCK(p_s_sb) ;
>    /* setup description block */
> --- linux-2.4.7/fs/reiserfs/super.c     Wed Jul  4 18:21:31 2001
> +++ lk-ext3/fs/reiserfs/super.c Sat Jul 28 02:37:43 2001
> @@ -116,7 +116,9 @@ void reiserfs_put_super (struct super_bl
>    /* note, journal_release checks for readonly mount, and can decide not
>    ** to do a journal_end
>    */
> +  s->u.reiserfs_sb.no_sync = 1;
>    journal_release(&th, s) ;
> +  s->u.reiserfs_sb.no_sync = 0;
> 
>    for (i = 0; i < SB_BMAP_NR (s); i ++)
>      brelse (SB_AP_BITMAP (s)[i]);
> --- linux-2.4.7/fs/buffer.c     Sat Jul 21 12:37:14 2001
> +++ lk-ext3/fs/buffer.c Sat Jul 28 02:37:43 2001
> @@ -333,6 +333,18 @@ int fsync_dev(kdev_t dev)
>         return sync_buffers(dev, 1);
>  }
> 
> +int flush_all_but_supers(kdev_t dev)
> +{
> +       sync_buffers(dev, 0);
> +
> +       lock_kernel();
> +       sync_inodes(dev);
> +       DQUOT_SYNC(dev);
> +       unlock_kernel();
> +
> +       return sync_buffers(dev, 1);
> +}
> +
>  /*
>   * There's no real reason to pretend we should
>   * ever do anything differently
> --- linux-2.4.7/kernel/ksyms.c  Sat Jul 21 12:37:14 2001
> +++ lk-ext3/kernel/ksyms.c      Sat Jul 28 02:37:43 2001
> @@ -161,6 +161,7 @@ EXPORT_SYMBOL(d_lookup);
>  EXPORT_SYMBOL(__d_path);
>  EXPORT_SYMBOL(mark_buffer_dirty);
>  EXPORT_SYMBOL(set_buffer_async_io); /* for reiserfs_writepage */
> +EXPORT_SYMBOL(flush_all_but_supers);
>  EXPORT_SYMBOL(__mark_buffer_dirty);
>  EXPORT_SYMBOL(__mark_inode_dirty);
>  EXPORT_SYMBOL(get_empty_filp);

  reply	other threads:[~2001-07-27 16:58 UTC|newest]

Thread overview: 140+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-07-18  4:14 ReiserFS / 2.4.6 / Data Corruption Sam Thompson
2001-07-18  5:18 ` Steve Kieu
2001-07-18 16:22   ` Erik Mouw
2001-07-19  2:02     ` Steve Kieu
2001-07-19 13:28       ` Hans Reiser
2001-07-19 15:50       ` Erik Mouw
2001-07-27 12:52     ` bvermeul
2001-07-27 12:55       ` Hans Reiser
2001-07-27 13:24         ` bvermeul
2001-07-27 14:18           ` Joshua Schmidlkofer
2001-07-27 14:55             ` Hans Reiser
2001-07-27 15:02               ` Chris Wedgwood
2001-07-27 16:06                 ` Henning P. Schmiedehausen
2001-07-27 22:02                 ` Luigi Genoni
2001-07-28 13:45               ` Matthew Gardiner
2001-07-28 16:15                 ` Hans Reiser
2001-07-28 16:45                 ` Marcus Meissner
2001-07-28 16:45                 ` Christoph Hellwig
2001-07-29 10:19                   ` Matthew Gardiner
2001-07-29 11:04                     ` Chris Wedgwood
2001-07-30 10:08                   ` Hans Reiser
2001-07-30 19:06                     ` Christoph Hellwig
2001-07-30 20:30                       ` Hans Reiser
2001-07-30 20:49                         ` Christoph Hellwig
2001-07-30 21:05                           ` Hans Reiser
2001-07-30 21:29                             ` Christoph Hellwig
2001-07-30 21:44                               ` Hans Reiser
2001-07-30 21:48                               ` Hans Reiser
2001-07-30 21:57                                 ` Chris Wedgwood
2001-07-30 21:58                                   ` Christoph Hellwig
2001-07-31  7:45                                 ` Henning P. Schmiedehausen
2001-07-31  9:55                                   ` Hans Reiser
2001-07-31 10:24                                     ` Arjan van de Ven
2001-07-31 10:24                                     ` Anders Eriksson
2001-07-31 10:32                                       ` Chris Wedgwood
2001-07-31 17:01                                       ` [OT] " J Sloan
2001-07-30 21:59                             ` Rik van Riel
2001-07-30 22:34                               ` Hans Reiser
2001-07-31 11:34                                 ` David Weinehall
2001-07-31 12:22                                   ` ReiserFS / 2.4.6 / Data Corruption (patch to cause redhat to unmount reiserfs on halt included) Hans Reiser
2001-07-31 12:37                                     ` Christoph Hellwig
2001-07-31 13:12                                       ` Hans Reiser
2001-07-30 22:41                               ` ReiserFS / 2.4.6 / Data Corruption Kip Macy
2001-07-30 22:50                                 ` Christoph Hellwig
2001-07-30 21:13                           ` Hans Reiser
2001-07-30 21:21                           ` Hans Reiser
2001-07-30 21:49                             ` Christoph Hellwig
2001-07-31  2:34                               ` Andrew Morton
2001-07-30 22:04                             ` Rik van Riel
2001-07-30 22:36                               ` Hans Reiser
2001-07-30 22:53                                 ` Rik van Riel
2001-07-30 23:12                                   ` Hans Reiser
2001-07-31 10:32                                 ` Chris Wedgwood
2001-07-31 10:59                                   ` Hans Reiser
2001-07-31 11:42                                     ` Chris Wedgwood
2001-07-31 13:41                                     ` Chris Mason
2001-07-31 15:15                                       ` Chris Wedgwood
2001-07-31 15:58                                         ` Chris Mason
2001-07-31 15:22                                       ` Hans Reiser
2001-07-31 15:49                                         ` Chris Mason
2001-07-31 22:08                               ` Jussi Laako
2001-07-31 22:32                                 ` Dan Hollis
2001-07-31 23:45                                   ` Chris Wedgwood
2001-08-05 22:19                                   ` CRC loop method (was Re: ReiserFS / 2.4.6 / Data Corruption) Pavel Machek
2001-08-01 16:23                                 ` ReiserFS / 2.4.6 / Data Corruption Andreas Dilger
2001-08-02 13:44                         ` Pavel Machek
2001-07-27 15:06             ` Daniel Phillips
2001-07-27 15:33               ` Hans Reiser
2001-07-27 16:30                 ` Daniel Phillips
2001-07-27 16:49                   ` Early Flush Hans Reiser
2001-07-27 15:07             ` ReiserFS / 2.4.6 / Data Corruption Chris Wedgwood
2001-07-27 16:39             ` Andrew Morton
2001-07-27 16:57               ` Hans Reiser [this message]
2001-07-27 17:28                 ` Andrew Morton
2001-07-27 17:45                   ` Hans Reiser
2001-07-27 17:10               ` Steve Lord
2001-07-27 14:48           ` Hans Reiser
2001-07-27 15:04             ` bvermeul
2001-07-27 15:38               ` Hans Reiser
2001-07-27 17:29                 ` Eric W. Biederman
2001-07-27 18:47                   ` bvermeul
2001-07-27 19:22                     ` Hans Reiser
2001-07-28  6:19                       ` bvermeul
2001-07-28  7:39                         ` Hans Reiser
2001-07-27 19:30                     ` Jussi Laako
2001-07-28  6:21                       ` bvermeul
2001-07-27 21:49                     ` Daniel Phillips
2001-07-27 20:49                 ` Lehmann 
2001-07-28 14:13           ` Matthew Gardiner
2001-07-28 14:40             ` bvermeul
2001-07-18  9:42 ` Hans Reiser
     [not found]   ` <3B5579E7.5090107@namesys.com>
2001-07-18 16:26     ` Sam Thompson
2001-07-18 16:34       ` Hans Reiser
2001-07-18 13:09 ` Andre Pang
     [not found] <no.id>
2001-07-27 13:27 ` Alan Cox
2001-07-27 13:38   ` bvermeul
2001-07-27 13:39     ` Alan Cox
2001-07-27 13:47       ` bvermeul
2001-07-27 13:49         ` Alan Cox
2001-07-28 14:16       ` Matthew Gardiner
2001-08-08 18:42       ` Stephen C. Tweedie
2001-07-27 14:16   ` Philip R. Auld
2001-07-27 14:38     ` Jordan
2001-07-27 14:51     ` Hans Reiser
2001-07-27 15:12       ` Philip R. Auld
2001-07-27 14:23   ` Hans Reiser
2001-07-27 14:21 ` Alan Cox
2001-07-28 14:18   ` Matthew Gardiner
2001-07-28 16:25     ` Alan Cox
2001-07-29 10:15       ` Matthew Gardiner
2001-07-29 11:10         ` Chris Wedgwood
2001-07-29 14:28           ` Luigi Genoni
2001-07-29 11:16     ` Christoph Hellwig
2001-07-27 15:06 ` Alan Cox
2001-07-27 15:26   ` Joshua Schmidlkofer
2001-07-27 15:46     ` Hans Reiser
2001-07-27 17:46       ` Christoph Rohland
2001-07-27 18:02         ` Hans Reiser
2001-07-27 18:10       ` Dustin Byford
2001-07-27 19:20         ` Hans Reiser
2001-07-28 16:10       ` Henning P. Schmiedehausen
2001-07-27 15:31   ` Hans Reiser
2001-07-27 16:25     ` Kip Macy
2001-07-27 17:29       ` Ville Herva
2001-07-27 17:40         ` Alan Cox
2001-07-27 17:43           ` Ville Herva
2001-07-27 20:46   ` Lehmann 
2001-07-27 21:13     ` Hans Reiser
2001-07-27 15:51 ` Alan Cox
2001-07-27 16:41   ` Hans Reiser
2001-07-27 16:55 ` Alan Cox
2001-07-27 21:24 ` Alan Cox
2001-07-27 21:47   ` Hans Reiser
2001-07-27 22:10 ` Alan Cox
2001-07-28  7:36   ` Hans Reiser
2001-07-28 14:08     ` Chris Mason
2001-07-27 15:13 Cress, Andrew R
2001-07-30 15:24 Chris Mason
2001-07-30 15:47 ` Andrew Morton
2001-07-30 16:04   ` Chris Mason

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=3B619D63.9989F9F@namesys.com \
    --to=reiser@namesys.com \
    --cc=akpm@zip.com.au \
    --cc=grev@namesys.botik.ru \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mason@suse.com \
    --cc=menion@srci.iwpsd.org \
    --cc=monstr@namesys.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).