Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 14 Apr 2017 14:02:24 -0600
From:      Alan Somers <asomers@freebsd.org>
To:        "Ngie Cooper (yaneurabeya)" <yaneurabeya@gmail.com>
Cc:        Ngie Cooper <ngie@freebsd.org>,  "src-committers@freebsd.org" <src-committers@freebsd.org>,  "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>,  "svn-src-head@freebsd.org" <svn-src-head@freebsd.org>
Subject:   Re: svn commit: r316938 - head/sbin/savecore
Message-ID:  <CAOtMX2g49C1EqLKOsj6en3B4oaVNQyD3joohFO3QcJTUv1v93Q@mail.gmail.com>
In-Reply-To: <499FA6FF-E691-4941-B96C-3806072D14AA@gmail.com>
References:  <201704141941.v3EJfmCW003347@repo.freebsd.org> <CAOtMX2gPHWRGiE9UA5AevZz=cTv_qksAWX0H-xRjDEHp0huCVg@mail.gmail.com> <499FA6FF-E691-4941-B96C-3806072D14AA@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Apr 14, 2017 at 1:58 PM, Ngie Cooper (yaneurabeya)
<yaneurabeya@gmail.com> wrote:
>
>> On Apr 14, 2017, at 12:49, Alan Somers <asomers@freebsd.org> wrote:
>>
>> On Fri, Apr 14, 2017 at 1:41 PM, Ngie Cooper <ngie@freebsd.org> wrote:
>>> Author: ngie
>>> Date: Fri Apr 14 19:41:48 2017
>>> New Revision: 316938
>>> URL: https://svnweb.freebsd.org/changeset/base/316938
>>>
>>> Log:
>>>  savecore: fix space calculation with respect to `minfree` in check_spa=
ce(..)
>>>
>>>  - Use strtoll(3) instead of atoi(3), because atoi(3) limits the
>>>    representable data to INT_MAX. Check the values received from
>>>    strtoll(3), trimming trailing whitespace off the end to maintain
>>>    POLA.
>>>  - Use `KiB` instead of `kB` when describing free space, total space,
>>>    etc. I am now fully aware of `KiB` being the IEC standard for 1024
>>>    bytes and `kB` being the IEC standard for 1000 bytes.
>>>  - Store available number of KiB in `available` so it can be more
>>>    easily queried and compared to ensure that there are enough KiB to
>>>    store the dump image on disk.
>>>  - Print out the reserved space on disk, per `minfree`, so end-users
>>>    can troubleshoot why check_space(..) is reporting that there isn't
>>>    enough free space.
>>>
>>>  MFC after:    7 weeks
>>>  Reviewed by:  Anton Rang <rang@acm.com> (earlier diff), cem (earlier d=
iff)
>>>  Tested with:  positive/negative cases (see review); make tinderbox
>>>  Sponsored by: Dell EMC Isilon
>>>  Differential Revision:        D10379
>>
>> The free space calculation is still uselessly conservative, because it
>> doesn't account for the fact that core dumps will always be either
>> spare or compressed.  The result is that savecore will frequently
>> refuse to save corefiles even when there's plenty of space.  I
>> proposed removing the space check altogether in
>> https://reviews.freebsd.org/D2587.  However, I agreed to wait until
>> after the compressed core dump feature was merged, because then mostly
>> accurate space checks will be possible.  AFAIK the compressed core
>> dump feature still hasn't been finished.
>
> That CR concerns me.
>
> The whole being able to check how much space we have on disk before dumpi=
ng is a wonderful tool because it prevents users from having /var/crash be =
full of truncated full dumps, text dumps, and/or mini dumps.
>
> The real problem that you=E2=80=99re bringing up is that the size being p=
assed in to check_size(..) is wrong. It needs to be the on-disk size (which=
 can be a pessimization from gzip/zlib), not the in-memory size of all of t=
he dumped pages.
>
> Thanks for the note =E2=80=94 this helps me with another related issue at=
 $work that will likely prevent me from being able to write proper tests to=
 test out panic dumps on OneFS :).
>
> Cheers!
> -Ngie

Right: check_size() needs to know the on-disk size of the core dump.
But it doesn't have any way to know the on-disk size until after it's
written everything to disk.  That's why I simply disabled the check at
$WORK.  Another possibility would be for savecore to ignore the
up-front check, but handle ENOSPC by deleting the fragmentary vmcore
file.  I never tried to implement that.
-Alan



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