From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Michael Subject: Re: [PATCH] dmd: Allow storing early logs before writing to disk Date: Wed, 17 Sep 2014 17:36:23 -0400 Message-ID: References: <87d2b36nak.fsf@gmail.com> <87sijyqldj.fsf@gnu.org> <87ha0bk95q.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:52335) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XUMtr-00072D-8O for guix-devel@gnu.org; Wed, 17 Sep 2014 17:36:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XUMtq-0003th-93 for guix-devel@gnu.org; Wed, 17 Sep 2014 17:36:31 -0400 In-Reply-To: <87ha0bk95q.fsf@gnu.org> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: =?UTF-8?Q?Ludovic_Court=C3=A8s?= Cc: guix-devel@gnu.org On Sat, Sep 13, 2014 at 8:16 AM, Ludovic Court=C3=A8s wrote: > David Michael skribis: >> On Thu, Sep 11, 2014 at 10:31 AM, Ludovic Court=C3=A8s wr= ote: [snip] >>> The ideal thing would be: >>> >>> 1. Run =E2=80=98dmd -l foo.log=E2=80=99. >>> 2. If foo.log is not writable, then make =E2=80=98log-output-port=E2= =80=99 a string >>> port. >> >> Do you think it makes sense to define log-output-port as a string port >> at first instead of a void port? > > No, because running dmd without =E2=80=98-l=E2=80=99 means disabling logg= ing altogether, > hence the void port. That doesn't appear to be the case. The main procedure in modules/dmd.scm is calling start-logging unconditionally, with the default log file if the option is omitted. >>> 3. When foo.log becomes writable, have =E2=80=98log-output-port=E2=80= =99 point to it >>> and dump previously buffered data. >>> >>> But #3 is difficult. >>> >>> Maybe instead of using a string port, we could use a string port that >>> keeps trying to open the log file? >>> >>> It would be best to use inotify (or the Hurd=E2=80=99s fs_notify), of c= ourse. >> >> Something like that would be a nice transparent solution for read-only >> booting, but I could see another issue arising from it later. It's >> common to have /var or /var/log on a different volume that may not be >> mounted when the root file system's /var/log is writable. Writing >> logs as soon as possible could miss the sysadmin's desired log volume >> (which theoretically could also happen with dmd as is). > > Right, that makes sense. I think it=E2=80=99s a good argument against tr= ying to > do something too smart. > > So probably the patch you propose is the best approach. > > Then I would suggest a small change: instead of the magic > =E2=80=98--log-file=3Ddelayed=E2=80=99, what about adding a new option, s= ay, > =E2=80=98--buffered-log=E2=80=99? WDYT? Yes, I think a separate option would be better. If it's expected that users will handle early mount configuration in their dmdconf.scm, separate options could allow doing something like specifying both options and starting to write to the given log file automatically after processing dmdconf.scm, if it wasn't started explicitly. That could at least remove the need for the user to have to know to start logging themselves. I haven't had a chance to try rewriting this yet, but I can send a new version when I do. Thanks. David