Colin Walters
444234e7db
core: Use gsystem API for generating temporary names
...
Drops duplicated code.
2013-07-16 08:51:53 -04:00
Colin Walters
acdf1ca4fe
core: Use gs_file_create()
...
This allows us to drop a chmod() invocation, since the regular file
path was the only thing that didn't handle mode.
2013-07-16 08:51:53 -04:00
Colin Walters
124416d832
Use AC_USE_SYSTEM_EXTENSIONS instead of #define _GNU_SOURCE
...
It's less copy/paste, works everywhere, etc.
Also fix some missing #include "config.h".
2013-07-10 13:25:35 -04:00
Colin Walters
89181c4e8e
Build without libsoup again
2013-07-09 20:35:15 -04:00
Colin Walters
2535f32c56
libostree: Move pull code into here
...
More library work.
2013-07-09 20:14:53 -04:00
Colin Walters
5dd0d5da40
libostree: Move prune into OstreeRepo namespace
...
More library work.
2013-07-09 20:05:31 -04:00
Colin Walters
2aa0251b1b
libostree: Rename ostree-traverse.h into OstreeRepo namespace
...
This operates on the repo, it might as well be methods on it.
2013-07-09 19:59:39 -04:00
Colin Walters
cb6b69616c
libostree: Split off -refs.c
...
Continuing to break up ostree-repo.c.
2013-07-09 19:49:00 -04:00
Colin Walters
3b6a94d272
libostree: Split off libarchive code
2013-07-09 19:11:37 -04:00
Colin Walters
dbffd31017
libostree: Start splitting up the monstrous ostree-repo.c
...
Checkout now lives in its own file.
2013-07-09 19:02:38 -04:00
Colin Walters
5ad0671cd2
Switch to #pragma once for headers
...
It's just less tedious, and we're GCC/LLVM specific anyways.
2013-07-09 18:53:22 -04:00
Colin Walters
56f8584fe4
repo: Store transaction file, use it to optimize for pull resumes
...
If pull is interrupted, we may have downloaded an arbitrary subset of
the requested objects. Previously, we handled this by scanning for
all objects each time.
However, there's an easy optimization - this patch creates a lock file
in the repo. If we don't see that file when starting a pull, we know
we don't need to stat() every file; presence of a dirtree object for
example implies the existence of everything it references.
2013-07-08 09:05:34 -04:00
Colin Walters
26cef497a6
Remove built in "triggers"
...
Originally, the idea was that clients would replicate "OS/tree"s from
a build server, but we'd run things like "ldconfig" on the client.
This was to allow adding e.g. the nVidia binary driver.
However, the triggers were the only thing in the system at the moment
that really had expected knowledge of the *contents* of the OS, like
the location of binaries.
For now, it's architecturally cleaner if we move the burden of
triggers to the tree builder (e.g. gnome-ostree or RPM). Eventually
we may want OSTree to assist with this type of thing (perhaps
something like RPM %ghost), but this is the right thing to do now.
2013-07-07 14:37:59 -04:00
Colin Walters
4b170d656c
Switch to libgsystem local allocation macros
...
And drop our compatibility wrapper.
2013-07-07 12:27:44 -04:00
Colin Walters
e8cba55a34
core: Allow '.' in refspecs too
...
For version numbers.
2013-07-05 16:51:47 -04:00
Colin Walters
dc0f3c3dcb
Add support for deleting refs
...
The internal API will be used by admin, and "ostree refs --delete"
is handy for interactive management.
2013-07-01 15:41:27 -04:00
Colin Walters
5b3fca8426
Add "refs" builtin
...
This is just useful to look at before pruning, etc.
2013-06-29 14:51:08 -04:00
Colin Walters
1ba852ebaa
core: Add "refspec" which is remote:refname
...
This allows an unambiguous reference; otherwise, it was too easy to
have confusion between local heads and remotes.
2013-06-29 12:51:29 -04:00
Colin Walters
7bb20b0533
core: Port more callsites to gs_file_enumerator_iterate()
...
See previous commit.
2013-06-14 19:45:40 -04:00
Colin Walters
fbd9f17e39
core: Update libgsystem, port some uses of GFileEnumerator
...
This makes the code *so* much nicer.
2013-06-14 19:14:35 -04:00
Colin Walters
f4327cc6a0
repo: Fix race condition in async checkout
...
When multiple threads need to uncompress an object, there was
a race condition where thread A could get EEXIST, unlink,
then thread B calls linkat(), then thread A tries to link() but
fails.
We can just loop in this case.
2013-04-30 19:34:20 -04:00
Colin Walters
5d1b0ec1b3
core: Fix object enumeration for archive-z2 repositories
...
This makes fsck work again, among other things.
2013-04-01 11:43:03 -04:00
Colin Walters
ae3945210c
config-diff: Properly print files relative to root
...
Just less ugly.
2013-03-12 08:48:05 -04:00
Colin Walters
a821420711
core: Add API to convert csum -> checksum without malloc()
...
Just doing some profiling, this was in the top malloc() callers.
2013-02-23 11:02:56 -05:00
Colin Walters
47bd290065
core: Drain fdatasync() API into libgsystem
...
Just code cleanup.
2013-01-04 17:25:32 -05:00
Colin Walters
90ccc7b2d2
core: Pick better names for tmpfiles if no prefix given
...
Just makes it easier to track down where files came from.
2012-12-21 11:30:58 -05:00
Colin Walters
ad956ff9e2
core: Allow creating tempfile without associated output stream
...
Just slightly more efficient, and we'll use this for spawning curl to
a tempfile.
2012-12-20 21:14:27 -05:00
Colin Walters
a97211e3d0
core: Clean up tmpfile creation code
...
I have been seeing random failures here...not entirely sure why yet,
but this code is cleaner.
2012-12-13 15:12:51 -05:00
Colin Walters
fc7f05940c
core: Use mmap() with O_NOATIME if merely reading archive-z2 entries
...
Previously we'd open(path, O_NOATIME) and do a series of small read()
calls to just parse the header. I think this will trigger kernel readahead
into the compressed portion, but we don't care about that.
This should be more efficient.
2012-12-02 15:20:17 -05:00
Colin Walters
1ac307e6b8
Switch to libgsystem file reading API
...
More draining common utilities into libgsystem.
2012-11-29 16:58:39 -05:00
Colin Walters
f3d765c903
Switch to libgsystem directory creation API
...
More code being dropped into a common place.
2012-11-29 16:40:17 -05:00
Colin Walters
5761733218
Drop some bits from libotutil that are now merged in libgsystem
2012-11-29 16:24:49 -05:00
Colin Walters
de1ce843f1
core: Drop old GLIB_CHECK_VERSION(2.32) bits
...
We hard require 2.34 now; if it doesn't exist on the system, that's
what embedded dependencies are for.
2012-11-18 15:44:21 -05:00
Colin Walters
51b1dd7cbd
traverse: Skip already traversed commits
...
This is just more efficient, since e.g. "ostree prune" may invoke
ostree_traverse_commit() multiple times for the same commit.
2012-11-16 12:35:52 -05:00
Colin Walters
5a51bee024
core: quiet a compiler warning
2012-10-17 20:54:52 -04:00
Colin Walters
0c3e901dae
core: Check out files before directories
...
Otherwise we pretty easily hit maximum FD limits =(
2012-10-15 20:03:13 -04:00
Colin Walters
bdbf76b6eb
core: Ensure correct file data is synced in non-overwrite case
2012-10-15 18:44:55 -04:00
Colin Walters
1642310486
core: Use linkat() rather than link() in threaded checkouts
...
This seems to work around a likely Linux kernel VFS bug, where I
randomly see ENOENT on link() when we *definitely* called mkdir() at
an earlier point in time.
2012-10-15 10:49:48 -04:00
Colin Walters
c0a6b5da71
core: Fix devino speedup for archive-z
2012-10-14 17:19:30 -04:00
Colin Walters
0d04738801
core: Rework archive-z mode to have header be uncompressed
...
This is an incompatible change to archive-z, thus it is now renamed to
archive-z2 and ostree will no longer parse archive-z.
I noticed in perf that we were spending some time zlib-decompressing
file headers, which is just inefficient. Rather than do this, keep
the headers uncompressed, and just zlib-compress content.
2012-10-14 17:10:57 -04:00
Colin Walters
2b90e987bf
core: Call fdatasync() before we rename()
...
Just noticed this from strace, doesn't really matter, but looks nicer.
2012-10-14 15:34:33 -04:00
Colin Walters
5b512d4c78
core: Fix case where we hardlinked successfully but thought we didn't
...
We need to return hardlink_supported even if we had to do an unlink
first.
2012-10-13 18:41:47 -04:00
Colin Walters
ad26c7a80b
core: A few more error-prefixings
2012-10-13 18:02:39 -04:00
Colin Walters
a284075731
core: Prefix some error messages
...
To help debug why I still have this race condition...
2012-10-13 17:46:24 -04:00
Colin Walters
238da603b8
core: Ensure file data is synced to disk when checking out via non-hardlinks
...
Otherwise we aren't crash-safe.
2012-10-12 13:09:10 -04:00
Colin Walters
e9dd22dc86
repo: Avoid race condition in threaded checkout with symbolic links
...
We were inconsistently putting symbolic links into the uncompressed
object cache, which could cause the threaded checkout to get confused.
2012-10-12 11:24:06 -04:00
Colin Walters
ee73c0fa34
core: Add dynamic uncompressed object cache for archive-z
...
This gives us something closer to the advantages of archive and
archive-z when using the latter. Concretely we get deduplication
among multiple checkouts, along with the "devino" hash table trick
during commits to avoid checksumming content again.
This is enabled by default.
2012-10-11 18:33:03 -04:00
Colin Walters
52a0b7bdb1
core: Only do devino scan on commit (speeds up pull)
...
When fetching data remotely, there's no point to the devino scan
because we're not going to be committing local files.
Only do it for "commit".
2012-10-05 17:12:39 -04:00
Colin Walters
9618232f4d
pull: Stage content asynchronously
...
For similar reasons as metadata, this avoids having the main thread
blocked in fdatasync(), and even better - we can achieve much higher
parallelism if we have multiple threads blocked on fdatasync().
2012-10-04 20:00:00 -04:00
Colin Walters
5b8e833351
pull: Stage metadata objects asynchronously
...
This avoids the main thread being blocked on fdatasync(); also as a
bonus we checksum metadata in a separate thread too.
2012-10-04 18:24:37 -04:00