Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 8 Aug 2018 12:30:54 +0000
From:      Rick Macklem <rmacklem@uoguelph.ca>
To:        Konstantin Belousov <kostikbel@gmail.com>
Cc:        "freebsd-current@FreeBSD.org" <freebsd-current@FreeBSD.org>
Subject:   Re: ffs_truncate3 panics
Message-ID:  <YTOPR0101MB18207C97903D3058A15091FFDD260@YTOPR0101MB1820.CANPRD01.PROD.OUTLOOK.COM>
In-Reply-To: <20180807131445.GC1884@kib.kiev.ua>
References:  <YTOPR0101MB18206289DDED97BE9DD38D14DD270@YTOPR0101MB1820.CANPRD01.PROD.OUTLOOK.COM>, <20180807131445.GC1884@kib.kiev.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
Konstantin Belousov wrote:
>On Tue, Aug 07, 2018 at 12:28:33PM +0000, Rick Macklem wrote:
>> Hi,
>>
>> During testing of the pNFS server I get an ffs_truncate3 panic every onc=
e in a while.
>> A few things that might be relevant:
>> - Seems to happen more often when soft update journaling is enabled, but=
 will
>>   happen when it is disabled.
>> - Normally happens when a fairly large subtree of the file system is bei=
ng removed.
- Oh, and this is an old i386 with 256Mbytes (not one of them new fangled c=
omputers,
   where memory is in Gbytes;-)

>>
>> These file systems are a bit odd, since all the regular files in them ar=
e empty but
>> have extended attributes that are accessed during the subtree removal. (=
The
>> extended attributes tell the server where the data files are.)
>>
>> I replaced the panic() with a printf() and every time the printf() happe=
ns...
>> bo->bo_dirty.bv_cnt =3D=3D 0 and bo->bo_clean.bv_cnt =3D=3D 1.
>> After one of these printf()s, the system continues to run ok. When the f=
ile
>> system is fsck'd after this has occurred, it passes fine and I haven't s=
een and
>> indication of file system corruption after running with this file system=
 for
>> quite a while after the printf()s first occurred.
>The lack of corruption is, most likely, because the files are removed.
>Would the files truncated to zero length and then extended, I am almost
>sure that a corruption occur.
>
>Can you print the only buffer on the clean queue when the panic occur ?
ffst3 vtyp=3D1 bodirty=3D0 boclean=3D1
buf at 0x428a110
b_flags =3D 0x20001020<vmio,reuse,cache>, b_xflags=3D0x2<clean>, b_vflags=
=3D0x0
b_error =3D 0, b_bufsize =3D 4096, b_bcount =3D 4096, b_resid =3D 0
b_bufobj =3D (0xfd8ba94), b_data =3D 0x5170000, b_blkno =3D -1, b_lblkno =
=3D -1, b_dep =3D 0
b_kvabase =3D 0x5170000, b_kvasize =3D 32768

>Also, it is interesting to know the initial length of the file.
Since they are regular files, they are 0 length. (Just inodes with extended=
 attributes.)

>>
>> Since the panic() only occurs when "options INVARIANTS" is enabled and I=
 don't
>> see evidence of file system corruption, I'm wondering if this panic() is=
 valid and
>> needed?

rick



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?YTOPR0101MB18207C97903D3058A15091FFDD260>