Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 12 Oct 2010 14:51:18 +0400
From:      "Andrey V. Elsukov" <bu7cher@yandex.ru>
To:        Tobias Fredriksson <tobfr108@gmail.com>
Cc:        freebsd-fs@freebsd.org
Subject:   Re: Growing large UFS over 16TB?
Message-ID:  <4CB43DA6.9010907@yandex.ru>
In-Reply-To: <6AE65535-DCCE-46A5-BBB9-358FEB34C18C@gmail.com>
References:  <6AE65535-DCCE-46A5-BBB9-358FEB34C18C@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
On 12.10.2010 0:18, Tobias Fredriksson wrote:
> I understand the reason for this, its trying to read a block and the integer just wrapped around.
> Nice. The relevant lines from growfs.c are
> 
> static void rdfs(ufs2_daddr_t bno, size_t size, void *bf, int fsi) { [...] if (bno < 0) { err(32,
> "rdfs: attempting to read negative block number"); } [...]
> 
> Just for fun I commented the if part out and recompiled. growfs: rdfs: read error:
> -4889807711788704476: Input/output error

It seems that 20T is not so big to overflow int64_t. I think it can be somewhere
is rdfs called from.
You can try to add abort(3) call to the if part and recompile with DEBUG_FLAGS=-g.
When this if statement will be triggered again growfs will drop core file and you
could inspect it with gdb. But i don't know how is is dangerous for your FS.

-- 
WBR, Andrey V. Elsukov


[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (MingW32)

iQEcBAEBAgAGBQJMtD2rAAoJEAHF6gQQyKF6wpgH/jOUDTI/byhncLUNY+KS1Vg8
TSE61JTC+4auf1AxXurT04uYtBPE5KArbdU51cL9/YxIPdtazd9bIeEsrJC0Yj7j
VXwkYQ/+k11LMWUOtuq/fHB1C2ZZ5bIalU6QCIUEhZbukGqZnaRAhVkM/0qvZFzt
Rg1iTX5g0mXzGtImWWGSHGNcW57/nTmDUZuUG0icfeCsXTvH9ezosclsfUIet0Bh
z6RBLV8MvfSAvprieluGgnHc+AWRl/RZkweOVBH+KDD4kMos6vBpAqscqp871d+H
MEoPpcesdUP/SOAOVB3lqld8Vpl4rzdtFs+6XmM8fmWuRaZmUMdgwuyFfiO7zKw=
=DPpW
-----END PGP SIGNATURE-----

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