git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Nguyen Thai Ngoc Duy <pclouds@gmail.com>
To: Erik Faye-Lund <kusmabite@gmail.com>
Cc: Johannes Sixt <j.sixt@viscovery.net>,
	Ramsay Jones <ramsay@ramsay1.demon.co.uk>,
	Junio C Hamano <gitster@pobox.com>,
	Git Mailing List <git@vger.kernel.org>
Subject: Re: What's cooking in git.git (Apr 2012, #06; Sun, 15)
Date: Sat, 21 Apr 2012 10:00:18 +0700	[thread overview]
Message-ID: <20120421030018.GA32687@do> (raw)
In-Reply-To: <CABPQNSa7NiK=baYbDBENt-An0mFGn1i+GPnN_=LpqAVScXrG2w@mail.gmail.com>

On Thu, Apr 19, 2012 at 03:52:44PM +0200, Erik Faye-Lund wrote:
> On Thu, Apr 19, 2012 at 3:48 PM, Johannes Sixt <j.sixt@viscovery.net> wrote:
> > Am 4/19/2012 15:31, schrieb Erik Faye-Lund:
> >> int main(int argc, const char *argv[])
> >> {
> >>         int i, fd = open(__FILE__, O_RDONLY);
> >>         for (i = 0; i < 2; ++i) {
> >>                 char buf[11] = {0};
> >>                 mingw_pread(fd, buf, 10, 0);
> >>                 printf("buf = '%10s'\n", buf);
> >>         }
> >>         return 0;
> >> }
> >
> > The test is flawed. It shows only that pread can read twice the same file
> > location.
> 
> Oh, you are of course right. *slaps forehead*
> 
> > But it must not update the file pointer, whereas the
> > documentation of ReadFile says (quoting the paragraph that is relevant for
> > us):
> >
> >  If hFile is not opened with FILE_FLAG_OVERLAPPED and lpOverlapped is
> >  not NULL, the read operation starts at the offset that is specified in
> >  the OVERLAPPED structure. ReadFile does not return until the read
> >  operation is complete, and then the system updates the file pointer.
> 
> Indeed. Correcting the test to first do pread and then read reveals
> that the file pointer does indeed get updated. Grrr...
> 
> > Hence, your mingw_pread() looks like a workable solution for our purposes,
> > but is still not a 100% correct emulation of pread(). (Testing all this
> > will have to wait for another 18 hours or so.)
> >
> 
> I don't know our use-cases, but I'd be a lot happier if I could find a
> safe way to have it not update the file-pointer. Just reading it and
> setting it back again would be racy.

Replace pread() in index-pack to pread_weak() because we know we don't
care about file offset in index-pack. Define pread_weak as pread
normally. Windows port can provide its own pread_weak version, which
can freely move file offset.
-- 
Duy

  reply	other threads:[~2012-04-21  3:03 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-16  6:44 What's cooking in git.git (Apr 2012, #06; Sun, 15) Junio C Hamano
2012-04-16  9:07 ` Nelson Benitez Leon
2012-04-16  8:20   ` Junio C Hamano
2012-04-16 11:24     ` Nelson Benitez Leon
2012-04-16 15:03       ` Junio C Hamano
2012-04-18  7:15 ` Johannes Sixt
2012-04-18 19:53   ` Ramsay Jones
2012-04-19  6:16     ` Johannes Sixt
2012-04-19  6:45       ` Johannes Sixt
2012-04-19  7:02         ` Nguyen Thai Ngoc Duy
2012-04-19  9:36         ` Nguyen Thai Ngoc Duy
2012-04-19 12:58           ` Erik Faye-Lund
2012-04-19 13:18             ` Nguyen Thai Ngoc Duy
2012-04-19 13:31               ` Erik Faye-Lund
2012-04-19 13:38                 ` Nguyen Thai Ngoc Duy
2012-04-19 13:48                 ` Johannes Sixt
2012-04-19 13:52                   ` Erik Faye-Lund
2012-04-21  3:00                     ` Nguyen Thai Ngoc Duy [this message]
2012-04-21  5:46                       ` Nguyen Thai Ngoc Duy

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=20120421030018.GA32687@do \
    --to=pclouds@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=j.sixt@viscovery.net \
    --cc=kusmabite@gmail.com \
    --cc=ramsay@ramsay1.demon.co.uk \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).