From: Derrick Stolee <stolee@gmail.com> To: git@vger.kernel.org Cc: gitster@pobox.com, peff@peff.net, git@jeffhostetler.com, jonathantanmy@google.com, sbeller@google.com, szeder.dev@gmail.com, ramsay@ramsayjones.plus.com, Derrick Stolee <dstolee@microsoft.com> Subject: [PATCH v5 04/13] csum-file: add CSUM_KEEP_OPEN flag Date: Mon, 26 Feb 2018 21:32:58 -0500 Message-ID: <1519698787-190494-5-git-send-email-dstolee@microsoft.com> (raw) In-Reply-To: <1519698787-190494-1-git-send-email-dstolee@microsoft.com> This patch is new to the series due to the interactions with the lockfile API and the hashfile API. I need to ensure the hashfile writes the hash value at the end of the file, but keep the file descriptor open so the lock is valid. I welcome any susggestions to this patch or to the way I use it in the commit that follows. -- >8 -- If we want to use a hashfile on the temporary file for a lockfile, then we need hashclose() to fully write the trailing hash but also keep the file descriptor open. Signed-off-by: Derrick Stolee <dstolee@microsoft.com> --- csum-file.c | 10 +++++++--- csum-file.h | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/csum-file.c b/csum-file.c index 5eda7fb..302e6ae 100644 --- a/csum-file.c +++ b/csum-file.c @@ -66,9 +66,13 @@ int hashclose(struct hashfile *f, unsigned char *result, unsigned int flags) flush(f, f->buffer, the_hash_algo->rawsz); if (flags & CSUM_FSYNC) fsync_or_die(f->fd, f->name); - if (close(f->fd)) - die_errno("%s: sha1 file error on close", f->name); - fd = 0; + if (flags & CSUM_KEEP_OPEN) + fd = f->fd; + else { + if (close(f->fd)) + die_errno("%s: sha1 file error on close", f->name); + fd = 0; + } } else fd = f->fd; if (0 <= f->check_fd) { diff --git a/csum-file.h b/csum-file.h index 992e5c0..b7c0e48 100644 --- a/csum-file.h +++ b/csum-file.h @@ -29,6 +29,7 @@ extern int hashfile_truncate(struct hashfile *, struct hashfile_checkpoint *); /* hashclose flags */ #define CSUM_CLOSE 1 #define CSUM_FSYNC 2 +#define CSUM_KEEP_OPEN 4 extern struct hashfile *hashfd(int fd, const char *name); extern struct hashfile *hashfd_check(const char *name); -- 2.7.4
next prev parent reply other threads:[~2018-02-27 2:33 UTC|newest] Thread overview: 110+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-02-27 2:32 [PATCH v5 00/13] Serialized Git Commit Graph Derrick Stolee 2018-02-27 2:32 ` [PATCH v5 01/13] commit-graph: add format document Derrick Stolee 2018-02-27 2:32 ` [PATCH v5 02/13] graph: add commit graph design document Derrick Stolee 2018-02-27 2:32 ` [PATCH v5 03/13] commit-graph: create git-commit-graph builtin Derrick Stolee 2018-02-27 2:32 ` Derrick Stolee [this message] 2018-03-12 13:55 ` [PATCH v5 04/13] csum-file: add CSUM_KEEP_OPEN flag Derrick Stolee 2018-03-13 21:42 ` Junio C Hamano 2018-03-14 2:26 ` Derrick Stolee 2018-03-14 17:00 ` Junio C Hamano 2018-02-27 2:32 ` [PATCH v5 05/13] commit-graph: implement write_commit_graph() Derrick Stolee 2018-02-27 2:33 ` [PATCH v5 06/13] commit-graph: implement 'git-commit-graph write' Derrick Stolee 2018-02-27 2:33 ` [PATCH v5 07/13] commit-graph: implement git commit-graph read Derrick Stolee 2018-02-27 2:33 ` [PATCH v5 08/13] commit-graph: add core.commitGraph setting Derrick Stolee 2018-02-27 2:33 ` [PATCH v5 09/13] commit-graph: close under reachability Derrick Stolee 2018-02-27 2:33 ` [PATCH v5 10/13] commit: integrate commit graph with commit parsing Derrick Stolee 2018-02-27 2:33 ` [PATCH v5 11/13] commit-graph: read only from specific pack-indexes Derrick Stolee 2018-02-27 20:15 ` Stefan Beller 2018-02-27 2:33 ` [PATCH v5 12/13] commit-graph: build graph from starting commits Derrick Stolee 2018-02-27 2:33 ` [PATCH v5 13/13] commit-graph: implement "--additive" option Derrick Stolee 2018-02-27 18:50 ` [PATCH v5 00/13] Serialized Git Commit Graph Stefan Beller 2018-03-14 19:27 ` [PATCH v6 00/14] " Derrick Stolee 2018-03-14 19:27 ` [PATCH v6 01/14] csum-file: rename hashclose() to finalize_hashfile() Derrick Stolee 2018-03-14 19:27 ` [PATCH v6 02/14] csum-file: refactor finalize_hashfile() method Derrick Stolee 2018-03-14 19:27 ` [PATCH v6 03/14] commit-graph: add format document Derrick Stolee 2018-03-14 19:27 ` [PATCH v6 04/14] graph: add commit graph design document Derrick Stolee 2018-03-14 19:27 ` [PATCH v6 05/14] commit-graph: create git-commit-graph builtin Derrick Stolee 2018-03-14 19:27 ` [PATCH v6 06/14] commit-graph: implement write_commit_graph() Derrick Stolee 2018-03-14 19:27 ` [PATCH v6 07/14] commit-graph: implement 'git-commit-graph write' Derrick Stolee 2018-03-18 13:25 ` Ævar Arnfjörð Bjarmason 2018-03-19 13:12 ` Derrick Stolee 2018-03-19 14:36 ` Ævar Arnfjörð Bjarmason 2018-03-19 18:27 ` Derrick Stolee 2018-03-19 18:48 ` Ævar Arnfjörð Bjarmason 2018-03-14 19:27 ` [PATCH v6 08/14] commit-graph: implement git commit-graph read Derrick Stolee 2018-03-14 19:27 ` [PATCH v6 09/14] commit-graph: add core.commitGraph setting Derrick Stolee 2018-03-14 19:27 ` [PATCH v6 10/14] commit-graph: close under reachability Derrick Stolee 2018-03-14 19:27 ` [PATCH v6 11/14] commit: integrate commit graph with commit parsing Derrick Stolee 2018-03-14 19:27 ` [PATCH v6 12/14] commit-graph: read only from specific pack-indexes Derrick Stolee 2018-03-15 22:50 ` SZEDER Gábor 2018-03-19 13:13 ` Derrick Stolee 2018-03-14 19:27 ` [PATCH v6 13/14] commit-graph: build graph from starting commits Derrick Stolee 2018-03-14 19:27 ` [PATCH v6 14/14] commit-graph: implement "--additive" option Derrick Stolee 2018-03-14 20:10 ` [PATCH v6 00/14] Serialized Git Commit Graph Ramsay Jones 2018-03-14 20:43 ` Junio C Hamano 2018-03-15 17:23 ` Johannes Schindelin 2018-03-15 18:41 ` Junio C Hamano 2018-03-15 21:51 ` Ramsay Jones 2018-03-16 11:50 ` Johannes Schindelin 2018-03-16 17:27 ` Junio C Hamano 2018-03-19 11:41 ` Johannes Schindelin 2018-03-16 16:28 ` Lars Schneider 2018-03-19 13:10 ` Derrick Stolee 2018-03-16 15:06 ` Ævar Arnfjörð Bjarmason 2018-03-16 16:38 ` SZEDER Gábor 2018-03-16 18:33 ` Junio C Hamano 2018-03-16 19:48 ` SZEDER Gábor 2018-03-16 20:06 ` Jeff King 2018-03-16 20:19 ` Jeff King 2018-03-19 12:55 ` Derrick Stolee 2018-03-20 1:17 ` Derrick Stolee 2018-03-16 20:49 ` Jeff King 2018-04-02 20:34 ` [PATCH v7 " Derrick Stolee 2018-04-02 20:34 ` [PATCH v7 01/14] csum-file: rename hashclose() to finalize_hashfile() Derrick Stolee 2018-04-02 20:34 ` [PATCH v7 02/14] csum-file: refactor finalize_hashfile() method Derrick Stolee 2018-04-07 22:59 ` Jakub Narebski 2018-04-02 20:34 ` [PATCH v7 03/14] commit-graph: add format document Derrick Stolee 2018-04-07 23:49 ` Jakub Narebski 2018-04-02 20:34 ` [PATCH v7 04/14] graph: add commit graph design document Derrick Stolee 2018-04-08 11:06 ` Jakub Narebski 2018-04-02 20:34 ` [PATCH v7 05/14] commit-graph: create git-commit-graph builtin Derrick Stolee 2018-04-02 20:34 ` [PATCH v7 06/14] commit-graph: implement write_commit_graph() Derrick Stolee 2018-04-02 20:34 ` [PATCH v7 07/14] commit-graph: implement git-commit-graph write Derrick Stolee 2018-04-08 11:59 ` Jakub Narebski 2018-04-02 20:34 ` [PATCH v7 08/14] commit-graph: implement git commit-graph read Derrick Stolee 2018-04-02 21:33 ` Junio C Hamano 2018-04-03 11:49 ` Derrick Stolee 2018-04-08 12:59 ` Jakub Narebski 2018-04-02 20:34 ` [PATCH v7 09/14] commit-graph: add core.commitGraph setting Derrick Stolee 2018-04-08 13:39 ` Jakub Narebski 2018-04-02 20:34 ` [PATCH v7 10/14] commit-graph: close under reachability Derrick Stolee 2018-04-02 20:34 ` [PATCH v7 11/14] commit: integrate commit graph with commit parsing Derrick Stolee 2018-04-02 20:34 ` [PATCH v7 12/14] commit-graph: read only from specific pack-indexes Derrick Stolee 2018-04-02 20:34 ` [PATCH v7 13/14] commit-graph: build graph from starting commits Derrick Stolee 2018-04-08 13:50 ` Jakub Narebski 2018-04-02 20:34 ` [PATCH v7 14/14] commit-graph: implement "--additive" option Derrick Stolee 2018-04-05 8:27 ` SZEDER Gábor 2018-04-10 12:55 ` [PATCH v8 00/14] Serialized Git Commit Graph Derrick Stolee 2018-04-10 12:55 ` [PATCH v8 01/14] csum-file: rename hashclose() to finalize_hashfile() Derrick Stolee 2018-04-10 12:55 ` [PATCH v8 02/14] csum-file: refactor finalize_hashfile() method Derrick Stolee 2018-04-10 12:55 ` [PATCH v8 03/14] commit-graph: add format document Derrick Stolee 2018-04-10 19:10 ` Stefan Beller 2018-04-10 19:18 ` Derrick Stolee 2018-04-11 20:58 ` Jakub Narebski 2018-04-12 11:28 ` Derrick Stolee 2018-04-13 22:07 ` Jakub Narebski 2018-04-10 12:55 ` [PATCH v8 04/14] graph: add commit graph design document Derrick Stolee 2018-04-15 22:48 ` Jakub Narebski 2018-04-10 12:55 ` [PATCH v8 05/14] commit-graph: create git-commit-graph builtin Derrick Stolee 2018-04-10 12:56 ` [PATCH v8 06/14] commit-graph: implement write_commit_graph() Derrick Stolee 2018-04-10 12:56 ` [PATCH v8 07/14] commit-graph: implement git-commit-graph write Derrick Stolee 2018-04-10 12:56 ` [PATCH v8 08/14] commit-graph: implement git commit-graph read Derrick Stolee 2018-04-14 22:15 ` Jakub Narebski 2018-04-15 3:26 ` Eric Sunshine 2018-04-10 12:56 ` [PATCH v8 09/14] commit-graph: add core.commitGraph setting Derrick Stolee 2018-04-14 18:33 ` Jakub Narebski 2018-04-10 12:56 ` [PATCH v8 10/14] commit-graph: close under reachability Derrick Stolee 2018-04-10 12:56 ` [PATCH v8 11/14] commit: integrate commit graph with commit parsing Derrick Stolee 2018-04-10 12:56 ` [PATCH v8 12/14] commit-graph: read only from specific pack-indexes Derrick Stolee 2018-04-10 12:56 ` [PATCH v8 13/14] commit-graph: build graph from starting commits Derrick Stolee 2018-04-10 12:56 ` [PATCH v8 14/14] commit-graph: implement "--append" option Derrick Stolee
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=1519698787-190494-5-git-send-email-dstolee@microsoft.com \ --to=stolee@gmail.com \ --cc=dstolee@microsoft.com \ --cc=git@jeffhostetler.com \ --cc=git@vger.kernel.org \ --cc=gitster@pobox.com \ --cc=jonathantanmy@google.com \ --cc=peff@peff.net \ --cc=ramsay@ramsayjones.plus.com \ --cc=sbeller@google.com \ --cc=szeder.dev@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
git@vger.kernel.org list mirror (unofficial, one of many) This inbox may be cloned and mirrored by anyone: git clone --mirror https://public-inbox.org/git git clone --mirror http://ou63pmih66umazou.onion/git git clone --mirror http://czquwvybam4bgbro.onion/git git clone --mirror http://hjrcffqmbrq6wope.onion/git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V1 git git/ https://public-inbox.org/git \ git@vger.kernel.org public-inbox-index git Example config snippet for mirrors. Newsgroups are available over NNTP: nntp://news.public-inbox.org/inbox.comp.version-control.git nntp://ou63pmih66umazou.onion/inbox.comp.version-control.git nntp://czquwvybam4bgbro.onion/inbox.comp.version-control.git nntp://hjrcffqmbrq6wope.onion/inbox.comp.version-control.git nntp://news.gmane.io/gmane.comp.version-control.git note: .onion URLs require Tor: https://www.torproject.org/ code repositories for the project(s) associated with this inbox: https://80x24.org/mirrors/git.git AGPL code for this site: git clone https://public-inbox.org/public-inbox.git