Go to file
Colin Walters 12cc4e5f5b composepost: Fix race condition in timestamp checking
`syncfs()` isn't going to do anything on e.g. `tmpfs` and even
if it did wouldn't fix any race conditions because that's about
synchronizing in memory changes to disk, but won't change
what system calls return.

Some investigation turned up
https://stackoverflow.com/questions/14392975/timestamp-accuracy-on-ext4-sub-millsecond
and `current_fs_time` is now:
https://www.kernel.org/doc/html/v5.12/core-api/timekeeping.html

Basically there's a "coarse" time that might only update once every 10ms
for example.

Let's just sleep 100ms for now.

I think we should be using the inode versions, but we can investigate
that separately.
2021-04-30 15:15:10 -04:00
.github ci: Add a Github Action for Rust lints 2021-03-17 16:42:28 -04:00
api-doc rust/treefile: Support dash convention for all options 2019-03-02 19:20:21 +00:00
buildutil buildutils: Add libglnx.m4 to .gitignore 2018-04-05 15:26:46 +00:00
ci ci/prow: Update to use new buildroot image 2021-04-07 16:08:31 +00:00
completion Add support for bash completion 2019-03-01 21:36:39 +00:00
design design/package-layering.md: Remove 2021-03-04 16:21:51 -05:00
docs treefile: Add new repo-packages field for pinning packages to repos 2021-04-30 09:13:18 -04:00
experiments-and-demos/skopeo2ostree experiments-and-demos: New subdir with skopeo2ostree Dockerfile 2018-01-11 14:07:17 +00:00
libdnf@fefe0b69e8 build(deps): bump libdnf from be66d09 to fefe0b6 2021-04-26 06:04:06 +00:00
libglnx@4c9055ac08 extensions: Don't try to chown RPM packages 2021-02-10 10:20:38 -05:00
man install: Add --apply-live 2021-03-08 20:54:18 +01:00
packaging Release 2021.4 2021-04-12 15:36:20 -04:00
rust composepost: Fix race condition in timestamp checking 2021-04-30 15:15:10 -04:00
src treefile: Add new repo-packages field for pinning packages to repos 2021-04-30 09:13:18 -04:00
tests treefile: Add new repo-packages field for pinning packages to repos 2021-04-30 09:13:18 -04:00
.cci.jenkinsfile ci: Update to use new buildroot pod 2021-03-26 10:16:05 -04:00
.dir-locals.el .dir-locals.el: Global Emacs style settings 2017-01-12 16:09:16 +00:00
.dockerignore ci/prow: Install in target cosa, also install and run our tests 2021-03-10 16:58:49 +01:00
.editorconfig .editorconfig: Adjust for CXX files 2021-01-23 17:12:09 +01:00
.gitignore .gitignore: add compose-{cache,logs} dirs 2021-04-16 16:00:58 -04:00
.gitmodules Rebase to latest libdnf 2019-03-19 14:29:15 +00:00
.vimrc tree: add vimrc and editorconfig 2017-10-02 14:36:44 +00:00
autogen.sh build-sys: Fix use of libglnx configure bits 2017-12-15 16:32:39 +00:00
build.rs rust: Add SPDX-License-Identifier and validate it in ci/codestyle.sh 2021-02-19 15:56:23 -05:00
cargo-vendor-config Move the main Rust infra (i.e. Cargo.toml) to the toplevel 2020-12-09 17:42:35 -05:00
Cargo.lock Add and use the camino library for UTF-8 paths 2021-04-30 09:56:05 -04:00
Cargo.toml Add and use the camino library for UTF-8 paths 2021-04-30 09:56:05 -04:00
configure.ac Require ostree v2021.2, use ostree-ext crate 2021-04-27 09:50:02 -04:00
CONTRIBUTING.md docs: fix ostree and CONTRIBUTING.md links 2016-07-12 15:46:53 +00:00
COPYING.GPL Clarify license situation to include GPLv2, relicense Rust code 2019-09-05 20:49:18 +00:00
COPYING.LGPL Clarify license situation to include GPLv2, relicense Rust code 2019-09-05 20:49:18 +00:00
HACKING.md docs: Import Hacking page 2020-10-01 12:01:25 -04:00
LICENSE Clarify license situation to include GPLv2, relicense Rust code 2019-09-05 20:49:18 +00:00
Makefile-bash.am build: Hook up bash completions 2019-03-07 00:47:39 +00:00
Makefile-daemon.am Remove rpm-ostree sysusers config 2021-03-16 19:07:20 -04:00
Makefile-decls.am build-sys: Drop git.mk, hardcode .gitignore 2021-04-15 11:29:25 -04:00
Makefile-extra.inc ci: Verify rustfmt 2018-11-21 21:16:03 +00:00
Makefile-lib-defines.am lib: Add version macros and version checking function 2017-07-21 20:35:26 +00:00
Makefile-lib.am build: Drop introspection+clang hack 2021-02-10 14:30:37 -05:00
Makefile-libpriv.am Rewrite bwrap code in Rust 2021-03-29 14:45:35 +00:00
Makefile-man.am countme: Add DNF Count Me support 2021-01-13 14:53:50 -05:00
Makefile-rpm-ostree.am build-sys: Drop git.mk, hardcode .gitignore 2021-04-15 11:29:25 -04:00
Makefile-tests.am build-sys: Drop git.mk, hardcode .gitignore 2021-04-15 11:29:25 -04:00
Makefile.am build-sys: Drop git.mk, hardcode .gitignore 2021-04-15 11:29:25 -04:00
Makefile.bindings build-sys: Avoid re-building + re-linking cxx-rs C++ bits each build 2021-04-16 10:54:04 -04:00
OWNERS OWNERS: extend/reorder approvers section 2020-10-30 19:42:31 +01:00
README.md README.md: Keep it short and sweet 2020-10-01 14:29:37 -04:00
RELEASE.md docs: Import Release page 2020-10-01 12:01:25 -04:00

rpm-ostree: A true hybrid image/package system

rpm-ostree is a hybrid image/package system. It combines libostree as a base image format, and accepts RPM on both the client and server side, sharing code with the dnf project; specifically libdnf. and thus bringing many of the benefits of both together.

                         +-----------------------------------------+
                         |                                         |
                         |       rpm-ostree (daemon + CLI)         |
                  +------>                                         <---------+
                  |      |     status, upgrade, rollback,          |         |
                  |      |     pkg layering, initramfs --enable    |         |
                  |      |                                         |         |
                  |      +-----------------------------------------+         |
                  |                                                          |
                  |                                                          |
                  |                                                          |
+-----------------|-------------------------+        +-----------------------|-----------------+
|                                           |        |                                         |
|         libostree (image system)          |        |            libdnf (pkg system)          |
|                                           |        |                                         |
|   C API, hardlink fs trees, system repo,  |        |    ties together libsolv (SAT solver)   |
|   commits, atomic bootloader swap         |        |    with librepo (RPM repo downloads)    |
|                                           |        |                                         |
+-------------------------------------------+        +-----------------------------------------+

Features:

  • Transactional, background image-based (versioned/checksummed) upgrades
  • OS rollback without affecting user data (/usr but not /etc, /var) via libostree
  • Client-side package layering (and overrides)
  • Easily make your own: rpm-ostree compose tree and CoreOS Assembler

Documentation

For more information, see the project documentation or the project documentation website.

License

rpm-ostree includes code licensed under GPLv2+, LGPLv2+, (Apache 2.0 OR MIT). For more information, see LICENSE.