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

[PATCH 5/5] read-cache: try not to peek into `struct {lock_,temp}file`

From
MÅMartin Ågren <martin.agren@gmail.com>
Date
Jan 5, 2021, 19:23 UTC
Message-ID
<bb2327c7dca20fa563b18a9ec74180d7c595ca24.1609874026.git.martin.agren@gmail.com>
In-Reply-To
<cover.1609874026.git.martin.agren@gmail.com>

Similar to the previous commits, try to avoid peeking into the `struct lock_file`. We also have some `struct tempfile`s -- let's avoid looking into those as well.

Note that `do_write_index()` takes a tempfile and that when we call it, we either have a tempfile which we can easily hand down, or we have a lock file, from which we need to somehow obtain the internal tempfile. So we need to leave that one instance of peeking-into. Nevertheless, this commit leaves us not relying on exactly how the path of the tempfile / lock file is stored internally.

Signed-off-by: Martin Ågren <martin.agren@gmail.com>
---
 read-cache.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/read-cache.c b/read-cache.c
index ecf6f68994..29144cf879 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -3014,10 +3014,10 @@ static int do_write_index(struct index_state *istate, struct tempfile *tempfile,
 	if (ce_flush(&c, newfd, istate->oid.hash))
 		return -1;
 	if (close_tempfile_gently(tempfile)) {
-		error(_("could not close '%s'"), tempfile->filename.buf);
+		error(_("could not close '%s'"), get_tempfile_path(tempfile));
 		return -1;
 	}
-	if (stat(tempfile->filename.buf, &st))
+	if (stat(get_tempfile_path(tempfile), &st))
 		return -1;
 	istate->timestamp.sec = (unsigned int)st.st_mtime;
 	istate->timestamp.nsec = ST_MTIME_NSEC(st);
@@ -3058,10 +3058,10 @@ static int do_write_locked_index(struct index_state *istate, struct lock_file *l
 	 * that is associated with the given "istate".
 	 */
 	trace2_region_enter_printf("index", "do_write_index", the_repository,
-				   "%s", lock->tempfile->filename.buf);
+				   "%s", get_lock_file_path(lock));
 	ret = do_write_index(istate, lock->tempfile, 0);
 	trace2_region_leave_printf("index", "do_write_index", the_repository,
-				   "%s", lock->tempfile->filename.buf);
+				   "%s", get_lock_file_path(lock));
 
 	if (ret)
 		return ret;
@@ -3158,10 +3158,10 @@ static int write_shared_index(struct index_state *istate,
 	move_cache_to_base_index(istate);
 
 	trace2_region_enter_printf("index", "shared/do_write_index",
-				   the_repository, "%s", (*temp)->filename.buf);
+				   the_repository, "%s", get_tempfile_path(*temp));
 	ret = do_write_index(si->base, *temp, 1);
 	trace2_region_leave_printf("index", "shared/do_write_index",
-				   the_repository, "%s", (*temp)->filename.buf);
+				   the_repository, "%s", get_tempfile_path(*temp));
 
 	if (ret)
 		return ret;
-- 
2.30.0
Previous: Martin ÅgrenNext: Derrick Stolee
Message 6 of 13 in “avoid peeking into `struct lock_file`”
  1. 0/5 avoid peeking into `struct lock_file`Martin Ågren, Jan 5, 2021
  2. 4/5 refs/files-backend: don't peek into `struct lock_file`Martin Ågren, Jan 5, 2021
  3. 3/5 midx: don't peek into `struct lock_file`Martin Ågren, Jan 5, 2021
  4. 2/5 commit-graph: don't peek into `struct lock_file`Martin Ågren, Jan 5, 2021
  5. 1/5 builtin/gc: don't peek into `struct lock_file`Martin Ågren, Jan 5, 2021
  6. 5/5 read-cache: try not to peek into `struct {lock_,temp}file`Martin Ågren, Jan 5, 2021
  7. Derrick StoleeJan 6, 2021
  8. Junio C HamanoJan 6, 2021
  9. Junio C HamanoJan 6, 2021
  10. Derrick StoleeJan 7, 2021
  11. Martin ÅgrenJan 7, 2021
  12. Junio C HamanoJan 7, 2021
  13. Martin ÅgrenJan 7, 2021

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.