Skip to content

Commit

Permalink
[PATCH v2 0/1] fallocate missing fd_offset
Browse files Browse the repository at this point in the history
https://lore.kernel.org/qemu-devel/20250121225426.3043160-1-william.roche@oracle.com

---

From: =?UTF-8?q?=E2=80=9CWilliam=20Roche?= <william.roche@oracle.com>
To: david@redhat.com, peterx@redhat.com, qemu-devel@nongnu.org,
 pbonzini@redhat.com, philmd@linaro.org
Cc: william.roche@oracle.com
Subject: [PATCH v2 0/1] fallocate missing fd_offset
Date: Tue, 21 Jan 2025 22:54:25 +0000
Message-ID: <20250121225426.3043160-1-william.roche@oracle.com>
X-Mailer: git-send-email 2.43.5
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: MN2PR05CA0050.namprd05.prod.outlook.com
 (2603:10b6:208:236::19) To CH3PR10MB7329.namprd10.prod.outlook.com
 (2603:10b6:610:12c::16)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH3PR10MB7329:EE_|SA3PR10MB7072:EE_
X-MS-Office365-Filtering-Correlation-Id: fd8fa502-dcab-46dc-31ea-08dd3a6e8f0f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014;
X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?wi/fkOTJNQCAxgj7mQGfgcW+WrD/q2vhk4baUv1+ejCldaogKqjQd0Txbuk8?=
 =?us-ascii?Q?Fre4CXuJ90Q6dFtoJ22HYLfKfXcBPq93c26Vo/zgnhjIu9t+WpDZCeA5Pasp?=
 =?us-ascii?Q?juxWvcEKBeYypRLvcW04D+gGBSmn1cVdmc+Ppd61RStaYjCgikQcHCw46tMk?=
 =?us-ascii?Q?rvIjEFOtTyMC70rBrLKROWGCyK5mp1vqjvDCklAqxqcQOkCE7tGIAQRKHqSE?=
 =?us-ascii?Q?yJm1Jp8t3oBip0LExCCnz1PwPv+r+8RAhH9AfTedDTEY08mEWyWIXQE34gTz?=
 =?us-ascii?Q?4H3QJJTX++mt4SRsZPkpJ2HX7UKpTRdCp+zqEy6Big1OSxl+Q8Zk9/H1VsWn?=
 =?us-ascii?Q?x68Ue/In1xaYut2KNdv61Jn7haKZewqpKUpFz9ar1NGpZqLxYZRgs2mE941D?=
 =?us-ascii?Q?60xjgFOgfk6a8VaJZ3bEeS3GP8c7JAOW6MoMkFqMZerQc6QDpcqfb0PsV4r1?=
 =?us-ascii?Q?DZTgb6OKyIAzx2VN8eYks0Cw9TcFpIrLMmIWmE9IeNkHIaF5Q3k7pAxnHyNu?=
 =?us-ascii?Q?tSpW0hKDFFZKZi0iTwxjENw3x1NNPV9UUPBF8UQaPro1LzPu/pHSrMl1XdZU?=
 =?us-ascii?Q?uSLDpdB8sVQ/AFTtrclCFNhxadw3EyfXR4/tHSLAuaeonCwPLCSDPcNvgq3x?=
 =?us-ascii?Q?TxI7a+Iu+E0wc9OaCZQhHwwoBbMrrXfLE+7X9WirTUbrGq7ILJpt41NicLdi?=
 =?us-ascii?Q?kTiXorKQ4PHJiPep68KrxZxyL8Pu1F/gqRO3PRbhDaSucyNr2tgXLP6CK/lT?=
 =?us-ascii?Q?+b4+VEA4sfD9ROQ9dLb0704133GDUSNroVV5fPOoMck67QgM3hIKKT38Juu6?=
 =?us-ascii?Q?YpnCbu84Jnc3sOUZZozidsCEmQARby1s3LjapDUoI8uEZcDRApsKy2RUJA8T?=
 =?us-ascii?Q?pSJz+8VdR9Efkn03EII5dVfXF1tmEYrnkhVVN89MZ113iW27GXaBvqqaVwmx?=
 =?us-ascii?Q?sL32qTP38DcTX1kEYYVeqCDptkhEmbDHAE+ghqIQ9yKKmVNNnVgaCodsHx5i?=
 =?us-ascii?Q?32wtx7XGb++hC304EWT6Piv8trM0eFI7sFX/ylB51DJsolwhcC60db+en106?=
 =?us-ascii?Q?qUfZVDJExsNO0fkcHD+MCmTB1YLvMvVm2qmptgDy52RI2d+4DbOZD7aHB0Fo?=
 =?us-ascii?Q?EHjbNsMv+G/DKm8IcdAAb66LOWxjXdAu4BFRhFlQV9IW7BEalaZDz9ZVaIZD?=
 =?us-ascii?Q?figv4zNbgQur0Pk2J/dJH6lxRhOM5g2cFbwi2LIeT5YHC9saDAM6Pn/R/4lP?=
 =?us-ascii?Q?EfpXvDiAU4jKQqip1GbJgNxjL+aJjC72xzrTmlBy93BJJnIBrLz8yFXg9MwW?=
 =?us-ascii?Q?KR1gg34xJUH4O9DEL5hu54zzuBXH7yNaGVMAZFmD6d8y8yIoIaDVqeRUEyqD?=
 =?us-ascii?Q?ehBEtQWQKHEpOtI55heJmzi25X1R?=
X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;
 IPV:NLI; SFV:NSPM; H:CH3PR10MB7329.namprd10.prod.outlook.com; PTR:; CAT:NONE;
 SFS:(13230040)(366016)(1800799024)(376014); DIR:OUT; SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?YudkySPo/SHkQpRj+/maIAS2FJ07RDm15b+qHq5aoPnLDJ6lQgvfKCL6k2WB?=
 =?us-ascii?Q?Ae3SDeh1rCJwiEguTtoCLsz4Fezfr6iEtXRbn9ngXvcVk75KEk1cP65ozRd0?=
 =?us-ascii?Q?SllzzKwAL8JJo8bnPYgTqelMwjOXSPsAk31xwCdAeMoGFHEwSx7Si7OpfAsT?=
 =?us-ascii?Q?nts1Tb7QYw34Sxdm0Lx/ICLemKfgTbmyHCupo4K3mMBJUvMPKHlnjs4QIqAU?=
 =?us-ascii?Q?Rir//xmqylH+tkAm8En634CPv6dMfrdpOTZxezq0Y3nvIUN/nn8Toc4VQBhY?=
 =?us-ascii?Q?Ey2e/lSF+9zAH8N5xHqyjEW7AanNO7/ZL+LAMAXptzN0yVdYRCw7n0cOcnEF?=
 =?us-ascii?Q?+30BuOGVd0G/78BrMaL7j7lIgfZ8VhYyCSuAiEUGad7m7xaaZz/z5uYglHE1?=
 =?us-ascii?Q?7NFpdJrE5ZcOEtRSRVds5bZhebs8AGuXdKxIIa1GqP3AV50dpE/d3H4UGzZL?=
 =?us-ascii?Q?VzwdhxPBcwkqxPReaTuG+DO6DV04Ee08yiOR/6TagbQYjvJbxAy7pUkshHF1?=
 =?us-ascii?Q?9v2O5iyN4DWwiIK88Dp0IQisKZ5VOqyJwqzBcM41gBquoMTSgMcZ/6RtFWfZ?=
 =?us-ascii?Q?3CfGPCm4FBrELUATe+Jg9xz8qbcrK59r4iEHsYfRb5IkoTyC7jp4jJAIAVvP?=
 =?us-ascii?Q?AEbAOOJ3Ayn8XSV7CrY9CIQLReuA5myRsDXSPQBhD9mQXcAbPdA4b/yY8e5x?=
 =?us-ascii?Q?YtASOzTuhOSOM1j2bpUmLHsO1YpMrsQ5sdLy1pi4dV2V80bmzVGqR6NSTKQo?=
 =?us-ascii?Q?G+k/i0ZJhQu8fkwB8PTW4aS+C1LmqYVQXzrZZEn8JtD2klkVkoqyrAoZH5s6?=
 =?us-ascii?Q?lCzeG0sCoYhU5DHCZQvelaC3CAHWEYlEjKKca/LGPqCFeWN5OeDCSx35/7e/?=
 =?us-ascii?Q?+yZZdy292q69iMr6KGkX2FUMdlqlDsKT3Mb4ASdv12n0uF0MXwoSHRyU1cyT?=
 =?us-ascii?Q?B5VMHy0WAPtsxXqHpuFJ0LUjfHDg3mdEhlL2N5JDiUKGgOASq2Q1LpbFNzxC?=
 =?us-ascii?Q?qSmO+aUx4jjW/4Abcdc9D6aW7XxmV6V6qY1faP2DgTjIQr8TfBiOzGR9FAb/?=
 =?us-ascii?Q?1rJZ8yoNHPWEiAaOf+K7A9hrm8YKoM1SXuPFfPoqJR4pvuRlQ/YHtO1RyVhJ?=
 =?us-ascii?Q?36cXT4MtqCfBjBFL9R2dj1CsGn083K8lKu5qaD1FafsKr9vyjW3xH7Bit4qk?=
 =?us-ascii?Q?OhScrg+IxdilMrDQ9GwdDJgmK0Vxl9w8yGtgNc7TeLRqVBW5riJK1Tqq06gS?=
 =?us-ascii?Q?T/KdISS3k1NAALHXjaT2X2ypuwadKYCxVEf+xXbXJPxvXF2IYJA2m7DTsKzj?=
 =?us-ascii?Q?Wf/fRJjFelsR2+/pdqEJbKj/2Sn0taLcFmPCpExlH+tNaU95uNgMMLY8eElX?=
 =?us-ascii?Q?thueAMM5+Y4Bgx2UXE+x2w41FGgesfokLQPE6RA8oOYF/B5gqU7xafS6tCQ3?=
 =?us-ascii?Q?z/0U/0Qt5wIa1wwz87MgGJipPFYHCe6Y2/3tDc2HdfDM7b5+fCV0DDZwd0x4?=
 =?us-ascii?Q?IlfDoDspkOVOWg+hDboMaQsilI0HEswGHAQJIWvRbW33cQdNEkE2F4ZBGjRP?=
 =?us-ascii?Q?xCC+FSR6rkHmDxXNDy/upcbaSOnUFVDsIVfsFy0VWNt+n83IiKjW0ObsAX4g?=
 =?us-ascii?Q?FQ=3D=3D?=
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: O+gNM7TzUojOMru+cmQKmF+CZ6p3pA/lEcx4NZshWdK7msYPBRbsqrZ/MPIsx9tUK9ECXgXRhP6ETLuGE1Gp9JA45wZd4s2H/ZxgPmOTZThu9rgDl7w4YDOgD9f229WzcqpaL/Z0+yEkRf29pT7NsqlFlcDPzaXePrP9xunImsCF+iar7PS7Abai9LevYVvZWkSZhDTK5joz5SKnqTbhvR2ZvKWLzHMnsVDP0iXBaLRdytFRvs8WoLV3o89gnGcaKNkPR1OZULc7b1aq7AVcOOKCZDLk5F9y3UC/NWRy1TCxSJYMUXJKaMjSi3jBfXcpL6oQJjzcRYeOskuFE34WVNtVUXlguqqas5Hw6rJiyv9P2uTKa8KdUwNwMPqdt165eFeFrKp3M0A2KvWqwLk5yZIllLpCbcsV7oSjc2rEuitf8dTOIHtq2o+SES+ZRmGp6bXwB+EJpUiDHnexxOCxPOFeYTWIvAqiIPh4AOUgthrgXWUY0DRf3SKYJW4i/Q9vFaiaZ6dWkk+fHv6uGvHyfC2l7DA9rbIVZGGNSNyVWHmnU/c5oFlYyy7Wvwd5AK/wOozQap6VNCZfm21O/hfwZZez9u+hklFFpClidQAeyFc=
X-OriginatorOrg: oracle.com
X-MS-Exchange-CrossTenant-Network-Message-Id: fd8fa502-dcab-46dc-31ea-08dd3a6e8f0f
X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jan 2025 22:54:27.8553 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: B9jNZMarWoRDmpeLvEqPX9wIRjxr/z9pidgC0ZTOZyM4Vv0OX6Sz+QqjcCoqWUUOvnyWv9cGov3m5NS3Lk5AALlbgMqkbvE6BKRsUrOzPco=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR10MB7072
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34
 definitions=2025-01-21_09,2025-01-21_03,2024-11-22_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0
 bulkscore=0
 malwarescore=0 mlxscore=0 mlxlogscore=999 adultscore=0 phishscore=0
 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1
 engine=8.12.0-2411120000 definitions=main-2501210182
X-Proofpoint-GUID: 2xRn1ixtZEBsb0Zj-InIxkhnbic0h-r2
X-Proofpoint-ORIG-GUID: 2xRn1ixtZEBsb0Zj-InIxkhnbic0h-r2
Received-SPF: pass client-ip=205.220.165.32;
 envelope-from=william.roche@oracle.com; helo=mx0a-00069f02.pphosted.com
X-Spam_score_int: -28
X-Spam_score: -2.9
X-Spam_bar: --
X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,
 RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.086,
 RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,
 SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-BeenThere: qemu-devel@nongnu.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <qemu-devel.nongnu.org>
List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>
List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel>
List-Post: <mailto:qemu-devel@nongnu.org>
List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help>
List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=subscribe>
Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org
Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org

From: William Roche <william.roche@oracle.com>

Working on the poisoned memory recovery mechanisms with David
Hildenbrand, it appeared that the file hole punching done with
the memory discard functions are missing the file offset value
fd_offset to correctly modify the right file location.

Note that guest_memfd would not currently take into account
fd_offset, so I'm adding a comment next to the fallocate use
in ram_block_discard_guest_memfd_range().

This version is also checkpatch.pl clean
make check runs fine on both ARM and x86

v1->v2
  . replacing the ram_block_discard_guest_memfd_range()
    modifications with a comment
  . use a local variable for the global file offset

William Roche (1):
  system/physmem: take into account fd_offset for file fallocate

 system/physmem.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

--
2.43.5

Signed-off-by: GitHub Actions Bot <bot@github.com>
  • Loading branch information
GitHub Actions Bot committed Jan 21, 2025
1 parent ca7611a commit 9512ec4
Show file tree
Hide file tree
Showing 23 changed files with 751 additions and 782 deletions.
345 changes: 345 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,345 @@
on: push

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
checkapply:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
# to debug container live from GitHub
# - uses: mxschmitt/action-tmate@v3
- run: bash -c '[ ! -f shazam.log ] || { cat shazam.log; exit 1; }'

checkpatch-ignore-signoff:
needs: checkapply
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: git fetch -a origin --unshallow || true
- run: git remote add upstream -f https://gitlab.com/qemu-project/qemu
- run: ./scripts/checkpatch.pl --no-signoff $(git merge-base upstream/master HEAD)..HEAD

checkpatch-with-signoff:
needs: checkapply
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: git fetch -a origin --unshallow || true
- run: git remote add upstream -f https://gitlab.com/qemu-project/qemu
- run: ./scripts/checkpatch.pl $(git merge-base upstream/master HEAD)..HEAD

# use docker-run to not rebuild images
# images are built daily and pushed on pbolinaro/qemu-ci:*
build-cross:
needs: checkapply
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
container: [alpine,centos9,debian,debian-all-test-cross,debian-amd64-cross,debian-arm64-cross,debian-armhf-cross,debian-hexagon-cross,debian-i686-cross,debian-legacy-test-cross,debian-loongarch-cross,debian-mips64el-cross,debian-mipsel-cross,debian-ppc64el-cross,debian-riscv64-cross,debian-s390x-cross,debian-tricore-cross,fedora,fedora-rust-nightly,opensuse-leap,ubuntu2204]
steps:
- uses: actions/checkout@v4
- run: pip install meson
- run: make docker-run J=$(nproc) RUNC=podman TEST=test-build IMAGE=docker.io/pbolinaro/qemu-ci:${{matrix.container}}

build:
needs: checkapply
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: >
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:debian
bash -cx './configure && ninja -C build install'
- run: >
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:debian
./build/qemu-system-x86_64 -nographic -plugin ./build/contrib/plugins/libstoptrigger,icount=1000000 -plugin ./build/tests/tcg/plugins/libinsn -d plugin
build-cross-mingw64:
needs: checkapply
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: >
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:fedora-win64-cross
bash -cx './configure $QEMU_CONFIGURE_OPTS && ninja -C build install'
build-windows:
needs: checkapply
runs-on: windows-2025
strategy:
fail-fast: false
matrix:
sys: [UCRT64, CLANG64, MINGW64]
defaults:
run:
shell: msys2 {0}
steps:
- uses: msys2/setup-msys2@v2
with:
update: true
msystem: ${{matrix.sys}}
- run: pacman -S --noconfirm curl git
- uses: actions/checkout@v4
- run: >
pacman -S --noconfirm
base-devel binutils bison diffutils flex git grep make sed
${MINGW_PACKAGE_PREFIX}-toolchain
${MINGW_PACKAGE_PREFIX}-glib2
${MINGW_PACKAGE_PREFIX}-gtk3
${MINGW_PACKAGE_PREFIX}-libnfs
${MINGW_PACKAGE_PREFIX}-libssh
${MINGW_PACKAGE_PREFIX}-ninja
${MINGW_PACKAGE_PREFIX}-pixman
${MINGW_PACKAGE_PREFIX}-pkgconf
${MINGW_PACKAGE_PREFIX}-python
${MINGW_PACKAGE_PREFIX}-SDL2
${MINGW_PACKAGE_PREFIX}-zstd
- run: ./configure && ninja -C build
- run: ./build/qemu-system-x86_64 -nographic -plugin ./build/contrib/plugins/libstoptrigger,icount=1000000 -plugin ./build/tests/tcg/plugins/libinsn -d plugin

build-macos-x86_64:
needs: checkapply
runs-on: macos-13
steps:
- uses: actions/checkout@v4
- run: brew install --quiet $(brew deps --include-build qemu) || true
# on macos, werror is not on by default
- run: ./configure --enable-werror && ninja -C build
- run: ./build/qemu-system-x86_64 -nographic -plugin ./build/contrib/plugins/libstoptrigger,icount=1000000 -plugin ./build/tests/tcg/plugins/libinsn -d plugin

build-macos-aarch64:
needs: checkapply
runs-on: macos-14
steps:
- uses: actions/checkout@v4
- run: brew install --quiet $(brew deps --include-build qemu) || true
# on macos, werror is not on by default
- run: ./configure --enable-werror && ninja -C build
- run: ./build/qemu-system-x86_64 -nographic -plugin ./build/contrib/plugins/libstoptrigger,icount=1000000 -plugin ./build/tests/tcg/plugins/libinsn -d plugin

build-misc:
needs: checkapply
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: >
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:debian
bash -cx './configure --disable-user --disable-system --enable-docs --enable-tools && ninja -C build install'
build-32bits:
needs: checkapply
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: >
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:debian-i686-cross
bash -cx './configure $QEMU_CONFIGURE_OPTS && ninja -C build install'
build-big-endian:
needs: checkapply
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: >
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:debian-s390x-cross
bash -cx './configure $QEMU_CONFIGURE_OPTS && ninja -C build install'
build-debug:
needs: checkapply
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: >
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:debian
bash -cx './configure --enable-debug --enable-asan --enable-ubsan && ninja -C build install'
- run: >
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:debian
./build/qemu-system-x86_64 -nographic -plugin ./build/contrib/plugins/libstoptrigger,icount=1000000 -plugin ./build/tests/tcg/plugins/libinsn -d plugin
build-static:
needs: checkapply
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: >
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:debian
bash -cx './configure --disable-system --disable-tools --disable-guest-agent --disable-docs --static && ninja -C build install'
build-tsan:
needs: checkapply
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: >
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:debian
bash -cx './configure --enable-tsan && ninja -C build install'
build-clang:
needs: checkapply
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: >
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:debian
bash -cx './configure --cxx=clang++ --cc=clang --host-cc=clang && ninja -C build install'
build-clang-latest:
needs: checkapply
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: >
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:debian
bash -cx 'LLVM_VERSION=19 && apt update && apt install -y lsb-release wget software-properties-common gnupg && wget https://apt.llvm.org/llvm.sh && bash llvm.sh ${LLVM_VERSION} && ./configure --cxx=clang++-${LLVM_VERSION} --cc=clang-${LLVM_VERSION} --host-cc=clang-${LLVM_VERSION} && ninja -C build install'
build-rust:
needs: checkapply
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: >
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:debian
bash -cx './configure --enable-rust && ninja -C build install'
build-disable-tcg:
needs: checkapply
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: >
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:debian
bash -cx './configure --disable-tcg && ninja -C build install'
build-disable-kvm:
needs: checkapply
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: >
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:debian
bash -cx './configure --disable-kvm && ninja -C build install'
build-disable-tcg-kvm-for-xen:
needs: checkapply
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: >
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:debian
bash -cx './configure --disable-tcg --disable-kvm && ninja -C build install'
build-minimal:
needs: checkapply
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: >
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:debian
bash -cx './configure --without-default-features --without-default-devices --disable-kvm --disable-tcg && ninja -C build install'
check-tcg:
needs: checkapply
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: >
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:debian-all-test-cross
bash -cx './configure --disable-docs --enable-debug-tcg --enable-debug-graph-lock --enable-debug-mutex --enable-asan --enable-ubsan && ninja -C build'
- run: >
podman run --init --privileged --rm -it -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:debian-all-test-cross
bash -cx "env ASAN_OPTIONS=detect_leaks=0 make -k -j $(nproc) check-tcg"
# run all meson tests, except functional.
# block tests are not ran because they don't support sanitizers:
# https://gitlab.com/qemu-project/qemu/-/blob/master/tests/qemu-iotests/meson.build
check:
needs: checkapply
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
# we use image with download cache filled. Solves servers flakiness.
- run: >
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:debian-precache-tests
bash -cx './configure --disable-docs --enable-debug-tcg --enable-debug-graph-lock --enable-debug-mutex --enable-asan --enable-ubsan && ninja -C build'
- run: sudo chown $USER:$USER /dev/kvm
- run: >
podman run --init --privileged --rm -i -v /dev/kvm:/dev/kvm -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:debian-precache-tests
bash -cx "env ASAN_OPTIONS=detect_leaks=0 ./build/pyvenv/bin/meson test -C build --setup thorough --no-suite func-quick --no-suite func-thorough -t 5 --print-errorlogs"
check-functional:
needs: checkapply
runs-on: ubuntu-24.04
steps:
# we clean up runner first, to get more disk space
- run: docker system prune -af && sudo rm -rf /opt/*
- uses: actions/checkout@v4
# we use image with download cache filled. Solves servers flakiness.
- run: >
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:debian-precache-tests
bash -cx './configure --disable-docs --enable-debug-tcg --enable-debug-graph-lock --enable-debug-mutex --enable-asan --enable-ubsan && ninja -C build'
- run: sudo chown $USER:$USER /dev/kvm
- run: >
podman run --init --privileged --rm -i -v /dev/kvm:/dev/kvm -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:debian-precache-tests
bash -cx "env ASAN_OPTIONS=detect_leaks=0 ./build/pyvenv/bin/meson test -C build --setup thorough --suite func-quick --suite func-thorough -j $(($(nproc) / 2)) -t 5 --print-errorlogs --wrapper $(pwd)/scripts/run-functional-test.sh --max-lines=0"
# Limit parallelism because it creates timeout.
# iotests do not support sanitizers, so we run them in their own job
check-block:
needs: checkapply
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
# we use image with download cache filled. Solves servers flakiness.
- run: >
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:debian-precache-tests
bash -cx './configure --disable-docs --enable-debug-tcg --enable-debug-graph-lock --enable-debug-mutex && ninja -C build'
- run: sudo chown $USER:$USER /dev/kvm
- run: >
podman run --init --privileged --rm -i -v /dev/kvm:/dev/kvm -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:debian-precache-tests
bash -cx "./build/pyvenv/bin/meson test -C build --setup thorough --suite block --suite block-slow --suite block-thorough -t 5 --print-errorlogs"
check-avocado:
needs: checkapply
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
# add more time for all tests
- run: sed -i -e 's/timeout = .*/timeout = 3600/' $(find tests/avocado/ -type f)
# we use image with download cache filled. Solves servers flakiness.
- run: >
podman run --init --rm -it -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:debian-precache-tests
bash -cx './configure --disable-docs --enable-debug-tcg --enable-debug-graph-lock --enable-debug-mutex --enable-asan --enable-ubsan && ninja -C build'
- run: sudo chown $USER:$USER /dev/kvm
- run: >
podman run --init --privileged --rm -it -v /dev/kvm:/dev/kvm -v $(pwd):$(pwd) -w $(pwd)
docker.io/pbolinaro/qemu-ci:debian-precache-tests
bash -cx "env ASAN_OPTIONS=detect_leaks=0 make -k check-avocado V=1"
41 changes: 41 additions & 0 deletions .github/workflows/containers.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
on:
schedule:
- cron: '0 6 * * *'
workflow_dispatch:

permissions: write-all

jobs:
build_container:
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
# cd tests/docker/dockerfiles/
# ls *docker | sed -e 's/.docker//' | tr '\n' ','
# remove: debian-bootstrap,debian-toolchain
container: [alpine,centos9,debian-all-test-cross,debian-amd64-cross,debian-arm64-cross,debian-armhf-cross,debian,debian-hexagon-cross,debian-i686-cross,debian-legacy-test-cross,debian-loongarch-cross,debian-mips64el-cross,debian-mipsel-cross,debian-ppc64el-cross,debian-riscv64-cross,debian-s390x-cross,debian-tricore-cross,debian-xtensa-cross,fedora,fedora-rust-nightly,fedora-win64-cross,opensuse-leap,python,ubuntu2204]
steps:
- uses: actions/checkout@v4
- run: make docker-image-${{matrix.container}} RUNC=podman V=1
- run: podman tag qemu/${{matrix.container}} docker.io/pbolinaro/qemu-ci:${{matrix.container}}
- run: podman login -u pbolinaro -p ${{secrets.DOCKERHUB_PASSWORD}}
- run: podman push docker.io/pbolinaro/qemu-ci:${{matrix.container}}

build_container_debian-precache-tests:
runs-on: ubuntu-24.04
steps:
# we clean up runner first, to get more disk space
- run: docker system prune -af && sudo rm -rf /opt/*
- uses: actions/checkout@v4
- run: make docker-image-debian RUNC=podman V=1
# fill download cache for functional and check-avocado
# running check-avocado without any qemu binary will only download data
# in /root/avocado
- run: >
podman run -it -v $(pwd):$(pwd) -w $(pwd) qemu/debian
./precache_tests.sh
# commit result as a new image. Cache will be in /root/.cache and /root/avocado
- run: podman commit "$(podman ps -aq)" docker.io/pbolinaro/qemu-ci:debian-precache-tests
- run: podman login -u pbolinaro -p ${{secrets.DOCKERHUB_PASSWORD}}
- run: podman push docker.io/pbolinaro/qemu-ci:debian-precache-tests
Loading

0 comments on commit 9512ec4

Please sign in to comment.