Bug 2446153 - Check disk free space before downloading packages for a system-upgrade
Summary: Check disk free space before downloading packages for a system-upgrade
Keywords:
Status: NEW
Alias: None
Product: Fedora
Classification: Fedora
Component: dnf5
Version: 43
Hardware: x86_64
OS: Linux
low
medium
Target Milestone: ---
Assignee: rpm-software-management
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-03-10 18:31 UTC by a.trubitsyn
Modified: 2026-06-10 18:55 UTC (History)
4 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Type: Bug
Embargoed:
fedora-admin-xmlrpc: mirror+


Attachments (Terms of Use)

Description a.trubitsyn 2026-03-10 18:31:48 UTC
Description of problem:
If free space on root partition less than needed for 
sudo dnf -y system-upgrade download --releasever=44
then upgrade stops and after add some space or delete some files on it then do
sudo dnf -y system-upgrade download --releasever=44
once more you have errors like
[3640/3640] Всего                                                                                                                                        100% |   0.0   B/s |   0.0   B |  02m37s
Тестирование автономной транзакции
terminate called after throwing an instance of 'libdnf5::AssertionError'
  what():  libdnf5/rpm/transaction.cpp:195: void libdnf5::rpm::Transaction::fill(const libdnf5::base::Transaction&): Assertion 'implicit_ts_elements.empty()' failed: The rpm transaction contains more elements than requested
Аварийный останов      sudo dnf -y system-upgrade download --releasever=44
 


Version-Release number of selected component (if applicable):
dnf5-5.2.18.0-1.fc43.x86_64.rpm
dnf5-5.2.18.0-1.fc43.i686.rpm

How reproducible:
always (on last 6 or 7 system-upgrade on fedora 37,38...43)
Steps to Reproduce:
1. Install fedora 43
2. sudo dnf -y update && sudo dnf -y upgrade
3. check free space on /
4. start 
   sudo dnf system-upgrade download --releasever=44
   remember number of space needed for transaction 
   then answer N for stop transaction
5. shrink / than free space on it less than needed in 4 
   or copy some big files in / for that purpose
6. start
   sudo dnf -y system-upgrade download --releasever=44
   command abort after no more free space on /

Actual results:
/ full, system-upgrade aborted

Expected results:
system-upgrade report than free space less than needed and stop

Additional info:

Comment 1 Petr Pisar 2026-03-11 12:27:55 UTC
"dnf system-upgrade download" does not perform any upgrade. It only resolves the dependencies and downloads the packages. But it does not attempt to install them. Installation is performed with a subsequent "dnf system-upgrade reboot" command.

It's true that "dnf system-upgrade download" does not checked whether there is enough disk space for downloading the packages. It could, but it's not as easy to do it correctly as it can reuse already downloaded files.


If the space runs out it prints an error like:

Failed to download packages
 Librepo error: Curl error (23): Failed writing received data to disk/application for http://mirrors.dotsrc.org/fedora-enchilada/linux/development/rawhide/Everything/x86_64/os/Packages/p/perl-libs-5.42.1-523.fc45.x86_64.rpm [Failure writing output to destination, passed 1448 returned 765]

It should properly report that the cause is a not enough disk space.


> [3640/3640] Всего                                                                                                                                        100% |   0.0   B/s |   0.0   B |  02m37s
Тестирование автономной транзакции
terminate called after throwing an instance of 'libdnf5::AssertionError'
  what():  libdnf5/rpm/transaction.cpp:195: void libdnf5::rpm::Transaction::fill(const libdnf5::base::Transaction&): Assertion 'implicit_ts_elements.empty()' failed: The rpm transaction contains more elements than requested

This is a different error, not related to this. See bug #2350481.

Comment 2 a.trubitsyn 2026-03-11 16:47:06 UTC
(In reply to Petr Pisar from comment #1)
> "dnf system-upgrade download" does not perform any upgrade. It only resolves
> the dependencies and downloads the packages. But it does not attempt to
> install them. 
You are true. But download 3640 or more packages need some time, if it can't end without error why do perform it?
"dnf system-upgrade download" may stop after existing warning about number of downloading files, needed GiB 
and missing warning about free space on corresponded partition

>This is a different error, not related to this. See bug #2350481.
Yes, but if user not experienced enough, make previous system-upgrade (for example from f42 to f43) without problems, he or she can use it with -y option like
"dnf -y system-upgrade download"
and stuck with bug #2350481.

I say more.
dnf5 can download not one, but max_parallel_downloads (according to /etc/dnf.conf) rpm packages at same time.
And at this scenario all of it may be broken.
But if user add some more space next use of "dnf system-upgrade download" check only first of that broken files, not all of them, like
[3640/3640] Всего                                                                                                                                        100% |   0.0   B/s |   0.0   B |  03m31s
Тестирование автономной транзакции
Сбой транзакции: Сбой проверки подписей.
OpenPGP check for package "arm-none-eabi-gcc-cs-1:15.2.0-4.fc44.x86_64" (/usr/lib/sysimage/libdnf5/offline/packages/arm-none-eabi-gcc-cs-15.2.0-4.fc44.x86_64.rpm) from repo "fedora" has failed: Возникла проблема при открытии пакета.

But command like
for f in /usr/lib/sysimage/libdnf5/offline/packages/*.rpm ; do echo "-- $f --" ; rpmkeys --checksig $f ; done
can see all rpm with broken signature
Why "dnf system-upgrade download" don't do it?
Is it possible to add some options to check and print not only first broken files, but all of them?


Note You need to log in before you can comment on or make changes to this bug.