parent
7624be4f18
commit
811be3324b
@ -1 +1 @@
|
|||||||
SOURCES/libostree-2023.1.tar.xz
|
SOURCES/libostree-2023.5.tar.xz
|
||||||
|
@ -1 +1 @@
|
|||||||
2ee58148c225e78587affa8eaf58e431fdfeb468 SOURCES/libostree-2023.1.tar.xz
|
6164b5a75cdb304c7049c9da05eba48a0c17b4be SOURCES/libostree-2023.5.tar.xz
|
||||||
|
@ -1,57 +0,0 @@
|
|||||||
From 333c01659781cb5d956476f5b4cd3366a6f2d81d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Colin Walters <walters@verbum.org>
|
|
||||||
Date: Thu, 20 Jul 2023 09:13:43 -0400
|
|
||||||
Subject: [PATCH] Add an always-on `inode64` feature
|
|
||||||
|
|
||||||
As I (and others) will be backporting the fix in
|
|
||||||
https://github.com/ostreedev/ostree/pull/2874/commits/de6fddc6adee09a93901243dc7074090828a1912
|
|
||||||
pretty far, I want a way for sysadmins and OS builders to
|
|
||||||
be able to reliably see when their version of ostree has this fix
|
|
||||||
(Because comparing version numbers isn't portable).
|
|
||||||
---
|
|
||||||
configure.ac | 5 ++++-
|
|
||||||
tests/basic-test.sh | 7 ++++++-
|
|
||||||
tests/inst/src/repobin.rs | 5 ++++-
|
|
||||||
3 files changed, 14 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
|
||||||
index 0e45aa87..9de69551 100644
|
|
||||||
--- a/configure.ac
|
|
||||||
+++ b/configure.ac
|
|
||||||
@@ -82,7 +82,10 @@ AM_COND_IF([BUILDOPT_TSAN],
|
|
||||||
LT_PREREQ([2.2.4])
|
|
||||||
LT_INIT([disable-static])
|
|
||||||
|
|
||||||
-OSTREE_FEATURES=""
|
|
||||||
+dnl We have an always-on feature now to signify the fix for
|
|
||||||
+dnl https://github.com/ostreedev/ostree/pull/2874/commits/de6fddc6adee09a93901243dc7074090828a1912
|
|
||||||
+dnl "commit: fix ostree deployment on 64-bit inode fs"
|
|
||||||
+OSTREE_FEATURES="inode64"
|
|
||||||
AC_SUBST([OSTREE_FEATURES])
|
|
||||||
|
|
||||||
GLIB_TESTS
|
|
||||||
diff --git a/tests/basic-test.sh b/tests/basic-test.sh
|
|
||||||
index e2a7d70c..0a50ae2f 100644
|
|
||||||
--- a/tests/basic-test.sh
|
|
||||||
+++ b/tests/basic-test.sh
|
|
||||||
@@ -19,7 +19,7 @@
|
|
||||||
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
-echo "1..$((90 + ${extra_basic_tests:-0}))"
|
|
||||||
+echo "1..$((91 + ${extra_basic_tests:-0}))"
|
|
||||||
|
|
||||||
CHECKOUT_U_ARG=""
|
|
||||||
CHECKOUT_H_ARGS="-H"
|
|
||||||
@@ -41,6 +41,11 @@ fi
|
|
||||||
# This should be dynamic now
|
|
||||||
assert_not_has_dir repo/uncompressed-objects-cache
|
|
||||||
|
|
||||||
+if ! $OSTREE --version | grep -q -e '- inode64'; then
|
|
||||||
+ fatal missing inode64 feature
|
|
||||||
+fi
|
|
||||||
+echo "ok inode64 feature"
|
|
||||||
+
|
|
||||||
validate_checkout_basic() {
|
|
||||||
(cd $1;
|
|
||||||
assert_has_file firstfile
|
|
@ -1,55 +0,0 @@
|
|||||||
From 5df15fffc36593a57131921997569e4b8de4015f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Abylay Ospan <aospan@amazon.com>
|
|
||||||
Date: Tue, 6 Jun 2023 02:13:14 +0000
|
|
||||||
Subject: [PATCH] commit: fix ostree deployment on 64-bit inode fs
|
|
||||||
|
|
||||||
This commit addresses a bug that was causing ostree deployment
|
|
||||||
to become corrupted on the large fs, when any package was installed using
|
|
||||||
'rpm-ostree install'.
|
|
||||||
|
|
||||||
In such instances, multiple files were assigned the same inode. For
|
|
||||||
example, the '/home' directory and a regular file 'pkg-get' were
|
|
||||||
assigned the same inode (2147484070), making the deployment unusable.
|
|
||||||
|
|
||||||
A root cause analysis was performed, running the process under gdb,
|
|
||||||
which revealed a lossy conversion from guint64 to guint32, for example
|
|
||||||
6442451366 converted to 2147484070:
|
|
||||||
|
|
||||||
(gdb) p name
|
|
||||||
$10 = 0x7fe9224d2d70 "home"
|
|
||||||
|
|
||||||
(gdb) p inode
|
|
||||||
$73 = 6442451366
|
|
||||||
|
|
||||||
(gdb) s
|
|
||||||
device=66311, modifier=0x7fe914791840) at
|
|
||||||
src/libostree/ostree-repo-commit.c:1590
|
|
||||||
|
|
||||||
The conversion resulted in entirely independent files potentially
|
|
||||||
receiving the same inode.
|
|
||||||
|
|
||||||
The issue was discovered on PoC machine equipped with a large NVME
|
|
||||||
(3.4TB), but the bug can be easily reproduced using `cosa run -m 4000
|
|
||||||
--qemu-size +3TB', followed by installation of any package using
|
|
||||||
`rpm-ostree install`. The resulting deployment will be unusable due to
|
|
||||||
many files being "corrupted" by the aforementioned issue.
|
|
||||||
---
|
|
||||||
src/libostree/ostree-repo-commit.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/src/libostree/ostree-repo-commit.c b/src/libostree/ostree-repo-commit.c
|
|
||||||
index 7f668b7d..81efdeea 100644
|
|
||||||
--- a/src/libostree/ostree-repo-commit.c
|
|
||||||
+++ b/src/libostree/ostree-repo-commit.c
|
|
||||||
@@ -1581,7 +1581,7 @@ static const char *
|
|
||||||
devino_cache_lookup (OstreeRepo *self,
|
|
||||||
OstreeRepoCommitModifier *modifier,
|
|
||||||
guint32 device,
|
|
||||||
- guint32 inode)
|
|
||||||
+ guint64 inode)
|
|
||||||
{
|
|
||||||
OstreeDevIno dev_ino_key;
|
|
||||||
OstreeDevIno *dev_ino_val;
|
|
||||||
--
|
|
||||||
2.40.1
|
|
||||||
|
|
Loading…
Reference in new issue