git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: Lars Schneider <larsxschneider@gmail.com>
Cc: git@vger.kernel.org, e@80x24.org, jnareb@gmail.com, gitster@pobox.com
Subject: Re: [PATCH v2 1/2] sha1_file: open window into packfiles with CLOEXEC
Date: Tue, 25 Oct 2016 12:27:52 +0200 (CEST)	[thread overview]
Message-ID: <alpine.DEB.2.20.1610251220280.3264@virtualbox> (raw)
In-Reply-To: <20161024180300.52359-2-larsxschneider@gmail.com>

Hi Lars,

On Mon, 24 Oct 2016, larsxschneider@gmail.com wrote:

> From: Lars Schneider <larsxschneider@gmail.com>
> 
> All processes that the Git main process spawns inherit the open file
> descriptors of the main process. These leaked file descriptors can
> cause problems.
> 
> Use the CLOEXEC flag similar to 05d1ed61 to fix the leaked file
> descriptors. Since `git_open_noatime` does not describe the function
> properly anymore rename it to `git_open`.

The patch series may be a little bit more pleasant to read if you renamed
git_open_noatime() to git_open() first, in a separate commit.

> @@ -1598,12 +1598,18 @@ int git_open_noatime(const char *name)
>  		if (fd >= 0)
>  			return fd;
>  
> -		/* Might the failure be due to O_NOATIME? */
> -		if (errno != ENOENT && sha1_file_open_flag) {
> -			sha1_file_open_flag = 0;
> +		/* Try again w/o O_CLOEXEC: the kernel might not support it */
> +		if (O_CLOEXEC && errno == EINVAL &&
> +			(sha1_file_open_flag & O_CLOEXEC)) {
> +			sha1_file_open_flag &= ~O_CLOEXEC;

How about

		if ((O_CLOEXEC & sha1_file_open_flag) && errno == EINVAL) {
			sha1_file_open_flag &= ~O_CLOEXEC;

instead? It is shorter and should be just as easily optimized out by a
C compiler if O_CLOEXEC was defined as 0.

>  			continue;
>  		}
>  
> +		/* Might the failure be due to O_NOATIME? */
> +		if (errno != ENOENT && (sha1_file_open_flag & O_NOATIME)) {
> +			sha1_file_open_flag &= ~O_NOATIME;
> +			continue;
> +		}

I *think* the --patience diff option would have made that patch a little
more obvious.

Otherwise, the patch looks fine to me,
Dscho

  reply	other threads:[~2016-10-25 10:28 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-24 18:02 [PATCH v2 0/2] Use CLOEXEC to avoid fd leaks larsxschneider
2016-10-24 18:02 ` [PATCH v2 1/2] sha1_file: open window into packfiles with CLOEXEC larsxschneider
2016-10-25 10:27   ` Johannes Schindelin [this message]
2016-10-25 16:58     ` Junio C Hamano
2016-10-24 18:03 ` [PATCH v2 2/2] read-cache: make sure file handles are not inherited by child processes larsxschneider
2016-10-24 18:39   ` Eric Wong
2016-10-24 19:53     ` Junio C Hamano
2016-10-25 10:33       ` Johannes Schindelin
2016-10-25 17:02         ` Junio C Hamano
2016-10-24 19:22   ` Johannes Sixt
2016-10-24 19:53     ` Lars Schneider
2016-10-25 21:39       ` Johannes Sixt
2016-10-24 18:23 ` [PATCH v2 0/2] Use CLOEXEC to avoid fd leaks Junio C Hamano
2016-10-25 11:27 ` Johannes Schindelin
2016-10-25 18:16   ` [PATCH v3 0/3] quick reroll of Lars's git_open() w/ O_CLOEXEC Junio C Hamano
2016-10-25 18:16     ` [PATCH v3 1/3] sha1_file: rename git_open_noatime() to git_open() Junio C Hamano
2016-10-25 18:16     ` [PATCH v3 2/3] sha1_file: open window into packfiles with O_CLOEXEC Junio C Hamano
2016-10-26  4:25       ` Jeff King
2016-10-26 16:23         ` Junio C Hamano
2016-10-26 16:47           ` Jeff King
2016-10-26 17:52             ` Junio C Hamano
2016-10-26 20:17               ` Jeff King
2016-10-26 21:15                 ` Junio C Hamano
2016-10-27 10:24                   ` Jeff King
2016-10-27 21:49                     ` Junio C Hamano
2016-10-27 22:38                     ` Linus Torvalds
2016-10-27 22:56                       ` Junio C Hamano
2016-10-27 23:09                         ` Linus Torvalds
2016-10-27 23:19                           ` Linus Torvalds
2016-10-27 23:36                             ` Junio C Hamano
2016-10-27 23:44                               ` Linus Torvalds
2016-10-28  1:08                                 ` Junio C Hamano
2016-10-28  2:37                                   ` Junio C Hamano
2016-10-28  5:51                                     ` Eric Wong
2016-10-28 11:11                                     ` Johannes Schindelin
2016-10-28 16:13                                       ` Linus Torvalds
2016-10-28 16:48                                         ` Junio C Hamano
2016-10-28 17:38                                           ` Linus Torvalds
2016-10-28 17:47                                             ` Junio C Hamano
2016-10-29  1:26                                             ` Junio C Hamano
2016-10-29  8:25                                               ` Johannes Schindelin
2016-10-29 17:06                                                 ` Linus Torvalds
2016-10-31 17:37                                                   ` Junio C Hamano
2016-10-31 13:56                                         ` Jeff King
2016-10-31 17:55                                           ` Junio C Hamano
2016-10-31 18:05                                             ` Jeff King
2016-10-28 13:32                                     ` Junio C Hamano
2016-10-28 13:33                                       ` Junio C Hamano
2016-10-28  7:51                       ` Jeff King
2016-10-25 18:16     ` [PATCH v3 3/3] read-cache: make sure file handles are not inherited by child processes Junio C Hamano
2016-10-25 21:33       ` Eric Wong
2016-10-25 22:54         ` Junio C Hamano
2016-10-25 21:48     ` [PATCH v3 0/3] quick reroll of Lars's git_open() w/ O_CLOEXEC Lars Schneider
2016-10-25 22:56       ` Junio C Hamano

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

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.DEB.2.20.1610251220280.3264@virtualbox \
    --to=johannes.schindelin@gmx.de \
    --cc=e@80x24.org \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jnareb@gmail.com \
    --cc=larsxschneider@gmail.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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).