bulk-checkin: remove global transaction state
Object database transactions in the bulk-checkin subsystem rely on global state to track transaction status. Stop relying on global state and instead store the transaction in the `struct object_database`. Functions that operate on transactions are updated to now wire transaction state. Signed-off-by: Justin Tobler <jltobler@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
98518304c5
commit
b336144725
@@ -674,7 +674,7 @@ static void close_loose_object(struct odb_source *source,
|
||||
goto out;
|
||||
|
||||
if (batch_fsync_enabled(FSYNC_COMPONENT_LOOSE_OBJECT))
|
||||
fsync_loose_object_bulk_checkin(fd, filename);
|
||||
fsync_loose_object_bulk_checkin(source->odb->transaction, fd, filename);
|
||||
else if (fsync_object_files > 0)
|
||||
fsync_or_die(fd, filename);
|
||||
else
|
||||
@@ -852,7 +852,7 @@ static int write_loose_object(struct odb_source *source,
|
||||
static struct strbuf filename = STRBUF_INIT;
|
||||
|
||||
if (batch_fsync_enabled(FSYNC_COMPONENT_LOOSE_OBJECT))
|
||||
prepare_loose_object_bulk_checkin();
|
||||
prepare_loose_object_bulk_checkin(source->odb->transaction);
|
||||
|
||||
odb_loose_path(source, &filename, oid);
|
||||
|
||||
@@ -941,7 +941,7 @@ int stream_loose_object(struct odb_source *source,
|
||||
int hdrlen;
|
||||
|
||||
if (batch_fsync_enabled(FSYNC_COMPONENT_LOOSE_OBJECT))
|
||||
prepare_loose_object_bulk_checkin();
|
||||
prepare_loose_object_bulk_checkin(source->odb->transaction);
|
||||
|
||||
/* Since oid is not determined, save tmp file to odb path. */
|
||||
strbuf_addf(&filename, "%s/", source->path);
|
||||
@@ -1263,8 +1263,9 @@ int index_fd(struct index_state *istate, struct object_id *oid,
|
||||
ret = index_core(istate, oid, fd, xsize_t(st->st_size),
|
||||
type, path, flags);
|
||||
else
|
||||
ret = index_blob_bulk_checkin(oid, fd, xsize_t(st->st_size), path,
|
||||
flags);
|
||||
ret = index_blob_bulk_checkin(the_repository->objects->transaction,
|
||||
oid, fd, xsize_t(st->st_size),
|
||||
path, flags);
|
||||
close(fd);
|
||||
return ret;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user