Go to file
Colin Walters 60aa9a4a33 daemon: Automatically reload sysroot before txn
In this PR: https://github.com/projectatomic/rpm-ostree/pull/1309
I was hitting race conditions running `ostree admin pin` then
`rpm-ostree cleanup` as it was possible that the daemon hadn't handled
the inotify on the sysroot and reloaded the deployment state before
the txn request came in.

Close this race by doing an implicit `reload` before starting a txn.
This is a pretty efficient operation because for the sysroot we're
just doing a `stat()` and comparing mtime.

Implementation wise, change the external API to drop the "did change"
boolean as nothing outside of the `sysroot.c` file used it.

A followup to this would be changing the `status` CLI to call a
(new) DBus API like `RequestReload` that at least did the sysroot
reload if the daemon was otherwise idle or so?  And it'd be available
to unprivileged users.

Closes: #1311
Approved by: cgwalters
2018-03-23 21:50:33 +00:00
.github Fix GitHub issue template formatting 2018-03-14 21:54:16 +00:00
api-doc lib: Expose new API around basearch 2017-07-21 16:02:41 +00:00
buildutil tap-test: create tmpdir in /var/tmp 2017-06-29 16:16:54 +00:00
ci tests: Dip our toes into using Ansible 2018-03-09 19:04:32 +00:00
design Initial renaming pass of "jigdo" to "rojig" 2018-02-26 15:32:50 +00:00
docs Initial renaming pass of "jigdo" to "rojig" 2018-02-26 15:32:50 +00:00
experiments-and-demos/skopeo2ostree experiments-and-demos: New subdir with skopeo2ostree Dockerfile 2018-01-11 14:07:17 +00:00
libdnf@b3fcc53f6f core: Use libdnf API to disable filelists in "pure rojig" mode 2018-03-05 22:42:26 +00:00
libglnx@6f1ee5db14 app/status: factor out escape chars logic 2018-01-11 15:37:57 +00:00
man app/db-diff: assume booted deployment if less args 2018-03-08 17:30:42 +00:00
packaging Add polkit support 2017-06-19 21:19:42 +00:00
scripts bwrap: Don't use --unshare-net in nspawn by default 2017-03-10 17:27:56 +00:00
src daemon: Automatically reload sysroot before txn 2018-03-23 21:50:33 +00:00
tests daemon: Automatically reload sysroot before txn 2018-03-23 21:50:33 +00:00
vagrant Vagrantfile: specify full path to using_sshfs 2016-12-21 20:00:43 +00:00
.dir-locals.el .dir-locals.el: Global Emacs style settings 2017-01-12 16:09:16 +00:00
.editorconfig tree: add vimrc and editorconfig 2017-10-02 14:36:44 +00:00
.gitmodules Switch libdnf to projectatomic branch 2018-01-16 14:14:32 +00:00
.papr.yml tests: Dip our toes into using Ansible 2018-03-09 19:04:32 +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
configure.ac configure.ac: Also build in debug mode for -Og 2018-03-01 23:29:17 +00:00
CONTRIBUTING.md docs: fix ostree and CONTRIBUTING.md links 2016-07-12 15:46:53 +00:00
COPYING COPYING: Update to latest LGPLv2+ 2014-03-10 16:40:16 -04:00
git.mk build: Use git.mk, make git status clean 2016-03-10 14:36:44 -05:00
HACKING.md hacking: make it easier to use a custom tree 2017-09-01 19:58:55 +00:00
LICENSE Add a LICENSE symlink 2016-04-28 13:09:22 +00:00
Makefile-daemon.am Initial support for automatic updates 2018-01-27 23:52:43 +00:00
Makefile-decls.am daemon/config: add new rpm-ostreed.conf 2018-01-16 16:51:01 +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 lib: Expose new API around basearch 2017-07-21 16:02:41 +00:00
Makefile-libdnf.am build: Always recurse build into libdnf/ 2017-04-13 16:10:14 +00:00
Makefile-libpriv.am rojig-rename: (almost) Everything else 2018-03-01 22:35:46 +00:00
Makefile-man.am man: Add rpm-ostreed-automatic page 2018-03-07 22:54:33 +00:00
Makefile-rpm-ostree.am rojig-rename: (almost) Everything else 2018-03-01 22:35:46 +00:00
Makefile-tests.am tests: Dip our toes into using Ansible 2018-03-09 19:04:32 +00:00
Makefile.am daemon/config: add new rpm-ostreed.conf 2018-01-16 16:51:01 +00:00
mkdocs.yml docs: Start using mkdocs 2016-03-09 11:10:58 -05:00
README.md README.md: Update "projects using rpm-ostree" section 2018-02-20 15:42:35 +00:00
Vagrantfile Vagrantfile: specify full path to using_sshfs 2016-12-21 20:00:43 +00:00

rpm-ostree: A true hybrid image/package system

rpm-ostree combines libostree (an image system), with libdnf (a package system), 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)    |
|                                           |        |                                         |
+-------------------------------------------+        +-----------------------------------------+

For more information, see the online manual: Read The Docs (rpm-ostree)

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

Projects using rpm-ostree

Project Atomic is an umbrella project for delivering upstream container technologies and combined with a minimized, atomically upgradable host system to Fedora, Red Hat Enterprise Linux, and CentOS.

rpm-ostree is the underlying technology for host updates. The headlining project is "Atomic Host", which is a server variant oriented towards running Linux containers using e.g. Kubernetes. However, there is now also a Workstation variant, showing the full generality of the rpm-ostree model.

Manual

For more information, see the online manual: Read The Docs (rpm-ostree)

Talks and media

A number of Project Atomic talks are available; see for example this post which has a bigger collection that also includes talks on containers.

rpm-ostree specific talks: