git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: GIT get corrupted on lustre

From
SBSébastien Boisvert <sebastien.boisvert@calculquebec.ca>
Date
Jan 23, 2013, 14:45 UTC
Message-ID
<50FFF79F.6080103@calculquebec.ca>
In-Reply-To
<878v7keuh3.fsf@pctrast.inf.ethz.ch>
On 01/22/2013 05:14 PM, Thomas Rast wrote:
Show 14 quoted lines
> Eric Chamberland <Eric.Chamberland@giref.ulaval.ca> writes:
>
>> So, hum, do we have some sort of conclusion?
>>
>> Shall it be a fix for git to get around that lustre "behavior"?
>>
>> If something can be done in git it would be great: it is a *lot*
>> easier to change git than the lustre filesystem software for a cluster
>> in running in production mode... (words from cluster team) :-/
>
> I thought you already established that simply disabling the progress
> display is a sufficient workaround?  If that doesn't help, you can try
> patching out all use of SIGALRM within git.
>
In git (9591fcc6d66), I have found these SIGALRM signal handling:

builtin/log.c:268: sigaction(SIGALRM, &sa, NULL); builtin/log.c:285: signal(SIGALRM, SIG_IGN); compat/mingw.c:1590: mingw_raise(SIGALRM); compat/mingw.c:1666: if (sig != SIGALRM) compat/mingw.c:1668: error("sigaction only implemented for SIGALRM"); compat/mingw.c:1683: case SIGALRM: compat/mingw.c:1702: case SIGALRM: compat/mingw.c:1706: exit(128 + SIGALRM); compat/mingw.c:1708: timer_fn(SIGALRM); compat/mingw.h:42:#define SIGALRM 14 perl/Git/SVN.pm:2121: SIGALRM, SIGUSR1, SIGUSR2); progress.c:56: sigaction(SIGALRM, &sa, NULL); progress.c:68: signal(SIGALRM, SIG_IGN);

I suppose that compat/mingw.{h,c} and SVN.pm can be ignored as our patch to work around this problem won't be pushed upstream because the real problem is not in git, right ?

If I understand correctly, some VFS system calls get interrupted by SIGALRM, but when they resume (via SA_RESTART) they return EINTR. Thomas said that these failed calls may need to be retried, but that open(O_CREAT|O_EXCL) is still tricky around this case.

progress.c SIGALRM code paths are for progress and therefore are required, right ?
builtin/log.c SIGALRM code paths are for early output, and the comments in the code say that
    "If we can get the whole output in less than a tenth of a second, don't even bother doing the
     early-output thing."
So where do I start for the patch ?
> Other than that I agree with Junio, from what we've seen so far, Lustre
> returns EINTR on all sorts of calls that simply aren't allowed to do so.
>
-- 
---
Spécialiste en granularité (1 journée / semaine)
Calcul Québec / Calcul Canada
Pavillon Adrien-Pouliot, Université Laval, Québec (Québec), Canada
Previous: Eric ChamberlandNext: Sébastien Boisvert
Message 23 of 36 in “GIT get corrupted on lustre”
  1. Eric ChamberlandDec 24, 2012
  2. Andreas SchwabDec 24, 2012
  3. Brian J. MurrellDec 24, 2012
  4. Eric ChamberlandJan 8, 2013
  5. Eric ChamberlandJan 9, 2013
  6. Eric ChamberlandJan 17, 2013
  7. Philippe VaucherJan 17, 2013
  8. Eric ChamberlandJan 17, 2013
  9. Pyeron, Jason J CTR (US)Jan 17, 2013
  10. Maxime BoissonneaultJan 17, 2013
  11. Pyeron, Jason J CTR (US)Jan 17, 2013
  12. Eric ChamberlandJan 18, 2013
  13. Erik Faye-LundJan 21, 2013
  14. Thomas RastJan 21, 2013
  15. Maxime BoissonneaultJan 21, 2013
  16. Thomas RastJan 21, 2013
  17. Brian J. MurrellJan 21, 2013
  18. Thomas RastJan 21, 2013
  19. Eric ChamberlandJan 22, 2013
  20. Junio C HamanoJan 22, 2013
  21. Thomas RastJan 22, 2013
  22. Eric ChamberlandJan 22, 2013
  23. Sébastien BoisvertJan 23, 2013
  24. Sébastien BoisvertJan 23, 2013
  25. Erik Faye-LundJan 23, 2013
  26. Thomas RastJan 23, 2013
  27. Erik Faye-LundJan 23, 2013
  28. Thomas RastJan 23, 2013
  29. Erik Faye-LundJan 23, 2013
  30. Jonathan NiederJan 23, 2013
  31. Sébastien BoisvertJan 23, 2013
  32. Eric ChamberlandFeb 4, 2013
  33. Eric ChamberlandJan 21, 2013
  34. Eric ChamberlandJan 21, 2013
  35. Greg TroxelDec 25, 2012
  36. Jeff KingDec 26, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.