strictly Linux has been very educational for this old man I'm loving it too!
You just don't have that with Windows. You're stuck with the same Desktop Environment they give you. If they made it open source, I wonder what kind of Desktop Environments would come out for Windows.
Tell me your Linux journey story. I'd love to read it!
https://redd.it/1nnncbt
@r_linux
You just don't have that with Windows. You're stuck with the same Desktop Environment they give you. If they made it open source, I wonder what kind of Desktop Environments would come out for Windows.
Tell me your Linux journey story. I'd love to read it!
https://redd.it/1nnncbt
@r_linux
Reddit
From the linux community on Reddit
Explore this post and more from the linux community
Linux machine instead of a digital mixing desk
Hi everyone,
I’m not completely new to the Linux world, but I’m also not a hardcore expert. I can manage basic Ubuntu/Debian servers, but that’s about it.
I also play in a band, and we’re in need of a new mixer. Instead of spending a lot of money (>1000 €) on a digital mixing console, I’m tempted by the idea of building a DIY solution: a PC running Linux (dedicated to this task only) + an audio interface (we already have a Behringer UMC1820).
Use Case:
\- For rehearsals only
\- Mixing only (we already have a separate recording setup)
\- Ideally 3 separate monitor mixes for the musicians
Setup / Channels:
\- 8x drums, 2x vocals, 1x guitar, 1–2x bass
\- Hardware: UMC1820 already available, considering adding a second one for expansion
Questions:
\- Is it realistic to get latency on par with a digital mixing console? (Goal: <2–3 ms roundtrip for live use, max around 10 ms)
\- Which distro/tools would be suitable for such a project? Is there anything that already provides a mixer interface + routing?
\- Does anyone have experience tweaking the operating system to achieve such low latencies? What minimum hardware should I aim for?
\- How stable is the UMC1820 on Linux, and are there better alternatives?
\- Are there any existing DIY projects like this, or would I be starting completely from scratch?
Operation:
\- mouse + keyboard to begin with, later maybe MIDI controller, touch or tablet. Presets would be nice, but not required.
Is it realistic to make this truly usable, or will it remain more of a “fun experiment”?
If it turns out to be impractical, that’s fine — I’d still value the learning experience more than just buying a ready-made digital mixer. Also, thanks to Windows 11, there’s currently plenty of decent PC hardware available at low prices.
For context: I have programming knowledge in C++, PHP, HTML, Batch, CMD, and some basic Python. I haven’t done much OS-level tweaking yet, but I’m comfortable learning new syntax and digging deeper if needed.
I’d really appreciate any advice or pointers to help me move in the right direction.
https://redd.it/1nnzlxh
@r_linux
Hi everyone,
I’m not completely new to the Linux world, but I’m also not a hardcore expert. I can manage basic Ubuntu/Debian servers, but that’s about it.
I also play in a band, and we’re in need of a new mixer. Instead of spending a lot of money (>1000 €) on a digital mixing console, I’m tempted by the idea of building a DIY solution: a PC running Linux (dedicated to this task only) + an audio interface (we already have a Behringer UMC1820).
Use Case:
\- For rehearsals only
\- Mixing only (we already have a separate recording setup)
\- Ideally 3 separate monitor mixes for the musicians
Setup / Channels:
\- 8x drums, 2x vocals, 1x guitar, 1–2x bass
\- Hardware: UMC1820 already available, considering adding a second one for expansion
Questions:
\- Is it realistic to get latency on par with a digital mixing console? (Goal: <2–3 ms roundtrip for live use, max around 10 ms)
\- Which distro/tools would be suitable for such a project? Is there anything that already provides a mixer interface + routing?
\- Does anyone have experience tweaking the operating system to achieve such low latencies? What minimum hardware should I aim for?
\- How stable is the UMC1820 on Linux, and are there better alternatives?
\- Are there any existing DIY projects like this, or would I be starting completely from scratch?
Operation:
\- mouse + keyboard to begin with, later maybe MIDI controller, touch or tablet. Presets would be nice, but not required.
Is it realistic to make this truly usable, or will it remain more of a “fun experiment”?
If it turns out to be impractical, that’s fine — I’d still value the learning experience more than just buying a ready-made digital mixer. Also, thanks to Windows 11, there’s currently plenty of decent PC hardware available at low prices.
For context: I have programming knowledge in C++, PHP, HTML, Batch, CMD, and some basic Python. I haven’t done much OS-level tweaking yet, but I’m comfortable learning new syntax and digging deeper if needed.
I’d really appreciate any advice or pointers to help me move in the right direction.
https://redd.it/1nnzlxh
@r_linux
Reddit
From the linux community on Reddit
Explore this post and more from the linux community
Arch, Mageia, and the FSF's ongoing DDoS attacks
I attempted a Mageia install/setup, but once the installation finished and I tried updating packages, I realized the repos were down.
Many Linux distributions such as Arch Linux, Mageia, and even the Free Software Foundation have been struggling with an attack. The motives behind these attacks are still not clear.
Free and Open Source distributions were seen as less likely targets of these sort of attacks, but it seems this isn't the case anymore. Alas, I'm having a fun time deciding on whether I should install another distribution, or wait and see what happens...
It leaves me with many questions. Which of you have been affected? What communities seem to be affected right now? What can we do about it?
https://redd.it/1no14lc
@r_linux
I attempted a Mageia install/setup, but once the installation finished and I tried updating packages, I realized the repos were down.
Many Linux distributions such as Arch Linux, Mageia, and even the Free Software Foundation have been struggling with an attack. The motives behind these attacks are still not clear.
Free and Open Source distributions were seen as less likely targets of these sort of attacks, but it seems this isn't the case anymore. Alas, I'm having a fun time deciding on whether I should install another distribution, or wait and see what happens...
It leaves me with many questions. Which of you have been affected? What communities seem to be affected right now? What can we do about it?
https://redd.it/1no14lc
@r_linux
Linuxiac
After Arch Linux, Mageia Faces Infrastructure Outage
After Arch Linux, Mageia is now reporting infrastructure outages, with the main website, forums, and wiki down due to what looks like another bot-driven attack.
TernFS: an exabyte scale, multi-region distributed filesystem (new opensource filesystem w/kernel module)
https://www.xtxmarkets.com/tech/2025-ternfs/
https://redd.it/1no0ysl
@r_linux
https://www.xtxmarkets.com/tech/2025-ternfs/
https://redd.it/1no0ysl
@r_linux
Xtxmarkets
TernFS: an exabyte scale, multi-region distributed filesystem | XTX Tech Blog
XTX Markets is a leading algorithmic trading firm which uses state-of-the-art machine learning technology to produce price forecasts for over 50,000 financial instruments across equities, fixed income, currencies, commodities and crypto. It uses those forecasts…
You should use zram probably
How come after 5 years of using Linux I've only now heard of zram there is almost no reason not to use it unless you've a CPU from 10+years ago.
So basically for those of you who don't know zram is a Linux kernel feature that creates a compressed block device in RAM. Think of it like a RAM disk but with on-the-fly compression. Instead of writing raw data into memory, zram compresses it first, so you can effectively fit more into the same amount of RAM.
TLDR; it's effectively a faster swap kind of is how I see it
And almost every CPU in the last 10 years can properly support that on the fly compression very fast. Yes you're effectively trading a little bit of CPU but it's marginal I would say
And this is actually useful I have 16GBs of RAM and sometime as a developer when I opened large codebases the LSP could take up to 8-10GBs of ram and I literally couldn't work with those codebases if I had a browser open and now I can!! it's actually kernel dark magic.
It's still not faster than if you'd just get more ram but it's sure as hell a lot faster than swapping on my SSD.
You could read more about it here but the general rule of thumb is allocate half of your RAM as a zram
https://redd.it/1no3uzr
@r_linux
How come after 5 years of using Linux I've only now heard of zram there is almost no reason not to use it unless you've a CPU from 10+years ago.
So basically for those of you who don't know zram is a Linux kernel feature that creates a compressed block device in RAM. Think of it like a RAM disk but with on-the-fly compression. Instead of writing raw data into memory, zram compresses it first, so you can effectively fit more into the same amount of RAM.
TLDR; it's effectively a faster swap kind of is how I see it
And almost every CPU in the last 10 years can properly support that on the fly compression very fast. Yes you're effectively trading a little bit of CPU but it's marginal I would say
And this is actually useful I have 16GBs of RAM and sometime as a developer when I opened large codebases the LSP could take up to 8-10GBs of ram and I literally couldn't work with those codebases if I had a browser open and now I can!! it's actually kernel dark magic.
It's still not faster than if you'd just get more ram but it's sure as hell a lot faster than swapping on my SSD.
You could read more about it here but the general rule of thumb is allocate half of your RAM as a zram
https://redd.it/1no3uzr
@r_linux
OBS Studio 32.0, Released !
Links: [https://github.com/obsproject/obs-studio/releases](https://github.com/obsproject/obs-studio/releases)
**Release Notes:**
# 32.0 New Features
* Added a basic plugin manager \[FiniteSingularity/PatTheMav/Warchamp7\]
* Added opt-in automatic crash log upload for Windows and macOS \[PatTheMav/Warchamp7\]
* Added Voice Activity Detection (VAD) to NVIDIA RTX Audio Effects, which improves noise suppression for speech, as well as several optimizations to NVIDIA Effects \[pkviet\]
* Added chair removal option for NVIDIA RTX Background Removal, allowing removal of chairs \[pkviet\]
* Added experimental Metal renderer for Apple Silicon Macs \[PatTheMav\]
* Added Hybrid MOV support \[derrod\]
* Brings ProRes support on macOS and a more widely supported HEVC/H.264 + PCM audio option to all platforms
# 32.0 Changes
* OBS Studio will no longer load plugins built for a newer release of OBS to prevent future compatibility issues \[norihiro\]
* Added custom OBS widgets in preparation for larger UI updates \[derrod/gxalpha/Warchamp7\]
* Added preparations for Metal renderer (stay tuned!) \[PatTheMav\]
* Changed default bitrate from 2500 to 6000 Kbps \[notr1ch\]
* Changed Hybrid MP4/MOV to be the default containers \[derrod\]
* Changed the crash sentinel file location to its own subdirectory \[PatTheMav\]
* Improved audio deduplication logic to cover more cases of nested scenes, groups, and multiple canvases \[pkviet\]
* Prevent audio duplication when sources are set to "Monitor and Output" while the monitoring device is also being captured \[pkviet\]
* Updated the default settings for AMD encoders \[rhutsAMD\]
* Improved accuracy of chapter markers in Hybrid MP4/MOV \[derrod\]
* Re-hid the cursor in edit fields on macOS \[gxalpha\]
* Improved format selection for PipeWire video capture \[tytan652\]
* Removed workarounds to prevent loading Qt 5 based plugins \[RytoEX\]
* Removed the --disable-shutdown-check launch flag \[PatTheMav\]
* Hybrid MP4/MOV is now out of beta and has been made the default output format for new profiles \[derrod\]
# 32.0 Bug Fixes
* Potentially fixed a rare crash on macOS when moving or resizing the OBS window \[PatTheMav\]
* Fixed a crash with SRT when using an invalid URL \[pkviet\]
* Fixed a crash when setting non-default pkt\_size with SRT \[pkviet\]
* Fixed a crash in Media Source when playback starts with certain video files \[howellrl\]
* Fixed a UI deadlock when opening source properties from the Sources list when the Windows setting 'Snap mouse to default button in dialog boxes' was enabled by adding a 200ms delay before creating the properties window \[Warchamp7\]
* Fixed a memory leak when trying to output Hybrid MP4 to a non-writeable location \[norihiro\]
* Fixed rare occurrence of multiview becoming blank \[norihiro\]
* Fixed SRT reconnection failures \[pkviet\]
* Fixed overflow texture rendering sRGB-awareness \[PatTheMav\]
* Fixed incorrect color range property setting for AMD AV1 encoder \[rhutsAMD\]
* Fixed Hybrid MP4 file splitting not working correctly in some cases \[derrod\]
* Fixed not being able to capture higher than 60fps with macOS Screen Capture \[jcm93\]
* Fixed focus not displaying properly in hotkey settings on macOS \[gxalpha\]
* Fixed the scrollbar appearing invisible in Light and Rachni themes \[shiina424\]
* Fixed HEVC frame priority not being set correctly in some cases, potentially causing playback errors when dropping frames \[dsaedtler\]
* Fixed an issue that could result in increases to output latency after temporary encoder stalls \[dsaedtler\]
* Fixed an issue where Multitrack Video could still be enabled after switching from a service that supports it to one that does not \[Penwy\]
* Fixed an issue where GetGroupList with obs-websocket would return nothing \[gxalpha\]
* Removed a workaround for older Qt versions that prevented docks from loading correctly while OBS is maximized \[RytoEX\]
https://redd.it/1no3c2t
@r_linux
Links: [https://github.com/obsproject/obs-studio/releases](https://github.com/obsproject/obs-studio/releases)
**Release Notes:**
# 32.0 New Features
* Added a basic plugin manager \[FiniteSingularity/PatTheMav/Warchamp7\]
* Added opt-in automatic crash log upload for Windows and macOS \[PatTheMav/Warchamp7\]
* Added Voice Activity Detection (VAD) to NVIDIA RTX Audio Effects, which improves noise suppression for speech, as well as several optimizations to NVIDIA Effects \[pkviet\]
* Added chair removal option for NVIDIA RTX Background Removal, allowing removal of chairs \[pkviet\]
* Added experimental Metal renderer for Apple Silicon Macs \[PatTheMav\]
* Added Hybrid MOV support \[derrod\]
* Brings ProRes support on macOS and a more widely supported HEVC/H.264 + PCM audio option to all platforms
# 32.0 Changes
* OBS Studio will no longer load plugins built for a newer release of OBS to prevent future compatibility issues \[norihiro\]
* Added custom OBS widgets in preparation for larger UI updates \[derrod/gxalpha/Warchamp7\]
* Added preparations for Metal renderer (stay tuned!) \[PatTheMav\]
* Changed default bitrate from 2500 to 6000 Kbps \[notr1ch\]
* Changed Hybrid MP4/MOV to be the default containers \[derrod\]
* Changed the crash sentinel file location to its own subdirectory \[PatTheMav\]
* Improved audio deduplication logic to cover more cases of nested scenes, groups, and multiple canvases \[pkviet\]
* Prevent audio duplication when sources are set to "Monitor and Output" while the monitoring device is also being captured \[pkviet\]
* Updated the default settings for AMD encoders \[rhutsAMD\]
* Improved accuracy of chapter markers in Hybrid MP4/MOV \[derrod\]
* Re-hid the cursor in edit fields on macOS \[gxalpha\]
* Improved format selection for PipeWire video capture \[tytan652\]
* Removed workarounds to prevent loading Qt 5 based plugins \[RytoEX\]
* Removed the --disable-shutdown-check launch flag \[PatTheMav\]
* Hybrid MP4/MOV is now out of beta and has been made the default output format for new profiles \[derrod\]
# 32.0 Bug Fixes
* Potentially fixed a rare crash on macOS when moving or resizing the OBS window \[PatTheMav\]
* Fixed a crash with SRT when using an invalid URL \[pkviet\]
* Fixed a crash when setting non-default pkt\_size with SRT \[pkviet\]
* Fixed a crash in Media Source when playback starts with certain video files \[howellrl\]
* Fixed a UI deadlock when opening source properties from the Sources list when the Windows setting 'Snap mouse to default button in dialog boxes' was enabled by adding a 200ms delay before creating the properties window \[Warchamp7\]
* Fixed a memory leak when trying to output Hybrid MP4 to a non-writeable location \[norihiro\]
* Fixed rare occurrence of multiview becoming blank \[norihiro\]
* Fixed SRT reconnection failures \[pkviet\]
* Fixed overflow texture rendering sRGB-awareness \[PatTheMav\]
* Fixed incorrect color range property setting for AMD AV1 encoder \[rhutsAMD\]
* Fixed Hybrid MP4 file splitting not working correctly in some cases \[derrod\]
* Fixed not being able to capture higher than 60fps with macOS Screen Capture \[jcm93\]
* Fixed focus not displaying properly in hotkey settings on macOS \[gxalpha\]
* Fixed the scrollbar appearing invisible in Light and Rachni themes \[shiina424\]
* Fixed HEVC frame priority not being set correctly in some cases, potentially causing playback errors when dropping frames \[dsaedtler\]
* Fixed an issue that could result in increases to output latency after temporary encoder stalls \[dsaedtler\]
* Fixed an issue where Multitrack Video could still be enabled after switching from a service that supports it to one that does not \[Penwy\]
* Fixed an issue where GetGroupList with obs-websocket would return nothing \[gxalpha\]
* Removed a workaround for older Qt versions that prevented docks from loading correctly while OBS is maximized \[RytoEX\]
https://redd.it/1no3c2t
@r_linux
GitHub
Releases · obsproject/obs-studio
OBS Studio - Free and open source software for live streaming and screen recording - obsproject/obs-studio
Possibly the most negative update size I've ever gotten. How does this even happen???
https://redd.it/1no9d1e
@r_linux
https://redd.it/1no9d1e
@r_linux
GNOME Plans New Donation Reminder Pop-Up in Upcoming Release
https://linuxiac.com/gnome-plans-new-donation-reminder-pop-up-in-upcoming-release/
https://redd.it/1nobsri
@r_linux
https://linuxiac.com/gnome-plans-new-donation-reminder-pop-up-in-upcoming-release/
https://redd.it/1nobsri
@r_linux
Linuxiac
GNOME Plans New Donation Reminder Pop-Up in Upcoming Release
With GNOME 49, users will get a kind reminder now and then to support the project and its future improvements.
RPM 6 released!
Source: https://rpm.org/releases/6.0.0
# Download
Source: [rpm-6.0.0.tar.bz2](https://ftp.osuosl.org/pub/rpm/releases/rpm-6.0.x/rpm-6.0.0.tar.bz2)
SHA256SUM: 14abb1b944476788d90005d8d61d5d30fce80d9f0de11eb657b14e5c9ef27441
# Changes since 4.20.1
# Overview
Support for both RPM v4 and v6 packages (see [Compatibility Notes](https://rpm.org/releases/6.0.0#compatibility-notes))
Support for multiple OpenPGP signatures per package (\#3385)
Support for OpenPGP v6 and PQC keys and signatures ([\#3363](https://github.com/rpm-software-management/rpm/issues/3363))
Support for updating previously imported keys (\#2577)
Support for installing RPM v3 packages has been removed ([\#1107](https://github.com/rpm-software-management/rpm/issues/1107))
RPM defaults to enforcing signature checking (\#1573)
RPM uses the full key ID or fingerprint to identify OpenPGP keys everywhere ([\#2403](https://github.com/rpm-software-management/rpm/issues/2403))
Man page and other documentation overhaul (#3612, #3669, #3751)
Pristine and verifiable release tarballs ([\#3565](https://github.com/rpm-software-management/rpm/issues/3565)) ([\#2702](https://github.com/rpm-software-management/rpm/issues/2702))
# General Use
Several enhancements to rpmkeys(8):
`rpmkeys --import` can now be used to update keys ([\#2577](https://github.com/rpm-software-management/rpm/issues/2577)). This also updates the key handle from a short ambiguous key id to full fingerprint.
`rpmkeys --export` added for exporting keys
`rpmkeys` works identically with all keystore backends
`rpmkeys` key lookup is now case-insensitive
Several enhancements to rpmsign(1):
`rpmsign` can use either GnuPG or Sequoia-sq for signing (controlled by `%_openpgp_sign` macro (`gpg` or `sq`))
`rpmsign --resign` replaces all existing signatures with a new one
New query tag extensions (e.g. with
`rpmformat` for determining package format version (3/4/6)
New query formatter `:hashalgo` for displaying hash algorithm names
New
Consistent terminology and case usage in signature and key messages
OpenPGP signatures are called OpenPGP in output
RPM v3 header+payload signatures are called “legacy” in output
New feature to calculate a set of configurable digests on verification and safe them in the rpmdb. This can help identifying the originating package file. (RHEL-35619)
Fix noscriptlet errors not reflected in transaction result code ([\#2581](https://github.com/rpm-software-management/rpm/issues/2581))
Fix
Fix `--hash`, `--percent` and `--test` not working with `--restore` ([\#3917](https://github.com/rpm-software-management/rpm/issues/3917))
Fix a segfault and memory leaks in rpmgraph(1)
Source: https://rpm.org/releases/6.0.0
# Download
Source: [rpm-6.0.0.tar.bz2](https://ftp.osuosl.org/pub/rpm/releases/rpm-6.0.x/rpm-6.0.0.tar.bz2)
SHA256SUM: 14abb1b944476788d90005d8d61d5d30fce80d9f0de11eb657b14e5c9ef27441
# Changes since 4.20.1
# Overview
Support for both RPM v4 and v6 packages (see [Compatibility Notes](https://rpm.org/releases/6.0.0#compatibility-notes))
Support for multiple OpenPGP signatures per package (\#3385)
Support for OpenPGP v6 and PQC keys and signatures ([\#3363](https://github.com/rpm-software-management/rpm/issues/3363))
Support for updating previously imported keys (\#2577)
Support for installing RPM v3 packages has been removed ([\#1107](https://github.com/rpm-software-management/rpm/issues/1107))
RPM defaults to enforcing signature checking (\#1573)
RPM uses the full key ID or fingerprint to identify OpenPGP keys everywhere ([\#2403](https://github.com/rpm-software-management/rpm/issues/2403))
Man page and other documentation overhaul (#3612, #3669, #3751)
Pristine and verifiable release tarballs ([\#3565](https://github.com/rpm-software-management/rpm/issues/3565)) ([\#2702](https://github.com/rpm-software-management/rpm/issues/2702))
# General Use
Several enhancements to rpmkeys(8):
`rpmkeys --import` can now be used to update keys ([\#2577](https://github.com/rpm-software-management/rpm/issues/2577)). This also updates the key handle from a short ambiguous key id to full fingerprint.
rpmkeys --import now also works from a pipe`rpmkeys --export` added for exporting keys
rpmkeys --checksig, --list, --delete use and expect full fingerprint of the keys (\#3360)`rpmkeys` works identically with all keystore backends
rpmkeys --rebuild can be used to rebuild the keystore contents and move between different keystore backends (\#3347)`rpmkeys` key lookup is now case-insensitive
Several enhancements to rpmsign(1):
`rpmsign` can use either GnuPG or Sequoia-sq for signing (controlled by `%_openpgp_sign` macro (`gpg` or `sq`))
rpmsign --addsign no longer replaces existing signatures. Arbitrary number of signatures can be added on v6 packages by default and on v4 packages, with --rpmv6`rpmsign --resign` replaces all existing signatures with a new one
New query tag extensions (e.g. with
--qf <format>):`rpmformat` for determining package format version (3/4/6)
openpgp for managing all supported OpenPGP signature typesNew query formatter `:hashalgo` for displaying hash algorithm names
New
--filemime query alias for querying per-file MIME infoConsistent terminology and case usage in signature and key messages
OpenPGP signatures are called OpenPGP in output
RPM v3 header+payload signatures are called “legacy” in output
New feature to calculate a set of configurable digests on verification and safe them in the rpmdb. This can help identifying the originating package file. (RHEL-35619)
Fix noscriptlet errors not reflected in transaction result code ([\#2581](https://github.com/rpm-software-management/rpm/issues/2581))
Fix
%triggerprein and %triggerun not failing the associated install/erase operation (\#3815)Fix `--hash`, `--percent` and `--test` not working with `--restore` ([\#3917](https://github.com/rpm-software-management/rpm/issues/3917))
Fix a segfault and memory leaks in rpmgraph(1)
(\#3925)
Fix [rpm2archive(1)](https://rpm-software-management.github.io/rpm/man/rpm2archive.1) using the same suffix for tar and cpio ([\#3922](https://github.com/rpm-software-management/rpm/issues/3922))
Man page overhaul (WIP):
Update all manual pages to a new consistent style with examples ([\#3669](https://github.com/rpm-software-management/rpm/issues/3669))
Add man pages for all major components and file formats (\#3612)
[rpm-config(5)](https://rpm-software-management.github.io/rpm/man/rpm-config.5)
rpm-rpmrc(5)
[rpm-macrofile(5)](https://rpm-software-management.github.io/rpm/man/rpm-macrofile.5)
rpm-manifest(5)
[rpm-lua(7)](https://rpm-software-management.github.io/rpm/man/rpm-lua.7)
rpm-macros(7)
[rpm-payloadflags(7)](https://rpm-software-management.github.io/rpm/man/rpm-payloadflags.7)
rpm-queryformat(7)
[rpm-version(7)](https://rpm-software-management.github.io/rpm/man/rpm-version.7)
rpmuncompress(1)
Move end-user commands to section 1
Many previously undocumented things covered, many errors fixed
Versioned documentation on [https://rpm.org/docs/](https://rpm.org/docs/)
Man pages
Reference manual
API docs
# Packaging
[rpmbuild(1)](https://rpm-software-management.github.io/rpm/man/rpmbuild.1) now supports generating two different package formats, controlled by `%_rpmformat` macro value `6`/`4`:
RPM v6
[RPM v4](https://rpm-software-management.github.io/rpm/manual/format_v4.html)
rpmbuild(1) can now automatically sign packages if
New command [rpm-setup-autosign(1)](https://rpm-software-management.github.io/rpm/man/rpm-setup-autosign.1) added for easy auto-signing configuration ([\#3522](https://github.com/rpm-software-management/rpm/issues/3522))
New
New `%{xdg:...}` macro for evaluating XDG base directories
Add support for E2K architecture
Fix sources and patches stored in reverse order in the header ([\#3014](https://github.com/rpm-software-management/rpm/issues/3014))
Fix Lua
Fix architecture checking accidentally moved after build ([\#3569](https://github.com/rpm-software-management/rpm/issues/3569))
Fix buildsys specific
Fix `check-rpaths` brp noscript when both RPATH and RUNPATH exist ([\#3667](https://github.com/rpm-software-management/rpm/issues/3667))
Fix a memory leak in
Fix 4.20 regression on `rpmbuild -rs` failing on non-existent directory ([\#3682](https://github.com/rpm-software-management/rpm/issues/3682))
Fix an extra newline printed on
Fix a segfault on invalid dependency generator output in `multi` mode ([\#3821](https://github.com/rpm-software-management/rpm/issues/3821))
Fix
`brp-elfperms` buildroot policy noscript was removed ([\#3195](https://github.com/rpm-software-management/rpm/issues/3195))
Drop support for obsolete
Fix [rpm2archive(1)](https://rpm-software-management.github.io/rpm/man/rpm2archive.1) using the same suffix for tar and cpio ([\#3922](https://github.com/rpm-software-management/rpm/issues/3922))
Man page overhaul (WIP):
Update all manual pages to a new consistent style with examples ([\#3669](https://github.com/rpm-software-management/rpm/issues/3669))
Add man pages for all major components and file formats (\#3612)
[rpm-config(5)](https://rpm-software-management.github.io/rpm/man/rpm-config.5)
rpm-rpmrc(5)
[rpm-macrofile(5)](https://rpm-software-management.github.io/rpm/man/rpm-macrofile.5)
rpm-manifest(5)
[rpm-lua(7)](https://rpm-software-management.github.io/rpm/man/rpm-lua.7)
rpm-macros(7)
[rpm-payloadflags(7)](https://rpm-software-management.github.io/rpm/man/rpm-payloadflags.7)
rpm-queryformat(7)
[rpm-version(7)](https://rpm-software-management.github.io/rpm/man/rpm-version.7)
rpmuncompress(1)
Move end-user commands to section 1
Many previously undocumented things covered, many errors fixed
Versioned documentation on [https://rpm.org/docs/](https://rpm.org/docs/)
Man pages
Reference manual
API docs
# Packaging
[rpmbuild(1)](https://rpm-software-management.github.io/rpm/man/rpmbuild.1) now supports generating two different package formats, controlled by `%_rpmformat` macro value `6`/`4`:
RPM v6
[RPM v4](https://rpm-software-management.github.io/rpm/manual/format_v4.html)
rpmbuild(1) can now automatically sign packages if
%_openpgp_autosign_id macro is defined (\#2678)New command [rpm-setup-autosign(1)](https://rpm-software-management.github.io/rpm/man/rpm-setup-autosign.1) added for easy auto-signing configuration ([\#3522](https://github.com/rpm-software-management/rpm/issues/3522))
New
%{span:...} macro to make defining multi-line macros nicerNew `%{xdg:...}` macro for evaluating XDG base directories
Add support for E2K architecture
Fix sources and patches stored in reverse order in the header ([\#3014](https://github.com/rpm-software-management/rpm/issues/3014))
Fix Lua
rpm.glob() not honoring the c argument (\#3794)Fix architecture checking accidentally moved after build ([\#3569](https://github.com/rpm-software-management/rpm/issues/3569))
Fix buildsys specific
%prep section not accepted (\#3635)Fix `check-rpaths` brp noscript when both RPATH and RUNPATH exist ([\#3667](https://github.com/rpm-software-management/rpm/issues/3667))
Fix a memory leak in
rpmspec --shellFix 4.20 regression on `rpmbuild -rs` failing on non-existent directory ([\#3682](https://github.com/rpm-software-management/rpm/issues/3682))
Fix an extra newline printed on
rpm --evalFix a segfault on invalid dependency generator output in `multi` mode ([\#3821](https://github.com/rpm-software-management/rpm/issues/3821))
Fix
brp-strip-comment-note failure due to a race condition`brp-elfperms` buildroot policy noscript was removed ([\#3195](https://github.com/rpm-software-management/rpm/issues/3195))
Drop support for obsolete
--nodirtokens rpmbuild(1) switchGitHub
rpmgraph crashes with a segmentation fault · Issue #3925 · rpm-software-management/rpm
rpmgraph seems to crash on all legit input. Makes one wonder just how long it has done that. I don't recall running this tool in the last 15 years or so, maybe even longer.
(\#3927)
# API Changes
New functions related to rpmKeyring:
`rpmKeyringVerifySig2()`
`rpmKeyringModify()`
New functions related to rpmPubkey:
`rpmPubkeyFingperint()`, `rpmPubkeyFingerprintAsHex()`, `rpmPubkeyKeyIDAsHex()` and `rpmPubkeyArmorWrap()` accessors
New functions for managing transaction permanent keystore:
`rpmtxnDeletePubkey()` for deleting pubkey’s from transaction keystore
New flags to control `rpmSign()` operation added: `RPMSIGN_FLAG_RESIGN`, `RPMSIGN_FLAG_RPMV4`, `RPMSIGN_FLAG_RPMV6`
New functions for controlling per-package verification level:
`rpmteVfyLevel()` and `rpmteSetVfyLevel()`
New identifiers related to multiple signature support added:
`RPMSIGTAG_OPENPGP` signature header tag (alias to `RPMTAG_OPENPGP`)
New rpm tags: `RPMTAG_PAYLOADSIZE`, `RPMTAG_PAYLOADSIZEALT`, `RPMTAG_RPMFORMAT`, `RPMTAG_FILEMIMEINDEX`, `RPMTAG_MIMEDICT`, `RPMTAG_FILEMIMES`, `RPMTAG_SOURCENEVR`, `RPMTAG_PAYLOADSHA512`, `RPMTAG_PAYLOADSHA512ALT`, `RPMTAG_PAYLOADSHA3_256`, `RPMTAG_PAYLOADSHA3_256ALT`, `RPMTAG_SHA3_256HEADER`
Renamed rpm tags:
`RPMTAG_PAYLOADDIGEST` to `RPMTAG_PAYLOADSHA256`
`RPMTAG_PAYLOADDIGESTALGO` to `RPMTAG_PAYLOADSHA256ALGO` (obsolete)
New identifiers related to SHA-3 added:
New symbols related to MIME types in v6 packages:
`RPMFI_NOFILEMIME` flag to control behavior
New OpenPGP identifiers related to RFC-9580 added
New `pgpDigParamsSalt()` function retrieving OpenPGP v6 signature pre-salt ([\#3846](https://github.com/rpm-software-management/rpm/issues/3846))
New
`rpmtsAddInstallElement()` returns `3` on unsupported package format
# Internal Improvements
RPM is now built as C++20 code (except for plugins and Python bindings)
More background available in the initial announcement
All relevant sources have been renamed to `.cc` or `.hh` extension
Many dynamic data structures moved to STL and other similar refactorings
Numerous improvements to the test-suite
Simplify test creation
Add an actual keystore abstraction
New
New `make site` build target for easy local rendering of documentation
Make reference counting atomic throughout the codebase
Make the test-suite image `toolbox(1)` ready
Support underscores in RPMTAG names
Fix 4.20 regression signature size reservation not being used ([\#3768](https://github.com/rpm-software-management/rpm/issues/3768))
Fix alternatives mechanism unintentionally kicking in for signatures (\#3872)
Fix keystore reads lacking transaction lock
Fix a race condition in
Fix recursion depth for macro error message ([\#3197](https://github.com/rpm-software-management/rpm/issues/3197))
Fix empty password field in passwd/group causing entry to be ignored
# API Changes
New functions related to rpmKeyring:
rpmKeyringInitIterator(), rpmKeyringIteratorNext(), rpmKeyringIteratorFree() for iterating over keyring contents`rpmKeyringVerifySig2()`
rpmKeyringLookupKey() for finding a key in a keyring`rpmKeyringModify()`
New functions related to rpmPubkey:
`rpmPubkeyFingperint()`, `rpmPubkeyFingerprintAsHex()`, `rpmPubkeyKeyIDAsHex()` and `rpmPubkeyArmorWrap()` accessors
rpmPubkeyMerge() for merging two pubkeys describing the same keyNew functions for managing transaction permanent keystore:
rpmtxnImportPubkey() for importing keys`rpmtxnDeletePubkey()` for deleting pubkey’s from transaction keystore
rpmtxnRebuildKeystore() for rebuilding transaction keystoreNew flags to control `rpmSign()` operation added: `RPMSIGN_FLAG_RESIGN`, `RPMSIGN_FLAG_RPMV4`, `RPMSIGN_FLAG_RPMV6`
New functions for controlling per-package verification level:
`rpmteVfyLevel()` and `rpmteSetVfyLevel()`
te.VfyLevel() and te.SetVfyLevel() in the Python bindingsNew identifiers related to multiple signature support added:
RPMTAG_OPENPGP rpm tag`RPMSIGTAG_OPENPGP` signature header tag (alias to `RPMTAG_OPENPGP`)
RPMVSF_NOOPENPGP verification flagNew rpm tags: `RPMTAG_PAYLOADSIZE`, `RPMTAG_PAYLOADSIZEALT`, `RPMTAG_RPMFORMAT`, `RPMTAG_FILEMIMEINDEX`, `RPMTAG_MIMEDICT`, `RPMTAG_FILEMIMES`, `RPMTAG_SOURCENEVR`, `RPMTAG_PAYLOADSHA512`, `RPMTAG_PAYLOADSHA512ALT`, `RPMTAG_PAYLOADSHA3_256`, `RPMTAG_PAYLOADSHA3_256ALT`, `RPMTAG_SHA3_256HEADER`
Renamed rpm tags:
`RPMTAG_PAYLOADDIGEST` to `RPMTAG_PAYLOADSHA256`
RPMTAG_PAYLOADDIGESTALT to RPMTAG_PAYLOADSHA256ALT`RPMTAG_PAYLOADDIGESTALGO` to `RPMTAG_PAYLOADSHA256ALGO` (obsolete)
New identifiers related to SHA-3 added:
RPM_HASH_SHA3_256, RPM_HASH_SHA3_512New symbols related to MIME types in v6 packages:
rpmfilesFMime(), rpmfiFMime() for retrieving per-file MIME info`RPMFI_NOFILEMIME` flag to control behavior
New OpenPGP identifiers related to RFC-9580 added
New `pgpDigParamsSalt()` function retrieving OpenPGP v6 signature pre-salt ([\#3846](https://github.com/rpm-software-management/rpm/issues/3846))
New
rpmDigestBundleUpdateID() function for updating individual ID’s in a digest bundle (\#3845)`rpmtsAddInstallElement()` returns `3` on unsupported package format
fdSize() returns an error on non-regular files# Internal Improvements
RPM is now built as C++20 code (except for plugins and Python bindings)
More background available in the initial announcement
All relevant sources have been renamed to `.cc` or `.hh` extension
Many dynamic data structures moved to STL and other similar refactorings
Numerous improvements to the test-suite
Simplify test creation
Add an actual keystore abstraction
New
openpgp.cert.d based keystore (experimental) (\#3341)New `make site` build target for easy local rendering of documentation
Make reference counting atomic throughout the codebase
Make the test-suite image `toolbox(1)` ready
Support underscores in RPMTAG names
Fix 4.20 regression signature size reservation not being used ([\#3768](https://github.com/rpm-software-management/rpm/issues/3768))
Fix alternatives mechanism unintentionally kicking in for signatures (\#3872)
Fix keystore reads lacking transaction lock
Fix a race condition in
rpmioMkpath() (\#3508)Fix recursion depth for macro error message ([\#3197](https://github.com/rpm-software-management/rpm/issues/3197))
Fix empty password field in passwd/group causing entry to be ignored
GitHub
rpmbuild still supports --nodirtokens · Issue #3927 · rpm-software-management/rpm
--nodirtokens is 20+ years obsolete, time to rip it and its support code out from librpmbuild.
(\#3594)
Fix built-in macros not usable before loading macro files ([\#3638](https://github.com/rpm-software-management/rpm/issues/3638))
Fix
Fix pseudo-tags without an associated type showing up in –querytags
Fix rpm install prefix not honored in the legacy
Fix Python reference leaks related to archive handling
Fix non-deterministic storage of dependency information in packages (\#1056)
Fix `sysusers` noscript escaping chroot for `u!` entires
Fix RPM 4.19 regression on failed update return code (\#3718)
Issue a warning on `macrofiles` entry in an `rpmrc` ([\#3901](https://github.com/rpm-software-management/rpm/issues/3901))
Recreate the transaction lock file after
Drop `gpg(keyid)` provides from gpg-pubkey headers ([\#3360](https://github.com/rpm-software-management/rpm/issues/3360))
Eliminate various internal symbols accidentally leaking to the ABI
Eliminate uses of non-portable `signal(2)` API ([\#3688](https://github.com/rpm-software-management/rpm/issues/3688))
Optimize
Python bindings:
Support Python module isolation (RhBug:2327289)
Fix some resource leaks, run tests with ASAN
# Building RPM
A C++20 compiler is now required in addition to a C99 compiler, but C++20 modules support is not required.
rpm-sequoia >= 1.9.0 is now required for building with Sequoia (default)
Python >= 3.10 is now required for building the Python bindings
[scdoc](https://git.sr.ht/~sircmpwn/scdoc) man page generator is now required for building RPM
Pre-built API documentation is no longer shipped in the release tarballs. Building it is optional, but Doxygen is required for doing so. Pre-built API documentation for all releases can be found in https://ftp.rpm.org/api/
# Compatibility Notes
# Package format
New RPM v6 package format
All file sizes and related limits are 64bit
Crypto modernization
Obsolete crypto (MD5 and SHA1) dropped
SHA3-256 header digest added ([\#3797](https://github.com/rpm-software-management/rpm/issues/3797))
SHA512 and SHA3-256 payload digests added (#3642, #3894)
Per-file MIME info
Widely compatible with RPM >= 4.14
The “external” dependency generator mode no longer supported with v6 packages ([\#2373](https://github.com/rpm-software-management/rpm/issues/2373))
Can be queried with RPM >= 4.6
Can be unpacked with RPM >= 4.12
Can be verified and installed with RPM >= 4.14 (with caveats/limitations)
RPM v4 packages:
Built packages are identical to those generated by RPM 4.x versions
Remain fully supported
In the default configuration, packages built with RPM < 4.14.0 cannot be verified due to their use of weak, obsolete MD5 and SHA1 digests. For strongly signed packages, this can be worked around by changing `%_pkgverify_level` to `signature` so the weak digests are simply ignored. If verifying the weak digests is necessary, the RPM 4.x behavior can be restored by setting `%_pkgverify_flags` to `0`.
Support for installing RPM v3 packages has been removed. (\#1107) They can still be queried and also unpacked with rpm2cpio(1).
RPM defaults to building v6 packages, this can be changed with the `%_rpmformat` macro.
Lua
Fix built-in macros not usable before loading macro files ([\#3638](https://github.com/rpm-software-management/rpm/issues/3638))
Fix
fdSize() failure handling in rpmSign()Fix pseudo-tags without an associated type showing up in –querytags
Fix rpm install prefix not honored in the legacy
find-provides and find-requires dependency generator noscriptsFix Python reference leaks related to archive handling
Fix non-deterministic storage of dependency information in packages (\#1056)
Fix `sysusers` noscript escaping chroot for `u!` entires
Fix RPM 4.19 regression on failed update return code (\#3718)
Issue a warning on `macrofiles` entry in an `rpmrc` ([\#3901](https://github.com/rpm-software-management/rpm/issues/3901))
Recreate the transaction lock file after
--rebuilddb (\#3886)Drop `gpg(keyid)` provides from gpg-pubkey headers ([\#3360](https://github.com/rpm-software-management/rpm/issues/3360))
Eliminate various internal symbols accidentally leaking to the ABI
Eliminate uses of non-portable `signal(2)` API ([\#3688](https://github.com/rpm-software-management/rpm/issues/3688))
Optimize
rpmlog() lockingPython bindings:
Support Python module isolation (RhBug:2327289)
Fix some resource leaks, run tests with ASAN
# Building RPM
A C++20 compiler is now required in addition to a C99 compiler, but C++20 modules support is not required.
rpm-sequoia >= 1.9.0 is now required for building with Sequoia (default)
Python >= 3.10 is now required for building the Python bindings
[scdoc](https://git.sr.ht/~sircmpwn/scdoc) man page generator is now required for building RPM
Pre-built API documentation is no longer shipped in the release tarballs. Building it is optional, but Doxygen is required for doing so. Pre-built API documentation for all releases can be found in https://ftp.rpm.org/api/
# Compatibility Notes
# Package format
New RPM v6 package format
All file sizes and related limits are 64bit
Crypto modernization
Obsolete crypto (MD5 and SHA1) dropped
SHA3-256 header digest added ([\#3797](https://github.com/rpm-software-management/rpm/issues/3797))
SHA512 and SHA3-256 payload digests added (#3642, #3894)
Per-file MIME info
Widely compatible with RPM >= 4.14
The “external” dependency generator mode no longer supported with v6 packages ([\#2373](https://github.com/rpm-software-management/rpm/issues/2373))
rpmlib() dependencies for pre-4.6 features removed to reduce clutter (\#3854)Can be queried with RPM >= 4.6
Can be unpacked with RPM >= 4.12
Can be verified and installed with RPM >= 4.14 (with caveats/limitations)
RPM v4 packages:
Built packages are identical to those generated by RPM 4.x versions
Remain fully supported
In the default configuration, packages built with RPM < 4.14.0 cannot be verified due to their use of weak, obsolete MD5 and SHA1 digests. For strongly signed packages, this can be worked around by changing `%_pkgverify_level` to `signature` so the weak digests are simply ignored. If verifying the weak digests is necessary, the RPM 4.x behavior can be restored by setting `%_pkgverify_flags` to `0`.
Support for installing RPM v3 packages has been removed. (\#1107) They can still be queried and also unpacked with rpm2cpio(1).
RPM defaults to building v6 packages, this can be changed with the `%_rpmformat` macro.
Lua
posix.fork() family of calls, deprecated in 4.20, is disabled in packages built with RPM >= 6.0. TheyGitHub
rpm is unable to find existing group (>= 4.19.x regression) · Issue #3594 · rpm-software-management/rpm
Describe the bug rpm 4.20.x fails with ie: warning: group http does not exist - using root even though group exists: $ grep http /etc/group http::51:nginx To Reproduce Steps to reproduce the behavi...
continue to function in packages built by RPM <= 4.20 however.
# Other
Package signing key configuration differs from the past. To support other implementations besides GnuPG, the signer ID is now set via `%_openpgp_sign_id` macro, which defaults to `%{?_gpg_name}` for backwards compatibility.
The low-level package signing macros are now parametric, any custom
`%_passwd_path` and `%_group_path` are now treated as colon separated paths to allow using multiple files as the source of NSS information (e.g. with nss-altfiles)
https://redd.it/1noeyw9
@r_linux
# Other
Package signing key configuration differs from the past. To support other implementations besides GnuPG, the signer ID is now set via `%_openpgp_sign_id` macro, which defaults to `%{?_gpg_name}` for backwards compatibility.
The low-level package signing macros are now parametric, any custom
%__gpg_sign_cmd overrides will simply not work as such. Users are encouraged to look into dropping such overrides rather than just updating, most such overrides haven’t been necessary in a long time.`%_passwd_path` and `%_group_path` are now treated as colon separated paths to allow using multiple files as the source of NSS information (e.g. with nss-altfiles)
--pkgid and --hdrid query CLI-switches have been dropped (\#2633)https://redd.it/1noeyw9
@r_linux
GitHub
Eliminate --pkgid and --hdrid commandline switches · Issue #2633 · rpm-software-management/rpm
As pointed out by @dralley in #2374 (comment): we support indexed db queries for "pkgid" and "hdrid", which are actually backed by SIGMD5 and SHA1HEADER tags. These aren't r...
Software for audio CD ripping?
I wanted to create accurate (as close to perfect) digital replicas of some audio CDs. I saw that this would be done through ripping them into BIN/CUE files. I was wondering if there were any tools or anything that you guys would recommend to be used in this case? I am prioritising perfect replication over anything.
Edit: Just to clarify, this is not to extract audio files to listen to the tracks. I meant a digital replica that could be burned onto other CDs to make a perfect copy. So preserving every bit of data is needed.
https://redd.it/1nohn20
@r_linux
I wanted to create accurate (as close to perfect) digital replicas of some audio CDs. I saw that this would be done through ripping them into BIN/CUE files. I was wondering if there were any tools or anything that you guys would recommend to be used in this case? I am prioritising perfect replication over anything.
Edit: Just to clarify, this is not to extract audio files to listen to the tracks. I meant a digital replica that could be burned onto other CDs to make a perfect copy. So preserving every bit of data is needed.
https://redd.it/1nohn20
@r_linux
Reddit
From the linux community on Reddit
Explore this post and more from the linux community
New Patches Optimize EXT4 Online Defragmentation for Better Performance
A set of 13 patches were posted today to the Linux kernel mailing list for optimizing the online defragmentation handling by the EXT4 kernel driver. The online defragmentation improvements for EXT4 can net a nice performance win with a very significant improvement in a variety of scenarios.
Huawei engineer Zhang Yi posted the patches to the Linux kernel mailing list for improving the EXT4 file-system online defragmentation handling. Plus it's also working toward converting the EXT4 buffered I/O code for regular files over to the IOmap infrastructure. Zhang Yi explained with the LKML patch series:
* "Currently, the online defragmentation of the ext4 is primarily implemented through the move extent operation in the kernel. This extent-moving operates at the granularity of PAGE\_SIZE, iteratively performing extent swapping and data movement operations, which is quite inefficient. Especially since ext4 now supports large folios, iterations at the PAGE\_SIZE granularity are no longer practical and fail to leverage the advantages of large folios. Additionally, the current implementation is tightly coupled with buffer\_head, making it unable to support after the conversion of buffered I/O processes to the iomap infrastructure.
* This patch set (based on 6.17-rc7) optimizes the extent-moving process, deprecates the old move\_extent\_per\_page() interface, and introduces a new mext\_move\_extent() interface. The new interface iterates over and copies data based on the extents of the original file instead of the PAGE\_SIZE, and supporting large folios. The data processing logic in the iteration remains largely consistent with previous versions, with no additional optimizations or changes made.
* Additionally, the primary objective of this set of patches is to prepare for converting the buffered I/O process for regular files to the iomap infrastructure. These patches decouple the buffer\_head from the main extent-moving process, restricting its use to only the helpers mext\_folio\_mkwrite() and mext\_folio\_mkuptodate(), which handle updating and marking pages in the swapped page cache as dirty. The overall coding style of the extent-moving process aligns with the iomap infrastructure, laying the foundation for supporting online defragmentation once the iomap infrastructure is adopted."
The benchmarks included as part of [the patch series](https://lore.kernel.org/lkml/20250923012724.2378858-1-yi.zhang@huaweicloud.com/) are very enticing:
Some really solid wins at the different block sizes and both for written/unwritten extent moving.
Source: [New Patches Optimize EXT4 Online Defragmentation For Better Performance - Phoronix](https://www.phoronix.com/news/EXT4-Faster-Online-Defrag)
https://redd.it/1nomfjv
@r_linux
A set of 13 patches were posted today to the Linux kernel mailing list for optimizing the online defragmentation handling by the EXT4 kernel driver. The online defragmentation improvements for EXT4 can net a nice performance win with a very significant improvement in a variety of scenarios.
Huawei engineer Zhang Yi posted the patches to the Linux kernel mailing list for improving the EXT4 file-system online defragmentation handling. Plus it's also working toward converting the EXT4 buffered I/O code for regular files over to the IOmap infrastructure. Zhang Yi explained with the LKML patch series:
* "Currently, the online defragmentation of the ext4 is primarily implemented through the move extent operation in the kernel. This extent-moving operates at the granularity of PAGE\_SIZE, iteratively performing extent swapping and data movement operations, which is quite inefficient. Especially since ext4 now supports large folios, iterations at the PAGE\_SIZE granularity are no longer practical and fail to leverage the advantages of large folios. Additionally, the current implementation is tightly coupled with buffer\_head, making it unable to support after the conversion of buffered I/O processes to the iomap infrastructure.
* This patch set (based on 6.17-rc7) optimizes the extent-moving process, deprecates the old move\_extent\_per\_page() interface, and introduces a new mext\_move\_extent() interface. The new interface iterates over and copies data based on the extents of the original file instead of the PAGE\_SIZE, and supporting large folios. The data processing logic in the iteration remains largely consistent with previous versions, with no additional optimizations or changes made.
* Additionally, the primary objective of this set of patches is to prepare for converting the buffered I/O process for regular files to the iomap infrastructure. These patches decouple the buffer\_head from the main extent-moving process, restricting its use to only the helpers mext\_folio\_mkwrite() and mext\_folio\_mkuptodate(), which handle updating and marking pages in the swapped page cache as dirty. The overall coding style of the extent-moving process aligns with the iomap infrastructure, laying the foundation for supporting online defragmentation once the iomap infrastructure is adopted."
The benchmarks included as part of [the patch series](https://lore.kernel.org/lkml/20250923012724.2378858-1-yi.zhang@huaweicloud.com/) are very enticing:
Some really solid wins at the different block sizes and both for written/unwritten extent moving.
Source: [New Patches Optimize EXT4 Online Defragmentation For Better Performance - Phoronix](https://www.phoronix.com/news/EXT4-Faster-Online-Defrag)
https://redd.it/1nomfjv
@r_linux
Linux isn't (that) hard and is so awesome!!
New Linux user here that migrated off of Windows 10 to Linux Mint yesterday and I was shocked at how user-friendly and smooth both the transition process and actually using Linux is!
Yes, it is an adjustment and a learning curve, since Linux is NOT Windows or MacOS, but you can't fault the OS, as most people incurred the learning curve when they picked up their first Windows or MacOS PC all those years ago and most people are not exposed to Linux until a later age, if at all.
But I have to say there are SO many great guides online that walk you through exactly what you're inquiring about. Yes, there are more guides for Windows or MacOS in volume compared to Linux, but it's quality, not quantity. The Linux community is so knowledgeable and makes such great guides. Contrary to popular belief, I find the community to be even more hospitable with being open to helping.
Also, the way Linux functionally operates is such a refreshing new perspective on PC OS... I really dig the idea of having a "one-stop shop" Software Manager, similar to the Apple App Store or the Google Play Store on Mobile OS.
Lastly, the command Terminal may seem intimidating to non-techy people (believe me, I'm a normie), but it feels so badass and cool to use... I've used so much ChatGPT, DeepSeek, etc. to help me prompt out commands to achieve what I want to achieve and I really feel the power in my hands.
I love Linux!! I have had no trouble as well with getting setup and meeting my gaming needs on Linux, finding Linux software alternatives (e.g. LibreOffice), and even having Wine as an option (if you really need Windows).
I hope others and more people can be exposed to the magic of Linux and enjoy it, as Windows 10 support comes to an "end" in Oct 2025, and we all know how negative the perception of Windows 11 is. 😉
https://redd.it/1noqu7w
@r_linux
New Linux user here that migrated off of Windows 10 to Linux Mint yesterday and I was shocked at how user-friendly and smooth both the transition process and actually using Linux is!
Yes, it is an adjustment and a learning curve, since Linux is NOT Windows or MacOS, but you can't fault the OS, as most people incurred the learning curve when they picked up their first Windows or MacOS PC all those years ago and most people are not exposed to Linux until a later age, if at all.
But I have to say there are SO many great guides online that walk you through exactly what you're inquiring about. Yes, there are more guides for Windows or MacOS in volume compared to Linux, but it's quality, not quantity. The Linux community is so knowledgeable and makes such great guides. Contrary to popular belief, I find the community to be even more hospitable with being open to helping.
Also, the way Linux functionally operates is such a refreshing new perspective on PC OS... I really dig the idea of having a "one-stop shop" Software Manager, similar to the Apple App Store or the Google Play Store on Mobile OS.
Lastly, the command Terminal may seem intimidating to non-techy people (believe me, I'm a normie), but it feels so badass and cool to use... I've used so much ChatGPT, DeepSeek, etc. to help me prompt out commands to achieve what I want to achieve and I really feel the power in my hands.
I love Linux!! I have had no trouble as well with getting setup and meeting my gaming needs on Linux, finding Linux software alternatives (e.g. LibreOffice), and even having Wine as an option (if you really need Windows).
I hope others and more people can be exposed to the magic of Linux and enjoy it, as Windows 10 support comes to an "end" in Oct 2025, and we all know how negative the perception of Windows 11 is. 😉
https://redd.it/1noqu7w
@r_linux
Reddit
From the linux community on Reddit
Explore this post and more from the linux community