From: Johannes Sixt <j6t@kdbg.org>
To: Stefan Beller <sbeller@google.com>
Cc: Junio C Hamano <gitster@pobox.com>,
"git@vger.kernel.org" <git@vger.kernel.org>,
Johannes Schindelin <johannes.schindelin@gmx.de>
Subject: Re: git.git as of tonight
Date: Tue, 3 Nov 2015 22:03:02 +0100 [thread overview]
Message-ID: <56392106.1010401@kdbg.org> (raw)
In-Reply-To: <CAGZ79kbAj-tZS3X1EwFw_gGh1=YU8M0OmEX91W8f++fqs6TiBA@mail.gmail.com>
Am 03.11.2015 um 19:18 schrieb Stefan Beller:
> ... ReadFileEx ... "overlapped" operation.
Let's not go there just yet.
>> 1. Make this an optional feature so that platforms can compile it
>> out, if it is not already done. My preference, even if we go
>> that route, would be to see if we can find a way to preserve the
>> overall code structure (e.g. instead of spawning multiple
>> workers, which is why the code needs NONBLOCK to avoid getting
>> stuck on reading from one while others are working, perhaps we
>> can spawn only one and not do a nonblock read?).
>
> Yeah that would be my understanding as well. If we don't come up with
> a good solution for parallelism in Windows now, we'd need to make it at
> least working in the jobs=1 case as well as it worked before.
That should be possible. I discovered today that we have this function:
static void set_nonblocking(int fd)
{
int flags = fcntl(fd, F_GETFL);
if (flags < 0)
warning("Could not get file status flags, "
"output will be degraded");
else if (fcntl(fd, F_SETFL, flags | O_NONBLOCK))
warning("Could not set file status flags, "
"output will be degraded");
}
Notice that it is not a fatal condition if O_NONBLOCK cannot be
established. (BTW, did you ever test this condition?) If we add two
lines (which remove the stuff that does not work on Windows) like this:
static void set_nonblocking(int fd)
{
#ifndef GIT_WINDOWS_NATIVE
int flags = fcntl(fd, F_GETFL);
if (flags < 0)
warning("Could not get file status flags, "
"output will be degraded");
else if (fcntl(fd, F_SETFL, flags | O_NONBLOCK))
#endif
warning("Could not set file status flags, "
"output will be degraded");
}
we should get something that works, theoretically. We still need a more
complete waitpid emulation, but that does not look like rocket science.
I'll investigate further in this direction.
-- Hannes
next prev parent reply other threads:[~2015-11-03 21:03 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-02 2:58 git.git as of tonight Junio C Hamano
2015-11-02 21:15 ` Johannes Sixt
2015-11-02 22:16 ` Junio C Hamano
2015-11-02 23:06 ` Stefan Beller
2015-11-03 6:34 ` Johannes Sixt
2015-11-03 17:05 ` Junio C Hamano
2015-11-03 18:18 ` Stefan Beller
2015-11-03 21:03 ` Johannes Sixt [this message]
2015-11-03 23:00 ` Stefan Beller
2015-11-04 19:59 ` O_NONBLOCK under Windows (was: git.git as of tonight) Torsten Bögershausen
2015-11-04 20:07 ` Stefan Beller
2015-11-04 22:43 ` [PATCH 0/2] Missing " Stefan Beller
2015-11-04 22:43 ` [PATCH 1/2] run-parallel: rename set_nonblocking to set_nonblocking_or_die Stefan Beller
2015-11-05 6:07 ` Torsten Bögershausen
2015-11-05 6:14 ` Junio C Hamano
2015-11-05 6:19 ` Junio C Hamano
2015-11-05 6:58 ` Jeff King
2015-11-04 22:43 ` [PATCH 2/2] run-parallel: Run sequential if nonblocking I/O is unavailable Stefan Beller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56392106.1010401@kdbg.org \
--to=j6t@kdbg.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=johannes.schindelin@gmx.de \
--cc=sbeller@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.