From owner-svn-src-head@freebsd.org Fri Apr 14 20:02:26 2017 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A25DDD3EA16; Fri, 14 Apr 2017 20:02:26 +0000 (UTC) (envelope-from asomers@gmail.com) Received: from mail-yw0-x22d.google.com (mail-yw0-x22d.google.com [IPv6:2607:f8b0:4002:c05::22d]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 5ED1D8D; Fri, 14 Apr 2017 20:02:26 +0000 (UTC) (envelope-from asomers@gmail.com) Received: by mail-yw0-x22d.google.com with SMTP id j9so38734649ywj.3; Fri, 14 Apr 2017 13:02:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc:content-transfer-encoding; bh=vAjVSUbuLlx43u8jTu+lI3olwW+D77R43yXKBe3r3Tw=; b=pD8yb4/rZgW4GM9Srnq4Vcnsss+d9k77kLJyqCrejEg73+DrIAN8nfJNHutCsrUsFn Z9+yxL1C/1kqxgoJg0olLMr1xEKQQCpSDK7pdQsVaeraU5bA8JcH41gtrbD5sBwHWK8k aQFNnQtioSFVyeOUDpZsj9iAhNiM8txAIfgFUkraQPq1sXrPsLXRMaJGRfA1F/wLNcvr htJewdUcaYrOm8z+PlDb/7GbNZEsex4iOdBTvwODQUxE9awPIKTOL8UneP4+GsZR99XX vJ+JsDPwuO7NINZFx4W/iy4uFbfigchnNJQ8M4fGd8pfsbvVlc+B+lrwE3Bpq202MX/4 wvGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc:content-transfer-encoding; bh=vAjVSUbuLlx43u8jTu+lI3olwW+D77R43yXKBe3r3Tw=; b=CzroFN+bVDc+LDbJbc4wRRX1p7Kq4Rg2zuXpPnJdoGwnR+zocenRcxlG56YkE8Fjsh NvWmG0m1BYEJ/TBsxMl8nPuDeIG7B6dven+U3ZmP4glZdU3Y1E2GfDSW1MoDQ8EUZUxu Y7kfhLzIe/DASckfBNMTGsOEzsVPXIOLWzq7HIn5aifP8MJXHULaqUkaWXfw3bkqArLk Z1PWHBZCocEX9sDzHoeYrXQCaaFzMwy0yiJOu0EP5g/NkUwo98chO/mXKAMiHdSnQe8g Wg44G73Oex6AmLGci0+2l818Nd308DjLYQVYbsOBaRBj+/hrFp0e+IHJAC4jcSPT71LC 1L0A== X-Gm-Message-State: AN3rC/5HvCunv64nc5jHvzQbU127yJxFjqyBpNV8ABZ1imsOiBL6bIfd YM095UeULJyn722MCuHK8HMbd2Mz9g== X-Received: by 10.129.173.69 with SMTP id l5mr7325877ywk.351.1492200145360; Fri, 14 Apr 2017 13:02:25 -0700 (PDT) MIME-Version: 1.0 Sender: asomers@gmail.com Received: by 10.129.20.214 with HTTP; Fri, 14 Apr 2017 13:02:24 -0700 (PDT) In-Reply-To: <499FA6FF-E691-4941-B96C-3806072D14AA@gmail.com> References: <201704141941.v3EJfmCW003347@repo.freebsd.org> <499FA6FF-E691-4941-B96C-3806072D14AA@gmail.com> From: Alan Somers Date: Fri, 14 Apr 2017 14:02:24 -0600 X-Google-Sender-Auth: pEMtt7mKqj2zrkS9xyxsVjfjzq0 Message-ID: Subject: Re: svn commit: r316938 - head/sbin/savecore To: "Ngie Cooper (yaneurabeya)" Cc: Ngie Cooper , "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Apr 2017 20:02:26 -0000 On Fri, Apr 14, 2017 at 1:58 PM, Ngie Cooper (yaneurabeya) wrote: > >> On Apr 14, 2017, at 12:49, Alan Somers wrote: >> >> On Fri, Apr 14, 2017 at 1:41 PM, Ngie Cooper 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 (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