Merge pull request #3243 from cgwalters/loaded_ts_fix

sysroot: Handle `/ostree/deploy` having epoch 0
This commit is contained in:
Dan Nicholson 2024-05-15 10:11:40 -06:00 committed by GitHub
commit 92f2abcb85
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 7 additions and 2 deletions

View File

@ -85,6 +85,8 @@ struct OstreeSysroot
OstreeDeployment *booted_deployment; OstreeDeployment *booted_deployment;
OstreeDeployment *staged_deployment; OstreeDeployment *staged_deployment;
GVariant *staged_deployment_data; GVariant *staged_deployment_data;
// True if loaded_ts is initialized
gboolean has_loaded;
struct timespec loaded_ts; struct timespec loaded_ts;
/* Only access through ostree_sysroot_[_get]repo() */ /* Only access through ostree_sysroot_[_get]repo() */

View File

@ -1261,7 +1261,7 @@ ostree_sysroot_load_if_changed (OstreeSysroot *self, gboolean *out_changed,
if (!glnx_fstatat (self->sysroot_fd, "ostree/deploy", &stbuf, 0, error)) if (!glnx_fstatat (self->sysroot_fd, "ostree/deploy", &stbuf, 0, error))
return FALSE; return FALSE;
if (self->loaded_ts.tv_sec == stbuf.st_mtim.tv_sec if (self->has_loaded && self->loaded_ts.tv_sec == stbuf.st_mtim.tv_sec
&& self->loaded_ts.tv_nsec == stbuf.st_mtim.tv_nsec) && self->loaded_ts.tv_nsec == stbuf.st_mtim.tv_nsec)
{ {
if (out_changed) if (out_changed)
@ -1280,6 +1280,7 @@ ostree_sysroot_load_if_changed (OstreeSysroot *self, gboolean *out_changed,
return FALSE; return FALSE;
self->loaded_ts = stbuf.st_mtim; self->loaded_ts = stbuf.st_mtim;
self->has_loaded = TRUE;
if (out_changed) if (out_changed)
*out_changed = TRUE; *out_changed = TRUE;

View File

@ -60,7 +60,9 @@ orig_mtime=$(stat -c '%.Y' sysroot/ostree/deploy)
${CMD_PREFIX} ostree --repo=sysroot/ostree/repo pull-local --remote=testos testos-repo testos/buildmain/x86_64-runtime ${CMD_PREFIX} ostree --repo=sysroot/ostree/repo pull-local --remote=testos testos-repo testos/buildmain/x86_64-runtime
rev=$(${CMD_PREFIX} ostree --repo=sysroot/ostree/repo rev-parse testos/buildmain/x86_64-runtime) rev=$(${CMD_PREFIX} ostree --repo=sysroot/ostree/repo rev-parse testos/buildmain/x86_64-runtime)
export rev export rev
# This initial deployment gets kicked off with some kernel arguments # This initial deployment gets kicked off with some kernel arguments. We also set the initial
# timestamp of the deploy directory to the epoch as a regression test.
touch -d @0 sysroot/ostree/deploy
${CMD_PREFIX} ostree admin deploy --karg=root=LABEL=MOO --karg=quiet --os=testos testos:testos/buildmain/x86_64-runtime ${CMD_PREFIX} ostree admin deploy --karg=root=LABEL=MOO --karg=quiet --os=testos testos:testos/buildmain/x86_64-runtime
new_mtime=$(stat -c '%.Y' sysroot/ostree/deploy) new_mtime=$(stat -c '%.Y' sysroot/ostree/deploy)
assert_not_streq "${orig_mtime}" "${new_mtime}" assert_not_streq "${orig_mtime}" "${new_mtime}"