Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

file system corruption



Hi!

I've recently updated from 9.99.73 from Sep 17 to one of Oct 5.

I've had serious file system corruption. Mostly in mercurial and
sqlite3 databases, but also in normal files.

The errors look like this:

sqlite3:
error writing to foo.db: database disk image is malformed

# hg diff
abort: 00manifest.i@3aacf63f5c3b: no node!

I don't know enough about the internals of the hg and sqlite3, but I
also saw a broken zip archive and had a good copy for comparison. In
that case, a block of 256 bytes was zero instead of the real data.

It doesn't happen for every file system write. I'm not sure what makes
sqlite3 special but it happens a lot there, perhaps more fsyncs.

I am not completely sure yet that this is NetBSD's fault, but it's
currently my most probable guess. I went back to the Sep 17 kernel to
make sure it does not show this symptoms.  Downgrading to the old
kernel seems to have made it stop. Some of the file systems where this
happened are NFS-served from Linux, but I also saw it on a local
FFSv2.

I browsed the source-changes-full mailing list archives for that time,
limited to mails with 'sys' in the subject line, and found a couple of
UVM changes. Nothing else really sprang at me.

Could it be one of these changes, or does anyone have another theory?


For comparison, old kernel:

ident /netbsd | grep uvm
     $NetBSD: uvm_50.c,v 1.3 2020/09/05 16:30:10 riastradh Exp $
     $NetBSD: uvm_amap.c,v 1.123 2020/08/18 10:40:20 chs Exp $
     $NetBSD: uvm_anon.c,v 1.79 2020/07/09 05:57:15 skrll Exp $
     $NetBSD: uvm_aobj.c,v 1.151 2020/08/19 15:36:41 chs Exp $
     $NetBSD: uvm_bio.c,v 1.121 2020/07/09 09:24:32 rin Exp $
     $NetBSD: uvm_coredump.c,v 1.8 2020/02/23 15:46:43 ad Exp $
     $NetBSD: uvm_device.c,v 1.71 2020/07/09 05:57:15 skrll Exp $
     $NetBSD: uvm_fault.c,v 1.228 2020/07/09 05:57:15 skrll Exp $
     $NetBSD: uvm_glue.c,v 1.181 2020/06/14 21:41:42 ad Exp $
     $NetBSD: uvm_init.c,v 1.53 2020/03/06 20:46:12 ad Exp $
     $NetBSD: uvm_io.c,v 1.28 2016/05/25 17:43:58 christos Exp $
     $NetBSD: uvm_km.c,v 1.159 2020/07/09 05:57:15 skrll Exp $
     $NetBSD: uvm_loan.c,v 1.104 2020/06/11 22:21:05 ad Exp $
     $NetBSD: uvm_map.c,v 1.385 2020/07/09 05:57:15 skrll Exp $
     $NetBSD: uvm_meter.c,v 1.80 2020/06/14 21:41:42 ad Exp $
     $NetBSD: uvm_mmap.c,v 1.175 2020/02/23 15:46:43 ad Exp $
     $NetBSD: uvm_mremap.c,v 1.20 2020/02/23 15:46:43 ad Exp $
     $NetBSD: uvm_object.c,v 1.25 2020/08/15 07:24:09 chs Exp $
     $NetBSD: uvm_page.c,v 1.246 2020/08/15 01:27:22 tnn Exp $
     $NetBSD: uvm_page_array.c,v 1.9 2020/05/26 21:52:12 ad Exp $
     $NetBSD: uvm_page_status.c,v 1.6 2020/08/14 09:06:15 chs Exp $
     $NetBSD: uvm_pager.c,v 1.129 2020/08/14 09:06:15 chs Exp $
     $NetBSD: uvm_pdaemon.c,v 1.130 2020/07/09 05:57:15 skrll Exp $
     $NetBSD: uvm_pdpolicy_clock.c,v 1.39 2020/06/11 22:21:05 ad Exp $
     $NetBSD: uvm_pgflcache.c,v 1.5 2020/06/14 21:41:42 ad Exp $
     $NetBSD: uvm_pglist.c,v 1.85 2020/06/14 21:41:42 ad Exp $
     $NetBSD: uvm_readahead.c,v 1.13 2020/05/19 21:45:35 ad Exp $
     $NetBSD: uvm_stat.c,v 1.46 2020/06/14 21:41:42 ad Exp $
     $NetBSD: uvm_swap.c,v 1.198 2020/07/25 22:14:35 riastradh Exp $
     $NetBSD: uvm_unix.c,v 1.50 2018/01/06 16:41:24 kamil Exp $
     $NetBSD: uvm_user.c,v 1.14 2011/02/02 15:13:34 chuck Exp $
     $NetBSD: uvm_vnode.c,v 1.117 2020/08/16 00:24:41 chs Exp $

New kernel:

ident /netbsd.9.99.73c | grep uvm
     $NetBSD: uvm_50.c,v 1.3 2020/09/05 16:30:10 riastradh Exp $
     $NetBSD: uvm_amap.c,v 1.125 2020/09/21 18:41:59 chs Exp $
     $NetBSD: uvm_anon.c,v 1.79 2020/07/09 05:57:15 skrll Exp $
     $NetBSD: uvm_aobj.c,v 1.151 2020/08/19 15:36:41 chs Exp $
     $NetBSD: uvm_bio.c,v 1.122 2020/10/05 04:48:23 rin Exp $
     $NetBSD: uvm_coredump.c,v 1.8 2020/02/23 15:46:43 ad Exp $
     $NetBSD: uvm_device.c,v 1.71 2020/07/09 05:57:15 skrll Exp $
     $NetBSD: uvm_fault.c,v 1.228 2020/07/09 05:57:15 skrll Exp $
     $NetBSD: uvm_glue.c,v 1.181 2020/06/14 21:41:42 ad Exp $
     $NetBSD: uvm_init.c,v 1.53 2020/03/06 20:46:12 ad Exp $
     $NetBSD: uvm_io.c,v 1.29 2020/09/21 18:41:59 chs Exp $
     $NetBSD: uvm_km.c,v 1.159 2020/07/09 05:57:15 skrll Exp $
     $NetBSD: uvm_loan.c,v 1.104 2020/06/11 22:21:05 ad Exp $
     $NetBSD: uvm_map.c,v 1.385 2020/07/09 05:57:15 skrll Exp $
     $NetBSD: uvm_meter.c,v 1.80 2020/06/14 21:41:42 ad Exp $
     $NetBSD: uvm_mmap.c,v 1.175 2020/02/23 15:46:43 ad Exp $
     $NetBSD: uvm_mremap.c,v 1.20 2020/02/23 15:46:43 ad Exp $
     $NetBSD: uvm_object.c,v 1.25 2020/08/15 07:24:09 chs Exp $
     $NetBSD: uvm_page.c,v 1.247 2020/09/20 10:30:05 skrll Exp $
     $NetBSD: uvm_page_array.c,v 1.9 2020/05/26 21:52:12 ad Exp $
     $NetBSD: uvm_page_status.c,v 1.6 2020/08/14 09:06:15 chs Exp $
     $NetBSD: uvm_pager.c,v 1.129 2020/08/14 09:06:15 chs Exp $
     $NetBSD: uvm_pdaemon.c,v 1.130 2020/07/09 05:57:15 skrll Exp $
     $NetBSD: uvm_pdpolicy_clock.c,v 1.39 2020/06/11 22:21:05 ad Exp $
     $NetBSD: uvm_pgflcache.c,v 1.5 2020/06/14 21:41:42 ad Exp $
     $NetBSD: uvm_pglist.c,v 1.85 2020/06/14 21:41:42 ad Exp $
     $NetBSD: uvm_readahead.c,v 1.13 2020/05/19 21:45:35 ad Exp $
     $NetBSD: uvm_stat.c,v 1.46 2020/06/14 21:41:42 ad Exp $
     $NetBSD: uvm_swap.c,v 1.199 2020/09/29 02:49:56 msaitoh Exp $
     $NetBSD: uvm_unix.c,v 1.50 2018/01/06 16:41:24 kamil Exp $
     $NetBSD: uvm_user.c,v 1.14 2011/02/02 15:13:34 chuck Exp $
     $NetBSD: uvm_vnode.c,v 1.117 2020/08/16 00:24:41 chs Exp $

Diff:

2c2
<      $NetBSD: uvm_amap.c,v 1.123 2020/08/18 10:40:20 chs Exp $
---
>      $NetBSD: uvm_amap.c,v 1.125 2020/09/21 18:41:59 chs Exp $

5c5
<      $NetBSD: uvm_bio.c,v 1.121 2020/07/09 09:24:32 rin Exp $
---
>      $NetBSD: uvm_bio.c,v 1.122 2020/10/05 04:48:23 rin Exp $

11c11
<      $NetBSD: uvm_io.c,v 1.28 2016/05/25 17:43:58 christos Exp $
---
>      $NetBSD: uvm_io.c,v 1.29 2020/09/21 18:41:59 chs Exp $

19c19
<      $NetBSD: uvm_page.c,v 1.246 2020/08/15 01:27:22 tnn Exp $
---
>      $NetBSD: uvm_page.c,v 1.247 2020/09/20 10:30:05 skrll Exp $

This is a printf format change in UVMHIST_LOG.

29c29
<      $NetBSD: uvm_swap.c,v 1.198 2020/07/25 22:14:35 riastradh Exp $
---
>      $NetBSD: uvm_swap.c,v 1.199 2020/09/29 02:49:56 msaitoh Exp $

This is a typo change.

Anyone else having problems?

Any ideas?
 Thomas


Home | Main Index | Thread Index | Old Index