Skip to content

Commit

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

---

From: =?UTF-8?q?=E2=80=9CWilliam=20Roche?= <william.roche@oracle.com>
To: david@redhat.com, qemu-devel@nongnu.org, peterx@redhat.com,
 pbonzini@redhat.com, philmd@linaro.org
Cc: william.roche@oracle.com
Subject: [PATCH 0/1] fallocate missing fd_offset
Date: Tue, 21 Jan 2025 17:59:55 +0000
Message-ID: <20250121175956.3030149-1-william.roche@oracle.com>
X-Mailer: git-send-email 2.43.5
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: BN0PR07CA0021.namprd07.prod.outlook.com
 (2603:10b6:408:141::16) To CH3PR10MB7329.namprd10.prod.outlook.com
 (2603:10b6:610:12c::16)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH3PR10MB7329:EE_|BY5PR10MB4194:EE_
X-MS-Office365-Filtering-Correlation-Id: 66f35e7b-da29-4056-dfc5-08dd3a456aac
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014;
X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?kzOIelG/XxylHbNUhBU6oNnc+xIbBYXPVdi8DdcJwJOWqqimGEWxgpyVoZuF?=
 =?us-ascii?Q?XU7LEqm5CczBlHgDXy1FPdFGAvJHnXyJScLz6N2vWx+zb+FU5us0E5tS0XTM?=
 =?us-ascii?Q?8Du9vZAFUlb9MkHRWez3KtfmGjL3P2+wgN49Uh7weAjzrHGonzN3p9kQttd0?=
 =?us-ascii?Q?hDgQgnF//XgrQW1XBqnmRmpYFaigXZDrGAJ4Jy0rC4Bb4E4B8euU0mitu5uX?=
 =?us-ascii?Q?HsFrsFNKXQnTVSm+nWyUHvEjdns1lSvyT/O4WqwXTJEvyY/En0FxF78NQBuj?=
 =?us-ascii?Q?ADiSKnHyerW1zjbeNrgix4OBRnZTMjl9BRn+XZhBLzzLmGZ2XhWjV3YHHb+X?=
 =?us-ascii?Q?EkTy3rFu67B4B4vnkY7Z22CtVvgje4CyDIbCkyJEzK3vOcqcrOOHaiRpnR+4?=
 =?us-ascii?Q?4nRkD8r5JDbN5W1oSt9FskzpZZStHZw2GK6018H8w06GlkyheRctffB43g0p?=
 =?us-ascii?Q?V0xVh6MIPCmE2U9wevbaXxJIL0hp93qFQVI5rXfLvz5/UIo0htliKolBqaZN?=
 =?us-ascii?Q?kF8DF7dlfDrQgz8P7uMccSS1Cet10+up7WlfJOY4PrEJc7gjcvTCnM2T6RI/?=
 =?us-ascii?Q?xNrBo/A0IPO+q8drQPpQBGJPREMs4vXMZk5+XHlm1iNZJlk8jiPmfK9JtD82?=
 =?us-ascii?Q?b04+iS0NjttVF/QB9+XVkP0WPoHgbxSYG/OkBGSuivUwTH91qAo5nI2R0nZx?=
 =?us-ascii?Q?tRi7+INpNHk/jDCB2Gk0Qkb4J9yRU74onl8RN81Hp1x4eOuJMeMcMIR9Ov0U?=
 =?us-ascii?Q?ciSj58YyTzdnNY+MLYXTo5r5w8YhPsWGrTV6nJQ0mrScUzpegJtQR9mhhaKe?=
 =?us-ascii?Q?Ni/b+1XcxK4hVM1mbA4gjYqvNR+g2r9fbLyqTJWfYBPWccGglbyiWTwrgzgg?=
 =?us-ascii?Q?8U7e5A8KbtotPm4tpChWzNzQcUlCoometrxpfb57yLt8W2XR//zok7JEbj/j?=
 =?us-ascii?Q?T6nCEDGFofpKPD7kKGEf0/x6+VHcFzzg8Im5cA74svkgO/FsA7E1IOEpVH/O?=
 =?us-ascii?Q?UVb8CsXBrGy99P45hfEL3SlOzceHdCzSoilAP+UCaateyxvW2FQlVxTWKI5d?=
 =?us-ascii?Q?pXPoSKxE75MQiJ0RQGpE/6cxXb8VKe7vjqLTFD278r9WPQtohsrnKDQnNusP?=
 =?us-ascii?Q?Pq0LFX3b8IrklusvQzkmOzCtnUzgBk4J66Giep05l950t2S7+vX7YBAk4QbR?=
 =?us-ascii?Q?IKQ6o1iHkC6evaE0KPU+WjdHDNku/WePVeJQozzUuS2eF0ZWUcYFKtdXs0RC?=
 =?us-ascii?Q?zP6j0dMn5Ida/NHP0TLD2RP+TX3zOeG65/gHMyqY0MOSoLg87C4uMF4HfYBE?=
 =?us-ascii?Q?36mU+ntt5J0snWx7DefhZIPvnLcSUQx0CdMy3+sTl6Ey4HPHxGuz1bW8b3xJ?=
 =?us-ascii?Q?1z1jzV0LZX9s/98o4PqEBL4WcM8M?=
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)(1800799024)(366016)(376014); DIR:OUT; SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?HFWqbfHlRicJJ+ZkvH1tlTHoa5m0pG7jMyEVni8aJ+oy2MshFSua4H5Biqix?=
 =?us-ascii?Q?EQUt9hlDD0orCrm2Ot50kLouHeoBwnxVfAkLrCi/iL0oDXZKc6iMR7EbGgzJ?=
 =?us-ascii?Q?xpqFsE1dZixK1PfdSIXjPJLbORpGenygtunRLO33YyfymFmAdK2FcSC8nL38?=
 =?us-ascii?Q?5mt2zvMwKwAR6KU+vx7+DaiyTE2WCcc3XZvrWfIiCM3B3pToI955UVdhZTx5?=
 =?us-ascii?Q?Xf+LNlGRfXx0/W0JwnWB1fjgydwfooPgXBBMtQeq9m/akWEvx9w+X4Z1Jmqa?=
 =?us-ascii?Q?JUfyy+sPy8zL+KwBWYQIblTo6qY3ru/otSbGZV6HMqwkhs4e6OeMRkEUsHWS?=
 =?us-ascii?Q?zqmMMnlmtHP6b/I69HRyxeBRD0MEX3GouknNBQFJXyQMtKXCDhHZEnTQElyw?=
 =?us-ascii?Q?DcwGQNvbpK8W9H8AHw80Mk62BXTd1HcIhKaS58I1XVwqVDo7N2jaUyzKIXRn?=
 =?us-ascii?Q?l2zGmthgQeNwVx2vbylVU1JCobSMhWqz8j3QbnCKQtcOmzQi8B019tbhEJn3?=
 =?us-ascii?Q?FdbHnFh1fcKH/1ed/J/c3ztIEB31heOksTeuvOmF8Ztd/A/+MAAnDMRBLJxQ?=
 =?us-ascii?Q?jmy/WVr4dgEJNeSpsaEZB9yoBvxg43Rs2vN1+pfm99emUR693Au+qT/1Wxkh?=
 =?us-ascii?Q?GdY6YSu3H9L7P07bKSEQO+TGoAbTNOHwqlzsqVv8z2edM9E2Mm9gbcVxjVdz?=
 =?us-ascii?Q?w8c34nLjEWrO5dupar9Z3YLOeozJcT6kmXa0DT2FDe8SqSZZKTYFyHyoeTWA?=
 =?us-ascii?Q?sRDC5/usTXpXu6t2BydRB5qirOBBykV85u7JTyMmMFei7Jxuko2XkReePCBB?=
 =?us-ascii?Q?KqABSQaP9Ea0IHhLosiF4NhTxz3emn4MyNnCfMQPF5I2mqNvdXlolFb9ivkM?=
 =?us-ascii?Q?bZV952ro1y7IWToNT7XhB6zgLNY4VGzr6+mhh+pLprwE5isdTFtnAp+dQIQb?=
 =?us-ascii?Q?KUWLxD6v2BI4gp6yRKBSUh1Ic1Vo8lGvXAFkC3/dzoTFr83vcQKDJQF6kmL5?=
 =?us-ascii?Q?QPK2haeRNHgpKJOENYjHueEpKEcJW2s1cTOvjYrr0Mq+JEOj6in6Wmpumikp?=
 =?us-ascii?Q?wDRcFpE68PqMzK8OgjOq8s1KwucHAlBWOainR3mNCAEU+Ob4pm8iqHxZC9dU?=
 =?us-ascii?Q?nyD2n4Ffh8Lqhx1WPV4m9/zMnx1tLdsa5UT6OzZpIZ+SzFmtRjNm54w9Eq/8?=
 =?us-ascii?Q?mAQCWJ/P+8ftiHMTqH+0j8Dte735GRrS9UChKc7SN9+tPQaCtMjKmrvOgGA7?=
 =?us-ascii?Q?8C4Bd4n4thkw8vI0TRGdO8jcl6cmAsAetnLh91gAQBvmfMMwsgir+xsxInRX?=
 =?us-ascii?Q?9diIH5eCpBqRFG799fYMf7RalEjUbWdWChjDpm9njr5pDcuiaNaBxvd4wfdO?=
 =?us-ascii?Q?Vz2tuPK/dGvvrfXQ5XFBd4ENv2FXgJk55NhaniwqNXOgGlcXFNxCqSAH3LlP?=
 =?us-ascii?Q?EXFKUM72CT+nEx4hAQTggM56WdphMYkjrpJph0VxMioxBdwuPqQDGPaxavaC?=
 =?us-ascii?Q?7vXQF9iUTM9YYbi1Vo24cHc93xM9BwZbezCvGn6eEYMbPXcg+9R926oj5Jbt?=
 =?us-ascii?Q?F3+h5a4O6q05JxCRquEPMwEkdJ81Awcf8RDKH1/0G6diTo8u4089QS4vf/eS?=
 =?us-ascii?Q?XA=3D=3D?=
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 8DZRHOI1f9LLXA+BKUodJRN2XXBvvUJgr1xNLF4y4uT3z1cRFO6w6AMuealpHT33Kmf93uX0heqQ5eUqwdrTHYwrWXGKKrmw6ZEP1bkmGJ0ngB9qQ0W38b59qEbrFO6OQR0ui9VFzTG5HnXQTMHOGb/pz+XGYhxf2BqXiTpK85VpiJ57kkmAx/iLsisZESc/DIlDE/SyO/Qy8g//YDiEGdYR9V2chYFDvUEYQkInDq2HjWg93RLUiOZgAIT99tmss2kn/g1Z1d73eXLIbEwyxRrasWvFKFUlUy6ErZQ7Q6GjBj+KEdlClYTe3DQxNdIFkWRwMZATrJIV6/J+NISNJeikuRJOKslUttPFqM42b5EJlILE+qYXZqPJ6V7knnyg45qLyOOZWt+GBykrUQ8VJTQcFPo8WbziDRNFZMiIRKta+b0nDhWph+EKVkndxDbbb3Wu9eJ2JA9Po7DODkEkDQ5Xy5KlcRO+pcCCa7iB10M5OIaigpa678OesqhOFM9uoQdND3S23EGevXV7xjGMYVZ83uf7w+/IAj3amWq5xmpAIPYsGF3yRNDDZ8vgahaLg6ZECI4wcPmwEMjdBr1RtI9n11LQqPwnWV1envg2Dmo=
X-OriginatorOrg: oracle.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 66f35e7b-da29-4056-dfc5-08dd3a456aac
X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jan 2025 17:59:57.4319 (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: v+cYYqHiJmu+9gOsD/YAgviMQjPnOUnuwistoVSd5hKcvqYMbF2miYexXmVATxsk/t2GGsAUGTTku+T40ciScTTQe2zKpZnhU5qAuFvVsOI=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR10MB4194
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_07,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-2501210144
X-Proofpoint-GUID: GGTGyBZKjKMTHPaG9hODfKKxQg1nNsfj
X-Proofpoint-ORIG-GUID: GGTGyBZKjKMTHPaG9hODfKKxQg1nNsfj
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.

I'm not sure that guest_memfd would use a non zero fd_offset, but I'm
also modifying the ram_block_discard_guest_memfd_range() function to
include this fallocate use case too.

The fix is checkpatch.pl clean
make check runs fine on both ARM and x86

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

 system/physmem.c | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 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 e6ce974 commit 82bf167
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 82bf167

Please sign in to comment.