<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[LinuxNews.Dev 🐧]]></title><description><![CDATA[LinuxNews.Dev covers linux kernel developments, systems engineering, system design and open-source innovations, tailored for developers, sysadmins, and enthusiasts.]]></description><link>https://blog.linuxnews.dev</link><image><url>https://substackcdn.com/image/fetch/$s_!Ka5C!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0c61458-4d0a-441c-b557-98aca3e7b9ab_256x256.png</url><title>LinuxNews.Dev 🐧</title><link>https://blog.linuxnews.dev</link></image><generator>Substack</generator><lastBuildDate>Wed, 06 May 2026 09:20:21 GMT</lastBuildDate><atom:link href="https://blog.linuxnews.dev/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[LinuxNews.Dev]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[linuxnews.dev@gmail.com]]></webMaster><itunes:owner><itunes:email><![CDATA[linuxnews.dev@gmail.com]]></itunes:email><itunes:name><![CDATA[Linuxdev]]></itunes:name></itunes:owner><itunes:author><![CDATA[Linuxdev]]></itunes:author><googleplay:owner><![CDATA[linuxnews.dev@gmail.com]]></googleplay:owner><googleplay:email><![CDATA[linuxnews.dev@gmail.com]]></googleplay:email><googleplay:author><![CDATA[Linuxdev]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Linux-next Changing Maintainership]]></title><description><![CDATA[Stephen Rothwell will be stepping down as a linux-next maintainer and Mark Brown will take over - Stephen sent an email yesterday to linux-next mailing list.]]></description><link>https://blog.linuxnews.dev/p/linux-next-changing-maintainership</link><guid isPermaLink="false">https://blog.linuxnews.dev/p/linux-next-changing-maintainership</guid><dc:creator><![CDATA[Linuxdev]]></dc:creator><pubDate>Fri, 19 Dec 2025 01:41:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!FA-Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3224f14-5adc-491b-8581-e909f6b13999_736x364.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Stephen Rothwell will be stepping down as a linux-next maintainer and Mark Brown will take over - Stephen sent an <a href="https://lore.kernel.org/all/20251218180721.20eb878e@canb.auug.org.au/">email yesterday to linux-next mailing list</a>.<br><br>Thanks to Stephen for all these years for maintaining linux-next. It has definitely been helpful to the kernel development process.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FA-Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3224f14-5adc-491b-8581-e909f6b13999_736x364.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FA-Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3224f14-5adc-491b-8581-e909f6b13999_736x364.png 424w, https://substackcdn.com/image/fetch/$s_!FA-Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3224f14-5adc-491b-8581-e909f6b13999_736x364.png 848w, https://substackcdn.com/image/fetch/$s_!FA-Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3224f14-5adc-491b-8581-e909f6b13999_736x364.png 1272w, https://substackcdn.com/image/fetch/$s_!FA-Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3224f14-5adc-491b-8581-e909f6b13999_736x364.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FA-Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3224f14-5adc-491b-8581-e909f6b13999_736x364.png" width="736" height="364" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a3224f14-5adc-491b-8581-e909f6b13999_736x364.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:364,&quot;width&quot;:736,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:66698,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.linuxnews.dev/i/182047157?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3224f14-5adc-491b-8581-e909f6b13999_736x364.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FA-Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3224f14-5adc-491b-8581-e909f6b13999_736x364.png 424w, https://substackcdn.com/image/fetch/$s_!FA-Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3224f14-5adc-491b-8581-e909f6b13999_736x364.png 848w, https://substackcdn.com/image/fetch/$s_!FA-Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3224f14-5adc-491b-8581-e909f6b13999_736x364.png 1272w, https://substackcdn.com/image/fetch/$s_!FA-Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3224f14-5adc-491b-8581-e909f6b13999_736x364.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><br><br><br><br><br></p>]]></content:encoded></item><item><title><![CDATA[v6.19-rc1: Filesystem, Storage and Block layer updates]]></title><description><![CDATA[Linus just now announced v6.19-rc1 kernel release on a usual Sunday afternoon and here are the Filesystem, Storage and Block layer updates]]></description><link>https://blog.linuxnews.dev/p/v619-rc1-filesystem-storage-and-block-updates</link><guid isPermaLink="false">https://blog.linuxnews.dev/p/v619-rc1-filesystem-storage-and-block-updates</guid><dc:creator><![CDATA[Linuxdev]]></dc:creator><pubDate>Sun, 14 Dec 2025 14:41:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ybiR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f6eac74-ae24-4a8c-ae2e-bd87269100c9_1640x924.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ybiR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f6eac74-ae24-4a8c-ae2e-bd87269100c9_1640x924.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ybiR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f6eac74-ae24-4a8c-ae2e-bd87269100c9_1640x924.png 424w, https://substackcdn.com/image/fetch/$s_!ybiR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f6eac74-ae24-4a8c-ae2e-bd87269100c9_1640x924.png 848w, https://substackcdn.com/image/fetch/$s_!ybiR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f6eac74-ae24-4a8c-ae2e-bd87269100c9_1640x924.png 1272w, https://substackcdn.com/image/fetch/$s_!ybiR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f6eac74-ae24-4a8c-ae2e-bd87269100c9_1640x924.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ybiR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f6eac74-ae24-4a8c-ae2e-bd87269100c9_1640x924.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5f6eac74-ae24-4a8c-ae2e-bd87269100c9_1640x924.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:443290,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.linuxnews.dev/i/181578967?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f6eac74-ae24-4a8c-ae2e-bd87269100c9_1640x924.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!ybiR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f6eac74-ae24-4a8c-ae2e-bd87269100c9_1640x924.png 424w, https://substackcdn.com/image/fetch/$s_!ybiR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f6eac74-ae24-4a8c-ae2e-bd87269100c9_1640x924.png 848w, https://substackcdn.com/image/fetch/$s_!ybiR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f6eac74-ae24-4a8c-ae2e-bd87269100c9_1640x924.png 1272w, https://substackcdn.com/image/fetch/$s_!ybiR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f6eac74-ae24-4a8c-ae2e-bd87269100c9_1640x924.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Linus just now announced <a href="https://lore.kernel.org/all/CAHk-=wgizos80st3bL3EoEoh0+07u9zRjsw45M+RS-js-bcwag@mail.gmail.com/">v6.19-rc1 kernel release</a> on a usual Sunday afternoon.<br>This brings a number of features across various subsystems. This article tries<br>to cover some of the filesystem, storage and block level updates:</p><ul><li><p><strong><a href="https://lore.kernel.org/all/20251203043228.GA1712448@mit.edu/">EXT4 filesystem updates</a></strong></p><ul><li><p>EXT4 continues to march towards iomap conversion, which is a modern filesystem framework providing generic filesystem centric block mapping abstractions to efficiently handle I/O. </p><p>In v6.19, EXT4 got some good optimizations for it&#8217;s online de-fragmentation code by moving away from PAGE_SIZE based data movement and extent swapping <code>move_extent_per_page</code> to folio based <code>mext_move_extent()</code>.</p><p><a href="https://lore.kernel.org/lkml/20241125114419.903270-1-yi.zhang@huaweicloud.com/">EXT4 had added large folio support in v6.16 kernel</a>. That means, this new interface allows for iterating over and copying the data based on the extents of the original file instead of PAGE_SIZE thereby utilizing large folios. This makes ext4 a step closer towards iomap conversion. Additionally there are some good performance improvements too as mentioned by the author in <a href="https://lore.kernel.org/linux-ext4/20251013015128.499308-1-yi.zhang@huaweicloud.com/#t">this patch series</a>.</p></li><li><p><a href="https://lore.kernel.org/all/20251121090654.631996-1-libaokun@huaweicloud.com/">EXT4 also got the support for large blocksize (bs &gt; ps) in v6.19.</a></p><blockquote><p>Since large folios are already supported for regular files, the required</p><p>changes are not substantial, but they are scattered across the code. The</p><p>changes primarily focus on cleaning up potential division-by-zero errors,</p><p>resolving negative left/right shifts, and correctly handling mutually</p><p>exclusive mount options.</p></blockquote></li></ul><p></p></li><li><p><strong><a href="https://lore.kernel.org/all/cover.1764293730.git.dsterba@suse.com/">BTRFS Updates</a></strong></p><ul><li><p>Added shutdown ioctl support as experimental similar to other filesystems</p></li><li><p>Suspend trigger will now cancel scrub and device replace. scrub state will be saved and will be initiated from where it left off. Device replace however will have to be re-started from the beginning.</p></li><li><p>zone stats exported in sysfs, from the perspective of the filesystem this includes active, reclaimable, relocation etc zones</p></li><li><p>improvements when processing space reservation tickets by optimizing locking and shrinking critical sections, cumulative improvements in lockstat numbers show +15%</p></li><li><p>Added more filesystem operations for blocksize &gt; pagesize support</p></li><li><p>Prep work for fscrypt support</p></li><li><p>Other bug fixes and improvements</p></li></ul></li></ul><ul><li><p><a href="https://lore.kernel.org/all/2lje5mt266gixlqrnqfnkrmcxwjdnu72emnz2gywn2hs5r4z7r@zuyoxysv2uxq/">XFS had no major changes except few cleanups, bug fixes and documentation update</a></p></li></ul><ul><li><p><strong><a href="https://lore.kernel.org/all/20251128-vfs-iomap-v619-1b28bca81324@brauner/">VFS/iomap updates</a></strong></p><p><strong>FUSE added iomap support for it&#8217;s buffered read and readahead operation</strong>:<br>FUSE had adopted iomap for buffered write operations in v6.17. In this release, it extended that support by adopting iomap for it&#8217;s buffered read and readahead operations too.</p><ul><li><p><a href="https://lore.kernel.org/all/20250715202122.2282532-1-joannelkoong@gmail.com/">Background: v6.17 buffered write support:</a><br>In v6.17, FUSE transitioned its buffered write operations to use iomap,<br>unlocking two key advantages:</p><p><strong>Granular large folio synchronous reads</strong>: For example, with a 1 MB large folio,</p><p>a write issued from position 1 to position 1 MB - 2 only requires reading and</p><p>marking the head and tail pages as uptodate, rather than reading the entire</p><p>folio. Non-relevant trailing pages are also skipped.</p><p><strong>Granular large folio dirty tracking</strong>: During writeback, only the dirty portions</p><p>of a large folio need to be written instead of the entire folio. For instance,</p><p>if only 2 bytes in a 1 MB large folio are dirty, only the page containing those</p><p>bytes gets written out.<br><strong><a href="https://lore.kernel.org/all/20250926002609.1302233-1-joannelkoong@gmail.com/">In v6.19 Updates</a></strong></p><p>FUSE now extends iomap support for buffered reads and readahead operations. To enable this, <strong>struct iomap_read_ops</strong> and <strong>struct iomap_read_folio_ctx</strong> were added. <br><code>struct iomap_read_ops</code>: Allows callers to provide custom <code>&#8594;read_folio_range</code> and <code>&#8594;submit_read </code>callbacks</p><p><code>struct iomap_read_folio_ctx</code>: Context structure for managing read operations with caller-specific behavior<br><br>FUSE now implements <code>fuse_iomap_read_folio_range</code> to handle buffered reads through iomap, enabling more granular non-uptodate reads when large folios are enabled. Instead of reading the entire folio, only the non-uptodate portions need to be read from the server, which improves performance.</p><blockquote><p>As per the pull request this feature is also needed for:</p><p>It also is needed in order to turn on large folios for servers that use the</p><p>writeback cache since otherwise there is a race condition that may lead to data corruption if there is a partial write, then a read and the read happens before the write has undergone writeback, since otherwise the folio will not be marked uptodate from the partial write so the read will read in the entire folio from disk, which will overwrite the partial write.</p></blockquote><p>For those who are curious, FUSE still hasn&#8217;t turned on the large folio support yet.</p><p></p></li><li><p><a href="https://lore.kernel.org/all/20251003134642.604736-1-bfoster@redhat.com/">iomap also added folio batch support for iomap_zero_range() to handle dirty</a></p><p><a href="https://lore.kernel.org/all/20251003134642.604736-1-bfoster@redhat.com/">folios over unwritten mappings.</a></p><p></p></li><li><p><a href="https://lore.kernel.org/all/20251113170633.1453259-1-hch@lst.de/">DIO Write Completions from Interrupt Context</a><br>iomap improved latencies in case of direct-io for high performance workloads like ScyllaDB: iomap instead of running the DIO completion processing inline, it used to offload it to a workqueue. This added a lot of context switching which at least on older kernels with workqueue scheduling issues caused really high tail latencies. This series queued in v6.19 ensures that the write completions can run inline (e.g. for pure overwrites) instead of being deferred to workqueues.</p></li></ul><p></p></li><li><p><strong><a href="https://lore.kernel.org/all/20251128-vfs-directory-locking-v619-311b82e68064@brauner/">VFS/directory locking updates</a></strong></p><p>Directory locking: NeilBrown continues to work towards adding support for</p><p>concurrent directory updates. The ultimate goal is to lock the target dentry(s) rather than the whole parent directory. To help with changing the locking protocol, this series centralizes locking and lookup in new helper functions.</p><p></p></li><li><p><strong><a href="https://lore.kernel.org/all/20251128-vfs-writeback-v619-24e0f5ebe21f@brauner/">VFS/writeback</a></strong></p><p><strong>Allow filesystems to increase the minimum writeback chunk size</strong>: To ensure fairness when flushing dirty pages, writeback logic switches between inodes after writing a minimum chunk of data. The default minimum writeback chunk size is 4 MiB. In v6.19, a new superblock field &#8220;<strong>s_min_writeback_pages</strong>&#8221; allows filesystems to override this default and increase the minimum writeback chunk size per inode. This could come beneficial for:</p><p><strong>Rotational media</strong>: Reduces seeks by writing larger contiguous chunks before switching between files</p><p><strong>Zoned storage devices</strong> (SMR HDDs and ZNS SSDs): Prevents file fragmentation and prevents unnecessary runs of GC!<br></p><p>XFS sets <code>s_min_writeback_pages</code> to the zone size for zoned filesystems,</p><p>ensuring that writeback writes at least one complete zone&#8217;s worth of data per</p><p>inode before switching, thereby eliminating spurious fragmentation and the</p><p>associated garbage collection overhead.</p><p></p></li><li><p><strong><a href="https://lore.kernel.org/all/20251128-vfs-folio-v619-e62bd8562ec0@brauner/">VFS/folio update</a></strong></p><p>Add a new folio_next_pos() helper function that returns the file position of the first byte after the current folio. This is a common operation in filesystems when needing to know the end of the current folio. This helper is lifted from btrfs which already had its own version, and is now used across multiple filesystems and subsystems</p><p></p></li><li><p><strong><a href="https://lore.kernel.org/all/e62f9ce3-00ae-4453-8047-1f938a5d51a3@kernel.dk/">Block Layer</a></strong></p><ul><li><p><a href="https://lore.kernel.org/all/34687025-4ddd-4d54-a910-557eb9090566@kernel.dk/">Enables per-cpu bio cache by default</a>:</p><p>block layer manages a per-cpu bio cache mainly for usecases like polling mode io-uring which can be latency criticial workloads. This caches allows to quickly recycle the bios instead of going through the slab allocator. This series now enables the per-cpu bio cache by default to all bio based I/O submissions.</p></li><li><p>Zoned device caching support: Added zone information caching to avoid unnecessary repeated zone report queries, improving performance for zoned</p><p>block devices (SMR/ZNS) </p></li><li><p>Polled I/O performance: Improved polled I/O handling speed by manually managing hardware context (hctx) lookups instead of using xarray</p></li><li><p>Block integrity improvements: Enhanced the auto-integrity code to be less</p><p>deadlock-prone and better handle Protection Information (PI) generation/validation</p></li><li><p>REQ_NOWAIT fixes: Corrected NOWAIT handling in loop/zloop drivers. The NOWAIT flag is now properly cleared when requests are punted to threads for handling. Also reverted loop DIO nowait support due to excessive stack usage issues</p></li><li><p>blk-throttle fixes: Improvements for SSD device throttling</p></li><li><p>ublk driver updates: Series of cleanups and simplifications to the user copy</p><p>code, laying groundwork for future batching support MD/RAID updates</p></li><li><p>Scheduler switching improvements: Restructured elevator I/O scheduler switching logic &amp; fixing lockdep warnings.</p></li><li><p>Block tracing for zoned devices: Added support for zoned device information in block layer tracing</p></li><li><p>Various other fixes and improvements.</p><p></p></li></ul></li><li><p><strong><a href="https://lore.kernel.org/all/aTc4QJ9A-0qKfBzM@google.com/">F2FS updates</a> (as per cover letter)</strong></p><p>This series focuses on minor clean-ups and performance optimizations across sysfs, documentation, debugfs, tracepoints, slab allocation, and GC. Furthermore, it resolves several corner-case bugs caught by xfstests, as well as issues related to 16KB page support and f2fs_enable_checkpoint.</p><p>Enhancement:</p><p>   - wrap ASCII tables in literal blocks to fix LaTeX build</p><p>   - optimize trace_f2fs_write_checkpoint with enums</p><p>   - support to show curseg.next_blkoff in debugfs</p><p>   - add a sysfs entry to show max open zones</p><p>   - add fadvise tracepoint</p><p>   - use global inline_xattr_slab instead of per-sb slab cache</p><p>   - set default valid_thresh_ratio to 80 for zoned devices</p><p>   - maintain one time GC mode is enabled during whole zoned GC cycle</p><p>   - Other bug fixes and improvements</p><p></p></li><li><p><strong><a href="https://lore.kernel.org/all/20251203124228.6082-1-almaz.alexandrovich@paragon-software.com/">NTFS3 updates</a> (as per cover letter)</strong></p><p>   - support timestamps prior to epoch</p><p>   - do not overwrite uptodate pages</p><p>   - disable readahead for compressed files</p><p>   - setting of dummy blocksize to read boot_block when mounting</p><p>   - the run_lock initialization when loading $Extend</p><p>   - initialization of allocated memory before use</p><p>   - support for the NTFS3_IOC_SHUTDOWN ioctl</p><p>   - check for minimum alignment when performing direct I/O reads</p><p>   - check for shutdown in fsync<br>   - Other bug fixes and improvements</p></li></ul><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Kernel Meetup Bangalore - Final Edition 2025]]></title><description><![CDATA[The last Kernel Bangalore meetup for 2025 is here.]]></description><link>https://blog.linuxnews.dev/p/kernel-meetup-bangalore-final-edition-2025</link><guid isPermaLink="false">https://blog.linuxnews.dev/p/kernel-meetup-bangalore-final-edition-2025</guid><dc:creator><![CDATA[Linuxdev]]></dc:creator><pubDate>Tue, 02 Dec 2025 08:29:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!GvIL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0151851-05be-40ce-bde1-fe81d104d05b_1980x1338.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The last Kernel Bangalore meetup for 2025 is here. Here are the registration, venue and meetup schedule details.</p><p><strong>Registeration link:</strong> <br><a href="https://my.weezevent.com/bangalore-kernel-meetup-december-2025">https://my.weezevent.com/bangalore-kernel-meetup-december-2025</a></p><p><strong>Event venue &amp; other Details:</strong><br>&#8226; Date: Dec 6, 2025<br>&#8226; Time: 9:00 a.m. &#8211; 2:30 p.m.<br>&#8226; Venue: Red Hat India Pvt. Ltd.<br>&#8226; Address: Carina Building, 10th Floor East,<br>Bagmane Constellation Business Park,<br>Doddanekkundi, Bengaluru, Karnataka 560037.<br><br><em>(Follow the google group page for more details: https://groups.google.com/g/kernel-meetup-bangalore)</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GvIL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0151851-05be-40ce-bde1-fe81d104d05b_1980x1338.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GvIL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0151851-05be-40ce-bde1-fe81d104d05b_1980x1338.png 424w, https://substackcdn.com/image/fetch/$s_!GvIL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0151851-05be-40ce-bde1-fe81d104d05b_1980x1338.png 848w, https://substackcdn.com/image/fetch/$s_!GvIL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0151851-05be-40ce-bde1-fe81d104d05b_1980x1338.png 1272w, https://substackcdn.com/image/fetch/$s_!GvIL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0151851-05be-40ce-bde1-fe81d104d05b_1980x1338.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GvIL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0151851-05be-40ce-bde1-fe81d104d05b_1980x1338.png" width="1456" height="984" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d0151851-05be-40ce-bde1-fe81d104d05b_1980x1338.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:984,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:296466,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.linuxnews.dev/i/180482470?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0151851-05be-40ce-bde1-fe81d104d05b_1980x1338.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GvIL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0151851-05be-40ce-bde1-fe81d104d05b_1980x1338.png 424w, https://substackcdn.com/image/fetch/$s_!GvIL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0151851-05be-40ce-bde1-fe81d104d05b_1980x1338.png 848w, https://substackcdn.com/image/fetch/$s_!GvIL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0151851-05be-40ce-bde1-fe81d104d05b_1980x1338.png 1272w, https://substackcdn.com/image/fetch/$s_!GvIL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0151851-05be-40ce-bde1-fe81d104d05b_1980x1338.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1></h1><p></p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Bcachefs now “Externally Maintained”]]></title><description><![CDATA[Couple of days before Linus quietly marked Bcachefs as &#8220;Externally Maintained&#8221;.]]></description><link>https://blog.linuxnews.dev/p/bcachefs-now-externally-maintained</link><guid isPermaLink="false">https://blog.linuxnews.dev/p/bcachefs-now-externally-maintained</guid><dc:creator><![CDATA[Linuxdev]]></dc:creator><pubDate>Sun, 31 Aug 2025 03:18:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!bsdh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab79cc9d-b7df-4651-9aba-d58fee318f28_1600x896.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bsdh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab79cc9d-b7df-4651-9aba-d58fee318f28_1600x896.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bsdh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab79cc9d-b7df-4651-9aba-d58fee318f28_1600x896.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bsdh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab79cc9d-b7df-4651-9aba-d58fee318f28_1600x896.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bsdh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab79cc9d-b7df-4651-9aba-d58fee318f28_1600x896.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bsdh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab79cc9d-b7df-4651-9aba-d58fee318f28_1600x896.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bsdh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab79cc9d-b7df-4651-9aba-d58fee318f28_1600x896.jpeg" width="1456" height="815" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab79cc9d-b7df-4651-9aba-d58fee318f28_1600x896.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:815,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:62001,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.linuxnews.dev/i/172378291?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab79cc9d-b7df-4651-9aba-d58fee318f28_1600x896.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bsdh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab79cc9d-b7df-4651-9aba-d58fee318f28_1600x896.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bsdh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab79cc9d-b7df-4651-9aba-d58fee318f28_1600x896.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bsdh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab79cc9d-b7df-4651-9aba-d58fee318f28_1600x896.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bsdh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab79cc9d-b7df-4651-9aba-d58fee318f28_1600x896.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Couple of days before Linus quietly marked Bcachefs as &#8220;Externally Maintained&#8221;. This means bcachefs will continue to stay in Linux Kernel for it&#8217;s existing users but won&#8217;t see any updates from here on. <br>Bcachefs maintainer would mostly maintain it externally as an out-of-tree filesystem module. </p><p><br><br></p>]]></content:encoded></item><item><title><![CDATA[Linux 6.17-rc2 is out]]></title><description><![CDATA[Linus released a smaller-than-usual 6.17-rc2 this week, calling it "one of the smaller rc2 releases we've had lately." The release focuses primarily on driver fixes with the largest change being removal of the drbd page pool code from the block subsystem.]]></description><link>https://blog.linuxnews.dev/p/linux-6-17-rc2-is-out</link><guid isPermaLink="false">https://blog.linuxnews.dev/p/linux-6-17-rc2-is-out</guid><dc:creator><![CDATA[Linuxdev]]></dc:creator><pubDate>Mon, 18 Aug 2025 07:45:05 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ieMp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0086ed92-9f97-4b96-bc91-a3261f8332c0_860x779.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><p>Linus released a smaller-than-usual <a href="https://lore.kernel.org/all/CAHk-=wiLHgdvJQkEW-pHcUuXOBJ9JOoKcZkzMaPSW60_-Mh90A@mail.gmail.com/#r">6.17-rc2 this week</a>, calling it "one of the smaller rc2 releases we've had lately." The release focuses primarily on driver fixes with the largest change being removal of the drbd page pool code from the block subsystem.</p><p>Key areas addressed:</p><ul><li><p><strong>Drivers</strong>: Block, GPU, networking, sound, SCSI, and FireWire fixes</p></li><li><p><strong>Filesystems</strong>: Updates to SMB, XFS, EROFS, and Btrfs</p></li><li><p><strong>Networking</strong>: Core networking fixes plus new selftests</p></li><li><p><strong>Architecture</strong>: Mainly x86 fixes</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ieMp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0086ed92-9f97-4b96-bc91-a3261f8332c0_860x779.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ieMp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0086ed92-9f97-4b96-bc91-a3261f8332c0_860x779.png 424w, https://substackcdn.com/image/fetch/$s_!ieMp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0086ed92-9f97-4b96-bc91-a3261f8332c0_860x779.png 848w, https://substackcdn.com/image/fetch/$s_!ieMp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0086ed92-9f97-4b96-bc91-a3261f8332c0_860x779.png 1272w, https://substackcdn.com/image/fetch/$s_!ieMp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0086ed92-9f97-4b96-bc91-a3261f8332c0_860x779.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ieMp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0086ed92-9f97-4b96-bc91-a3261f8332c0_860x779.png" width="860" height="779" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0086ed92-9f97-4b96-bc91-a3261f8332c0_860x779.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:779,&quot;width&quot;:860,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:178143,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.linuxnews.dev/i/171248826?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0086ed92-9f97-4b96-bc91-a3261f8332c0_860x779.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ieMp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0086ed92-9f97-4b96-bc91-a3261f8332c0_860x779.png 424w, https://substackcdn.com/image/fetch/$s_!ieMp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0086ed92-9f97-4b96-bc91-a3261f8332c0_860x779.png 848w, https://substackcdn.com/image/fetch/$s_!ieMp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0086ed92-9f97-4b96-bc91-a3261f8332c0_860x779.png 1272w, https://substackcdn.com/image/fetch/$s_!ieMp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0086ed92-9f97-4b96-bc91-a3261f8332c0_860x779.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[User Virtual Address Space: arm64]]></title><description><![CDATA[&#128204; A must-have reference for Linux Kernel engineers]]></description><link>https://blog.linuxnews.dev/p/user-virtual-address-space-arm64</link><guid isPermaLink="false">https://blog.linuxnews.dev/p/user-virtual-address-space-arm64</guid><dc:creator><![CDATA[Linuxdev]]></dc:creator><pubDate>Mon, 18 Aug 2025 04:11:14 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!7hn-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3f051d-226c-4748-9f27-8747d0239a32_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>&#128204; A must-have reference for Linux Kernel engineers<br><br>&#129504; Key Highlights:<br>&#9989; Differences in kernel/user space division for a 48-bit VA<br>&#9989; Key memory segments (Text, Data, BSS, Heap, mmap, Stack)<br>&#9989; How these are mapped in mm_struct<br>&#9989; task_struct and mm_struct relationship<br>&#9989; Real /proc/&lt;pid&gt;/maps and GDB outputs for debugging/context<br></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7hn-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3f051d-226c-4748-9f27-8747d0239a32_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7hn-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3f051d-226c-4748-9f27-8747d0239a32_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!7hn-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3f051d-226c-4748-9f27-8747d0239a32_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!7hn-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3f051d-226c-4748-9f27-8747d0239a32_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!7hn-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3f051d-226c-4748-9f27-8747d0239a32_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7hn-!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3f051d-226c-4748-9f27-8747d0239a32_1280x720.png" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8e3f051d-226c-4748-9f27-8747d0239a32_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:221877,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.linuxnews.dev/i/171238915?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3f051d-226c-4748-9f27-8747d0239a32_1280x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7hn-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3f051d-226c-4748-9f27-8747d0239a32_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!7hn-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3f051d-226c-4748-9f27-8747d0239a32_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!7hn-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3f051d-226c-4748-9f27-8747d0239a32_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!7hn-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3f051d-226c-4748-9f27-8747d0239a32_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[Linux Kernel Virtual Address Space: arm64 ]]></title><description><![CDATA[&#128269; Kernel Virtual Address Space: aarch64 (Linux)]]></description><link>https://blog.linuxnews.dev/p/linux-kernel-virtual-address-space-arm64</link><guid isPermaLink="false">https://blog.linuxnews.dev/p/linux-kernel-virtual-address-space-arm64</guid><dc:creator><![CDATA[Linuxdev]]></dc:creator><pubDate>Fri, 15 Aug 2025 11:53:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zyUy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f0e2ecd-2507-4524-a38a-478c91efb9a6_1013x692.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>&#128269; Kernel Virtual Address Space: aarch64 (<strong>Linux</strong>)<br><br>&#129504; Key Highlights:<br>&#9989; Differences in kernel/user space division across 48-bit VA<br>&#9989; Placement of critical regions: kernel linear map, vmalloc, vmemmap, I/O, and fixmap<br><br>&#128204; A must-have reference for kernel engineers</p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zyUy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f0e2ecd-2507-4524-a38a-478c91efb9a6_1013x692.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zyUy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f0e2ecd-2507-4524-a38a-478c91efb9a6_1013x692.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zyUy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f0e2ecd-2507-4524-a38a-478c91efb9a6_1013x692.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zyUy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f0e2ecd-2507-4524-a38a-478c91efb9a6_1013x692.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zyUy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f0e2ecd-2507-4524-a38a-478c91efb9a6_1013x692.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zyUy!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f0e2ecd-2507-4524-a38a-478c91efb9a6_1013x692.jpeg" width="1200" height="819.7433366238895" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6f0e2ecd-2507-4524-a38a-478c91efb9a6_1013x692.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:692,&quot;width&quot;:1013,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;diagram&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="diagram" title="diagram" srcset="https://substackcdn.com/image/fetch/$s_!zyUy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f0e2ecd-2507-4524-a38a-478c91efb9a6_1013x692.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zyUy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f0e2ecd-2507-4524-a38a-478c91efb9a6_1013x692.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zyUy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f0e2ecd-2507-4524-a38a-478c91efb9a6_1013x692.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zyUy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f0e2ecd-2507-4524-a38a-478c91efb9a6_1013x692.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[task_struct relationship with kernel stack]]></title><description><![CDATA[Ever wondered how Linux tracks the currently running process?]]></description><link>https://blog.linuxnews.dev/p/task-struct-relationship-with-kernel-stack</link><guid isPermaLink="false">https://blog.linuxnews.dev/p/task-struct-relationship-with-kernel-stack</guid><dc:creator><![CDATA[Linuxdev]]></dc:creator><pubDate>Thu, 14 Aug 2025 19:18:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!akUR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4c407a1-d56f-4d41-815f-01dfaa04801e_1301x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Ever wondered how Linux tracks the currently running process? &#128039; <br>This diagram breaks down the relationship between <br>- task_struct<br>- thread_info<br>- thread_struct<br>- per task stack pointer<br>- struct pt_regs<br><br>and the per-process kernel stack across architectures like x86_64, ARM64, and PPC64. A neat peek under the kernel hood!"<br></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!akUR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4c407a1-d56f-4d41-815f-01dfaa04801e_1301x731.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!akUR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4c407a1-d56f-4d41-815f-01dfaa04801e_1301x731.png 424w, https://substackcdn.com/image/fetch/$s_!akUR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4c407a1-d56f-4d41-815f-01dfaa04801e_1301x731.png 848w, https://substackcdn.com/image/fetch/$s_!akUR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4c407a1-d56f-4d41-815f-01dfaa04801e_1301x731.png 1272w, https://substackcdn.com/image/fetch/$s_!akUR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4c407a1-d56f-4d41-815f-01dfaa04801e_1301x731.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!akUR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4c407a1-d56f-4d41-815f-01dfaa04801e_1301x731.png" width="1301" height="731" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d4c407a1-d56f-4d41-815f-01dfaa04801e_1301x731.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:731,&quot;width&quot;:1301,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:124244,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.linuxnews.dev/i/170998280?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4c407a1-d56f-4d41-815f-01dfaa04801e_1301x731.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!akUR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4c407a1-d56f-4d41-815f-01dfaa04801e_1301x731.png 424w, https://substackcdn.com/image/fetch/$s_!akUR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4c407a1-d56f-4d41-815f-01dfaa04801e_1301x731.png 848w, https://substackcdn.com/image/fetch/$s_!akUR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4c407a1-d56f-4d41-815f-01dfaa04801e_1301x731.png 1272w, https://substackcdn.com/image/fetch/$s_!akUR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4c407a1-d56f-4d41-815f-01dfaa04801e_1301x731.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><br></p>]]></content:encoded></item><item><title><![CDATA[Linux 6.17 second half of the merge window]]></title><description><![CDATA[Linus released 6.17-rc1 on August 10 and with that the merge window for 6.17 is now closed.]]></description><link>https://blog.linuxnews.dev/p/linux-6-17-second-half-merge-window</link><guid isPermaLink="false">https://blog.linuxnews.dev/p/linux-6-17-second-half-merge-window</guid><dc:creator><![CDATA[Linuxdev]]></dc:creator><pubDate>Mon, 11 Aug 2025 21:22:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!f9jp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4250b2aa-bd41-457e-a252-ea86e270ff32_949x738.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!f9jp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4250b2aa-bd41-457e-a252-ea86e270ff32_949x738.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!f9jp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4250b2aa-bd41-457e-a252-ea86e270ff32_949x738.png 424w, https://substackcdn.com/image/fetch/$s_!f9jp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4250b2aa-bd41-457e-a252-ea86e270ff32_949x738.png 848w, https://substackcdn.com/image/fetch/$s_!f9jp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4250b2aa-bd41-457e-a252-ea86e270ff32_949x738.png 1272w, https://substackcdn.com/image/fetch/$s_!f9jp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4250b2aa-bd41-457e-a252-ea86e270ff32_949x738.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!f9jp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4250b2aa-bd41-457e-a252-ea86e270ff32_949x738.png" width="949" height="738" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4250b2aa-bd41-457e-a252-ea86e270ff32_949x738.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:738,&quot;width&quot;:949,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:180170,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.linuxnews.dev/i/170725219?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4250b2aa-bd41-457e-a252-ea86e270ff32_949x738.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!f9jp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4250b2aa-bd41-457e-a252-ea86e270ff32_949x738.png 424w, https://substackcdn.com/image/fetch/$s_!f9jp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4250b2aa-bd41-457e-a252-ea86e270ff32_949x738.png 848w, https://substackcdn.com/image/fetch/$s_!f9jp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4250b2aa-bd41-457e-a252-ea86e270ff32_949x738.png 1272w, https://substackcdn.com/image/fetch/$s_!f9jp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4250b2aa-bd41-457e-a252-ea86e270ff32_949x738.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Linus released 6.17-rc1 on August 10 and with that the merge window for 6.17 is now closed. We had <a href="https://blog.linuxnews.dev/p/6-17-merge-window-mm-fs-updates">earlier covered the memory management and filesystems updates</a> from the initial merge window. <br><strong>Here are some of the other core subsystem updates for 6.17-rc1.</strong></p><p><strong><a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2988dfed8a5d">Block layer</a><br><a href="https://web.git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=459779d04ae8">Read&#8209;ahead tuned for hard drives</a></strong>: Rotational disks that don&#8217;t report an &#8220;optimal I/O size&#8221; now get a larger, smarter default read&#8209;ahead based on max I/O size. </p><blockquote><p>For a SCSI disk, this defaults to 2560 KB, which significantly improve performance for buffered reads. Using XFS and sequentially reading randomly selected (large) files stored on a SATA HDD, the maximum throughput achieved with 8 readers reading files with 1MB buffered I/Os increases from 122 MB/s to 167 MB/s (+36%). The improvement is even larger when reading files using 128 KB buffered I/Os, with a throughput increasing from 57 MB/s to 165 MB/s (+189%).</p></blockquote><p><strong><br><a href="https://web.git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0974f486f3dd">F2FS</a>:<br></strong>- Folio conversion<br>- added several sysfs entries to tune GCs for ZUFS<br>- Conversion to new mount apis</p><p><strong><br><a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6fb44438a5e1">ARM</a>:<br></strong>Host driver for GICv5, the next generation interrupt controller for arm64, including support for interrupt routing, MSIs, interrupt translation and wired interrupts</p><p><strong><br><a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=bec077162bd0">S390</a>:</strong><br>- Enable THP swapping and THP migration</p><p><strong><br><a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=da23ea194db9">MM (new)</a>:<br></strong>- <strong>Optimizations for khugepaged</strong>: Improve khugepaged throughput by batching PTE operations for large folios. This gain is mainly for arm64.</p><p><strong><br>Misc:<br></strong>- Make kdump more reliable by providing an extra crashkernel=XX<strong>,cma</strong> option to allow crashkernel to reserve extra memory from CMA area for it&#8217;s runtime overhead.<br>More details can be found <a href="https://lore.kernel.org/all/aEqnxxfLZMllMC8I@dwarf.suse.cz/T/#u">here</a>.<br>- A new <a href="https://web.git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f3d85c9ee510">struct netmem_desc</a> is introduced. This allows the page pool of netstack to refer to netmem_desc instead of struct page. This effort is a step towards <a href="https://kernelnewbies.org/MatthewWilcox/Memdescs">memdesc world</a>.</p><p><strong><br>Bcachefs:</strong><br>- No bcachefs pull request was merged this cycle. As some of you might know that expectations had already been <a href="https://lore.kernel.org/all/CAHk-=wgb=B_pGPSTw9y4Fw82y5V_mvzJp_0XcWanz7YRR5vkXA@mail.gmail.com/">tempered by a 6.16-rc4 note from Linus</a> - </p><blockquote><p>I have pulled this, but also as per that discussion, I think we&#8217;ll be parting ways in the 6.17 merge window&#8230;</p></blockquote><p>In the <a href="https://lore.kernel.org/all/22ib5scviwwa7bqeln22w2xm3dlywc4yuactrddhmsntixnghr@wjmmbpxjvipv/">6.17 Bcachefs pull request thread</a>, Kent added that he&#8217;d received an email from <a href="https://lore.kernel.org/all/5ip2wzfo32zs7uznaunpqj2bjmz3log4yrrdezo5audputkbq5@uoqutt37wmvp/">Linus saying</a> &#8220;<strong>we&#8217;re now talking about git rm -rf in 6.18</strong>&#8221;. Things definitely aren&#8217;t looking good for bcachefs users, given that <a href="https://blog.linuxnews.dev/p/bcachefs-setback-for-linux-6-13">this isn&#8217;t the first time bcachefs users have faced a setback. </a>Linus hasn&#8217;t responded anything on that thread yet. So we will have to wait until something is publicly announced on the future of bcachefs.</p><p><br>That wraps up the rest of 6.17&#8217;s merge window. As always with -rc1 now out, expect the usual shakedown and fixes over the next few weeks.</p>]]></content:encoded></item><item><title><![CDATA[6.17 Merge window - Memory Management & Filesystem Updates]]></title><description><![CDATA[Linux kernel v6.16 was released just last week, and the merge window for v6.17 is now open.]]></description><link>https://blog.linuxnews.dev/p/6-17-merge-window-mm-fs-updates</link><guid isPermaLink="false">https://blog.linuxnews.dev/p/6-17-merge-window-mm-fs-updates</guid><dc:creator><![CDATA[Linuxdev]]></dc:creator><pubDate>Sun, 03 Aug 2025 19:39:14 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!AS1b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93a6361a-1300-4d8d-914d-55b3a23a2238_1182x429.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AS1b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93a6361a-1300-4d8d-914d-55b3a23a2238_1182x429.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AS1b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93a6361a-1300-4d8d-914d-55b3a23a2238_1182x429.png 424w, https://substackcdn.com/image/fetch/$s_!AS1b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93a6361a-1300-4d8d-914d-55b3a23a2238_1182x429.png 848w, https://substackcdn.com/image/fetch/$s_!AS1b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93a6361a-1300-4d8d-914d-55b3a23a2238_1182x429.png 1272w, https://substackcdn.com/image/fetch/$s_!AS1b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93a6361a-1300-4d8d-914d-55b3a23a2238_1182x429.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AS1b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93a6361a-1300-4d8d-914d-55b3a23a2238_1182x429.png" width="1182" height="429" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/93a6361a-1300-4d8d-914d-55b3a23a2238_1182x429.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:429,&quot;width&quot;:1182,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:263673,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.linuxnews.dev/i/170019616?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93a6361a-1300-4d8d-914d-55b3a23a2238_1182x429.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AS1b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93a6361a-1300-4d8d-914d-55b3a23a2238_1182x429.png 424w, https://substackcdn.com/image/fetch/$s_!AS1b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93a6361a-1300-4d8d-914d-55b3a23a2238_1182x429.png 848w, https://substackcdn.com/image/fetch/$s_!AS1b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93a6361a-1300-4d8d-914d-55b3a23a2238_1182x429.png 1272w, https://substackcdn.com/image/fetch/$s_!AS1b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93a6361a-1300-4d8d-914d-55b3a23a2238_1182x429.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Linux kernel v6.16 was released just last week, and the merge window for v6.17 is now open. This release brings numerous improvements across various subsystems. In this article, we&#8217;ll provide more detail on the <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=beace86e61e4">memory management</a> and filesystem updates. A follow up article will cover changes in other areas like architecture, storage, drivers, etc.</p><h2>Memory Management Updates</h2><ul><li><p><strong><a href="https://lore.kernel.org/all/2a0a05c2dffc62a742bf1dd030098be4ce99be28.1748452241.git.donettom@linux.ibm.com/">Optimize memory block registration to reduce boot time:</a></strong></p><p>This patch series optimizes the memory blocks registration needed during bootup. As per the patch series, this has improved bootup time for large memory systems with discontiguous memory ranges by around <strong>~78% (From 1min 16sec to 17sec).</strong><br></p></li><li><p><strong>Optimize mprotect() &amp; mremap() for large folios:</strong><br><a href="https://lore.kernel.org/all/20250610035043.75448-1-dev.jain@arm.com/">mremap()</a> &amp; <a href="https://lore.kernel.org/all/20250718090244.21092-1-dev.jain@arm.com/">mprotect()</a> has been converted to make use of <code>folio_pte_batch()</code> &amp; <code>set_ptes()</code> call which provides PTE batching instead of <code>set_pte_at()</code>, which gets called for each pte of a folio.<br></p></li><li><p><strong><a href="https://lore.kernel.org/all/20250616135158.450136-1-osalvador@suse.de/">Adds numa node notifier similar to memory notifier:</a></strong><br>This allows to convert the following consumers to register for numa node state change instead of state change for every <code>{online,offline}_pages()</code>. memory-tier, slub, cpuset, hmat, cxl &amp; autoweight-mempolicy are converted to use numa node notifier instead.<br></p></li><li><p><strong><a href="https://lore.kernel.org/all/20250623185851.830632-1-dave@stgolabs.net/">Introduces a per-node proactive reclaim interface:</a><br></strong>A new per-node proactive reclaim interface has been added to help systems with memory tiers. Use cases that do not use memcg can utilize this interface for proactive reclaiming. The memcg interface is anyways not NUMA aware and there are usecases that focuses on NUMA balancing rather than workload memory footprint. Proactive reclaim on top tiers will trigger demotion and reclaiming on the bottom nodes will trigger evicting to swap.<br></p></li><li><p><strong><a href="https://lore.kernel.org/all/cover.1752499009.git.luizcap@redhat.com/">mm: introduce snapshot_page: </a><br></strong>This provides (and uses) a means by which debug-style functions can grab a copy of a pageframe and inspect it locklessly without tripping over the races inherent in operating on the live pageframe directly.<br></p></li><li><p><strong><a href="https://lore.kernel.org/all/20250719182854.3166724-1-surenb@google.com/">/proc/pid/maps read is now converted to use per vma locks:</a><br></strong>Instead of using <code>mmap_lock</code> which will block on the entire address space, reads to <code>/proc/pid/maps</code> is now converted to use per-vma locks. This has shown around <strong>2x latency improvements</strong> in few of the microbenchmarks.<br></p></li><li><p><strong><a href="https://lore.kernel.org/all/450d3876-90a9-4b1c-8d73-62ac19048991@suse.cz/">More preparation work for separating struct slab from struct page</a>: <br></strong>Convert struct slab to use its own flags instead of referencing page flags, which is another preparation step before separating it from struct page completely.<br></p></li><li><p><strong>DAMON (Data Access MONitor) Improvements:</strong></p><ul><li><p><strong><a href="https://lore.kernel.org/all/20250604183127.13968-1-sj@kernel.org/">DAMON_STAT module for production use</a></strong>: A new kernel module that simplifies DAMON setup and usage in production environments, making memory access monitoring more accessible for real-world deployments.</p></li><li><p><strong><a href="https://lore.kernel.org/all/20250717055448.56976-1-sj@kernel.org/">Enhanced sysfs interface</a></strong>: The DAMON sysfs interface now supports periodic and automated statistics updates with tunable intervals, extending beyond the previous manual userspace-requested model and reducing monitoring overhead.</p></li><li><p><strong><a href="https://lore.kernel.org/all/20250709005952.17776-1-bijan311@gmail.com/">Improved NUMA migration support</a></strong>: DAMON's memory migration actions (DAMOS_MIGRATE_HOT/COLD) now support interleaving policies, allowing dynamic alteration of inter-node allocation strategies for better NUMA-aware memory management.<br></p></li></ul></li></ul><h2>Filesystem Updates</h2><ul><li><p><strong><a href="https://lore.kernel.org/all/20250714130327.1830534-1-libaokun1@huawei.com/">EXT4 block allocation scalability improvements</a>:<br></strong>This series brings significant scalability improvements to ext4 when running upto ~96 containers, all executing fallocate2 + will-it-scale workloads. The primary bottleneck identified with this workload was block group lock contention during block group scanning, for allocation purposes. The core changes in this series include:</p><ul><li><p><strong>Introducing ext4_try_lock_group() API</strong> to check if a block group is busy, allowing the allocator to skip locked groups instead of waiting.</p></li></ul><ul><li><p><strong>Converting free group order lists to XArrays</strong>, which enables linear group scanning across multiple order XArrays rather than non-adjacent block group scanning caused by the previous linked-list implementation. This approach significantly reduces contention on block group locks.</p></li></ul><p>These changes, along with few other optimizations included, improved workload scalability by approximately <strong>1400%</strong>.<br></p></li><li><p><strong><a href="https://lore.kernel.org/all/20250716093559.217344-1-chentaotao@didiglobal.com/">Uncached buffered I/O support added to EXT4:</a></strong><a href="https://lore.kernel.org/all/20250716093559.217344-1-chentaotao@didiglobal.com/"> </a><br>EXT4 now supports the <code>IOCB_DONTCACHE</code> flag through refactored address_space_operations <code>write_begin()</code> and <code>write_end()</code> callbacks. Uncached buffered I/O allows applications to use buffered I/O while instructing the kernel not to retain pages in the page cache after the I/O operation completes (if these pages were newly instantiated for doing <code>RWF_DONTCACHE</code> I/O). This is particularly useful for applications that manage their own caching mechanisms or want to avoid polluting the page cache with large sequential writes that won't be reused.<br></p></li><li><p><strong><a href="https://lore.kernel.org/all/aIblpKzSWEEYwQ06@debian/">EROFS metadata compression support:</a></strong><br>EROFS filesystem now supports compressing metadata blocks, which can be particularly useful for embedded use cases or when archiving large numbers of small files. Additionally, readdir performance has been improved by enabling readahead for directory blocks.<br></p></li><li><p><strong><a href="https://lore.kernel.org/all/20250725-vfs-fileattr-fcfc534aac44@brauner/">New file_getattr/file_setattr system calls</a></strong>: <br>Introduces extensible successors to the <code>FS_IOC_FSGETXATTR</code> and <code>FS_IOC_FSSETXATTR</code> ioctls. These new syscalls allow userspace to set filesystem inode attributes on special files (FIFO, SOCK, BLK, etc.), which was previously impossible. This is particularly useful for XFS quota projects where special files need to inherit project IDs.<br></p></li><li><p><strong><a href="https://lore.kernel.org/all/20250619111806.3546162-1-yi.zhang@huaweicloud.com/">FALLOC_FL_WRITE_ZEROES fallocate support</a></strong>: <br>A new <code>fallocate()</code> flag has been introduced that zeroes a specified file range in such a way that subsequent writes to that range do not require further changes to file mapping metadata, making them pure overwrites. This is particularly beneficial for flash-based storage devices that support efficient write zeroes commands (SCSI UNMAP bit or NVMe DEAC bit), as it avoids write amplification and improves performance. This allows users to leverage the new <code>fallocate()</code> flag for issuing zeroes instead of using "dd" with large block sizes, which can consume unnecessarily large disk bandwidth.<br></p></li><li><p><strong><a href="https://lore.kernel.org/all/20250725-vfs-pidfs-ef67d98fcc31@brauner/">PIDFS persistent information and extended attributes</a>:</strong> <br>PIDFS now persists exit and coredump information independent of whether anyone holds a pidfd for the struct pid. The lifetime of information is now bound to the struct pid itself rather than the pidfs inode/dentry. Additionally, pidfs now supports extended attributes, allowing userspace to attach meta information to tasks. Also introduces autonomous pidfs file handles that can function as full  replacement for storing PIDs in files.<br></p></li><li><p><strong><a href="https://lore.kernel.org/all/20250728143033.70585-1-cel@kernel.org/">NFSD write delegations and compound operation improvements:</a></strong><a href="https://lore.kernel.org/all/20250728143033.70585-1-cel@kernel.org/"> </a><br>NFSD can now offer write delegations to clients that open files with O_WRONLY, which should accelerate certain corner cases as per the patch series.<br></p></li><li><p><strong><a href="https://lore.kernel.org/all/20250725-vfs-iomap-e5f67758f577@brauner/">IOMAP writeback refactoring and FUSE support:</a></strong><a href="https://lore.kernel.org/all/20250725-vfs-iomap-e5f67758f577@brauner/"> </a><br>The iomap writeback code has been refactored to split generic and ioend/bio based writeback code. FUSE now has iomap support for buffered writes and dirty folio writeback, enabling granular uptodate and dirty tracking with large folios. This means only relevant portions need to be read instead of entire folios, and only dirty portions need to be writeback. <a href="https://lore.kernel.org/all/20230725122932.144426-1-ritesh.list@gmail.com/">IOMAP supports dirty blocks tracking since v6.6</a><br></p></li><li><p><strong><a href="https://lore.kernel.org/all/cover.1750099179.git.lorenzo.stoakes@oracle.com/">VFS mmap_prepare() conversion</a>:</strong> <br>Major conversion of filesystems from the legacy <code>f_op-&gt;mmap() </code>hook to the new <code>f_op-&gt;mmap_prepare()</code> interface. This allows mmap logic to invoke the hook much earlier, prior to inserting a VMA into the virtual address space, enabling simpler error unwinding and preventing manipulation of incompletely initialized VMA state. Most filesystems including ext4, xfs, and many others have been converted.</p></li></ul><p><br>This concludes memory management and filesystem changes which have been pulled in Linus tree for 6.17 merge window so far. The window will remain open until 10th of August, so expect more changes to follow.</p>]]></content:encoded></item><item><title><![CDATA[Parallelizing Linux Writeback]]></title><description><![CDATA[The Linux kernel&#8217;s I/O subsystem has evolved steadily to keep pace with modern storage hardware, with most layers gradually enhanced to exploit parallelism.]]></description><link>https://blog.linuxnews.dev/p/parallelizing-linux-writeback</link><guid isPermaLink="false">https://blog.linuxnews.dev/p/parallelizing-linux-writeback</guid><dc:creator><![CDATA[Linuxdev]]></dc:creator><pubDate>Sat, 02 Aug 2025 21:09:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!hpTG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0b40d17-e45c-4ccb-a278-78ef001427b7_1076x824.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The Linux kernel&#8217;s I/O subsystem has evolved steadily to keep pace with modern storage hardware, with most layers gradually enhanced to exploit parallelism. <br>Yet one critical piece still remains single-threaded: i.e. the writeback mechanism that flushes dirty pages from page cache to storage. A new patch series from <a href="https://lore.kernel.org/all/20250529111504.89912-1-kundan.kumar@samsung.com/">Samsung engineers</a> aims to lift this long-standing bottleneck.</p><h2>pdflush to per-bdi writeback</h2><p>Design of writeback mechanism evolved from global pdflush threads in early 2.6 kernels to <a href="https://lore.kernel.org/all/1252654450-25721-4-git-send-email-jens.axboe@oracle.com/#t">per-BDI (backing device info) writeback threads</a>. This per-bdi model eliminated problems like contention and request starvation but was designed for an era when storage devices were still largely spinning hard drives or SSDs but mainly with single HW queue. A single writeback thread per backing device made sense back then. <br><br>While the per-BDI approach improved upon the global pdflush model, performance limitations remained as storage hardware continued to evolve. Recent developments in memory management have begun addressing some of these bottlenecks. E.g. <a href="https://lore.kernel.org/linux-ext4/20250512063319.3539411-1-yi.zhang@huaweicloud.com/">large folios in filesystems</a> have <a href="https://lore.kernel.org/linux-xfs/20230710130253.3484695-1-willy@infradead.org/">significantly improved writeback</a> efficiency by allowing writeback thread to process more data per operation. <br><br>Example showing writeback processing for a page v/s folio:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uNVs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd84e7293-aa4c-4c23-a161-b0306100a9b2_1434x688.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uNVs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd84e7293-aa4c-4c23-a161-b0306100a9b2_1434x688.png 424w, https://substackcdn.com/image/fetch/$s_!uNVs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd84e7293-aa4c-4c23-a161-b0306100a9b2_1434x688.png 848w, https://substackcdn.com/image/fetch/$s_!uNVs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd84e7293-aa4c-4c23-a161-b0306100a9b2_1434x688.png 1272w, https://substackcdn.com/image/fetch/$s_!uNVs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd84e7293-aa4c-4c23-a161-b0306100a9b2_1434x688.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uNVs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd84e7293-aa4c-4c23-a161-b0306100a9b2_1434x688.png" width="1434" height="688" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d84e7293-aa4c-4c23-a161-b0306100a9b2_1434x688.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:688,&quot;width&quot;:1434,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:115152,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.linuxnews.dev/i/169932754?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd84e7293-aa4c-4c23-a161-b0306100a9b2_1434x688.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uNVs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd84e7293-aa4c-4c23-a161-b0306100a9b2_1434x688.png 424w, https://substackcdn.com/image/fetch/$s_!uNVs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd84e7293-aa4c-4c23-a161-b0306100a9b2_1434x688.png 848w, https://substackcdn.com/image/fetch/$s_!uNVs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd84e7293-aa4c-4c23-a161-b0306100a9b2_1434x688.png 1272w, https://substackcdn.com/image/fetch/$s_!uNVs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd84e7293-aa4c-4c23-a161-b0306100a9b2_1434x688.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This transformation reduces CPU overhead and enables larger I/O operations that better match modern storage capabilities. <a href="https://lore.kernel.org/all/671e8774-acaf-4c59-b06a-bf1511de022a@arm.com/">All filesystems</a> are now planning to enable use of  large folios in their buffered-io path to gain from this benefit.<br><br>However, large folios only addresses the efficiency of sequential processing within a single thread. They do nothing to address the fundamental serialization bottleneck of having a single writeback thread per block device, which becomes increasingly problematic as storage devices gain parallel processing capabilities.</p><h2>The Parallel I/O Stack</h2><p>The Linux I/O stack has been steadily modernized to exploit parallelism at every layer. Multiple applications can issue write requests to different inodes simultaneously without lock contention, thanks to the virtual file system. Local filesystems such as ext4 and XFS divide their on-disk layout into different allocation groups thus enabling parallel block allocations and metadata operations.  <br><br>Nearly a decade ago, block layer adopted the multi-queue design with per-CPU submission queues and parallel hardware dispatch queues based on the underlying disk device capabilities. As a result I/O requests can flow concurrently from applications through VFS, filesystem and block layer all the way to the storage drives. <br><br>However one notable exception remains: the writeback path still drains dirty pages with a single thread per backing device. Because modern NVMe drives can handle millions of I/O operations per second, optimizing writeback has become the next priority for kernel engineers to fully exploit NVMe throughput for buffered I/O.</p><h2>Parallelizing Writeback </h2><p>Now in order to just parallelize writeback, the first thought that would come to anyone&#8217;s mind is to add per-CPU parallelism to the per-BDI writeback flusher and then evenly distribute, the amount of work (number of dirty pages) across these per-CPU per-BDI threads. <br>However there is a subtle problem with this approach. It could cause severe filesystem fragmentation, since dirty pages belonging to the same inode might get written concurrently by multiple per-CPU, per-BDI flushers, thereby negating the purpose of the delayed-allocation techniques that filesystems employ to improve performance and reduce fragmentation. Delayed allocation lets the filesystem wait to allocate blocks until writeback time. At that point contiguous in memory dirty pages can be coalesced into finding a larger on disk extent. This approach avoids allocating individual blocks at the time when write requests are submitted which otherwise can lead to filesystem fragmentation. <br><br>So instead what this patch series does is, it creates <code>nr_wb_ctx</code> parallel writeback contexts instead of a single <code>bdi_writeback</code> and affine the inode to only a given writeback context: ensuring that all writeback operations for a specific inode are handled by the same writeback context. Each inode is assigned to a context using <code>inode-&gt;i_ino % bdi-&gt;nr_wb_ctx</code> logic. <br>This can preserves delayed allocation effectiveness while distributing different inodes across parallel per-BDI writeback contexts. <br></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vC8a!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe10d3a89-e8a4-42cb-b226-4f36f6cf3c45_1514x1876.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vC8a!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe10d3a89-e8a4-42cb-b226-4f36f6cf3c45_1514x1876.png 424w, https://substackcdn.com/image/fetch/$s_!vC8a!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe10d3a89-e8a4-42cb-b226-4f36f6cf3c45_1514x1876.png 848w, https://substackcdn.com/image/fetch/$s_!vC8a!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe10d3a89-e8a4-42cb-b226-4f36f6cf3c45_1514x1876.png 1272w, https://substackcdn.com/image/fetch/$s_!vC8a!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe10d3a89-e8a4-42cb-b226-4f36f6cf3c45_1514x1876.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vC8a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe10d3a89-e8a4-42cb-b226-4f36f6cf3c45_1514x1876.png" width="1456" height="1804" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e10d3a89-e8a4-42cb-b226-4f36f6cf3c45_1514x1876.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1804,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:269861,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.linuxnews.dev/i/169932754?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe10d3a89-e8a4-42cb-b226-4f36f6cf3c45_1514x1876.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vC8a!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe10d3a89-e8a4-42cb-b226-4f36f6cf3c45_1514x1876.png 424w, https://substackcdn.com/image/fetch/$s_!vC8a!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe10d3a89-e8a4-42cb-b226-4f36f6cf3c45_1514x1876.png 848w, https://substackcdn.com/image/fetch/$s_!vC8a!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe10d3a89-e8a4-42cb-b226-4f36f6cf3c45_1514x1876.png 1272w, https://substackcdn.com/image/fetch/$s_!vC8a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe10d3a89-e8a4-42cb-b226-4f36f6cf3c45_1514x1876.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This series introduces a new <code>struct bdi_writeback_ctx</code> which is same as <code>bdi_writeback</code> structure along with few other writeback state information moved into it. <br>The essential changes made to <code>struct backing_dev_info</code> are:</p><ul><li><p>A new integer <code>nr_wb_ctx</code> denoting how many parallel contexts will be used.</p></li><li><p>A dynamically allocated array of pointers to each <code>bdi_writeback_ctx.</code></p></li><li><p>Each <code>bdi_writeback_ctx</code> embeds its own <code>struct bdi_writeback</code> and links back to its parent context via a <code>bdi_wb_ctx</code> pointer. </p></li></ul><p>This should allow the kernel to spawn and manage multiple parallel writeback context per-BDI, thus eliminating the old single writeback thread per-BDI bottleneck. These two are the heart of the design changes made to make per-BDI writeback mechanism gain parallelism. Rest of the changes are mostly mechanical trying to use <code>bdi_writeback_ctx</code> structure instead of <code>bdi_writeback</code>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hpTG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0b40d17-e45c-4ccb-a278-78ef001427b7_1076x824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hpTG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0b40d17-e45c-4ccb-a278-78ef001427b7_1076x824.png 424w, https://substackcdn.com/image/fetch/$s_!hpTG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0b40d17-e45c-4ccb-a278-78ef001427b7_1076x824.png 848w, https://substackcdn.com/image/fetch/$s_!hpTG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0b40d17-e45c-4ccb-a278-78ef001427b7_1076x824.png 1272w, https://substackcdn.com/image/fetch/$s_!hpTG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0b40d17-e45c-4ccb-a278-78ef001427b7_1076x824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hpTG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0b40d17-e45c-4ccb-a278-78ef001427b7_1076x824.png" width="1076" height="824" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f0b40d17-e45c-4ccb-a278-78ef001427b7_1076x824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:824,&quot;width&quot;:1076,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:87873,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.linuxnews.dev/i/169932754?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0b40d17-e45c-4ccb-a278-78ef001427b7_1076x824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hpTG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0b40d17-e45c-4ccb-a278-78ef001427b7_1076x824.png 424w, https://substackcdn.com/image/fetch/$s_!hpTG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0b40d17-e45c-4ccb-a278-78ef001427b7_1076x824.png 848w, https://substackcdn.com/image/fetch/$s_!hpTG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0b40d17-e45c-4ccb-a278-78ef001427b7_1076x824.png 1272w, https://substackcdn.com/image/fetch/$s_!hpTG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0b40d17-e45c-4ccb-a278-78ef001427b7_1076x824.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">How dirty inodes are distributed across paralel writeback context at per-BDI level</figcaption></figure></div><p><br>Here is the performance improvement data posted in the <a href="https://lore.kernel.org/all/20250529111504.89912-1-kundan.kumar@samsung.com/">patch series</a> which is quite interesting:</p><pre><code>IOPS and throughput
===================
We see significant improvement in IOPS across several filesystem on both
PMEM and NVMe devices.

Performance gains:
  - On PMEM:
&#9;Base XFS&#9;&#9;: 544 MiB/s
&#9;Parallel Writeback XFS&#9;: 1015 MiB/s  (+86%)
&#9;Base EXT4&#9;&#9;: 536 MiB/s
&#9;Parallel Writeback EXT4&#9;: 1047 MiB/s  (+95%)

  - On NVMe:
&#9;Base XFS&#9;&#9;: 651 MiB/s
&#9;Parallel Writeback XFS&#9;: 808 MiB/s  (+24%)
&#9;Base EXT4&#9;&#9;: 494 MiB/s
&#9;Parallel Writeback EXT4&#9;: 797 MiB/s  (+61%)

We also see that there is no increase in filesystem fragmentation
# of extents:
  - On XFS (on PMEM):
&#9;Base XFS&#9;&#9;: 1964
&#9;Parallel Writeback XFS&#9;: 1384

  - On EXT4 (on PMEM):
&#9;Base EXT4&#9;&#9;: 21
&#9;Parallel Writeback EXT4&#9;: 11</code></pre><h2>Conclusion</h2><p>Although the current proposal addresses one of the most fundamental serialization points in the storage stack but the question still remain about whether the current approach will adequately serve diverse filesystem characteristics or whether a more sophisticated strategy considering filesystem specific geometry (e.g. parallelizing based on per allocation group) will also be needed?<br>The kernel community's reception of this patch series will likely influence the direction of subsequent buffered I/O optimizations.<br><br>Lately through various mailing <a href="https://lore.kernel.org/all/Zdkxfspq3urnrM6I@bombadil.infradead.org/">discussions happening in the filesystems and storage community</a> it is evident that the kernel engineers are finally realizing that there is a need to improve the Linux buffered I/O performance. <br>Recent developments in this space like filesystems gaining large folio support, introduction of <a href="https://lore.kernel.org/all/20241220154831.1086649-1-axboe@kernel.dk/">Uncached Buffered I/O</a> also demonstrate that there is definitely a lot to improve in this space, to meet the demands of modern high speed storage hardware.</p><p></p>]]></content:encoded></item><item><title><![CDATA[ReiserFS, Once Enterprise's Default, Removed in Linux 6.13]]></title><description><![CDATA[Once the default filesystem for SUSE Enterprise, ReiserFS-3 has now been removed from Linux 6.13.&#160;So, what happened? What led to Linux finally deciding to remove it in the 6.13 release?...]]></description><link>https://blog.linuxnews.dev/p/reiserfs-removed-in-linux-6-13</link><guid isPermaLink="false">https://blog.linuxnews.dev/p/reiserfs-removed-in-linux-6-13</guid><dc:creator><![CDATA[Linuxdev]]></dc:creator><pubDate>Mon, 02 Dec 2024 17:46:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f68b009-9a36-42a7-9e95-6b38da53c58d_657x540.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Once the default filesystem for SUSE Enterprise, <a href="https://en.wikipedia.org/wiki/ReiserFS">ReiserFS-3</a> has now been removed from Linux 6.13. It was the first Linux filesystem to introduce journaling, alongside several modern features that were ahead of its time. There were ambitious plans for ReiserFS-4 and even ReiserFS-5, with bold claims of being the fastest filesystem of its era.<br><br><em><strong>So, what happened? What led to Linux finally deciding to remove it in the 6.13 release?</strong></em></p><p>Well, it sure wasn&#8217;t a knee-jerk decision. The kernel community discussed <a href="https://lore.kernel.org/lkml/YhIwUEpymVzmytdp@casper.infradead.org/">deprecating ReiserFS back in 2022</a>, and it was officially marked as deprecated then. Removing it in Linux&#8217;s first 2025 release felt like a natural progression, leading to its <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c01f664e4ca210823b7594b50669bbd9b0a3c3b0">removal in 6.13-rc1</a>.</p><p><em><strong>But that still doesn&#8217;t answer the real question: why was it marked as deprecated in the first place?</strong></em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!t7ak!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f68b009-9a36-42a7-9e95-6b38da53c58d_657x540.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t7ak!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f68b009-9a36-42a7-9e95-6b38da53c58d_657x540.png 424w, https://substackcdn.com/image/fetch/$s_!t7ak!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f68b009-9a36-42a7-9e95-6b38da53c58d_657x540.png 848w, https://substackcdn.com/image/fetch/$s_!t7ak!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f68b009-9a36-42a7-9e95-6b38da53c58d_657x540.png 1272w, https://substackcdn.com/image/fetch/$s_!t7ak!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f68b009-9a36-42a7-9e95-6b38da53c58d_657x540.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t7ak!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f68b009-9a36-42a7-9e95-6b38da53c58d_657x540.png" width="657" height="540" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f68b009-9a36-42a7-9e95-6b38da53c58d_657x540.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:540,&quot;width&quot;:657,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:126623,&quot;alt&quot;:&quot;Reiserfs removed in linux 6.13&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Reiserfs removed in linux 6.13" title="Reiserfs removed in linux 6.13" srcset="https://substackcdn.com/image/fetch/$s_!t7ak!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f68b009-9a36-42a7-9e95-6b38da53c58d_657x540.png 424w, https://substackcdn.com/image/fetch/$s_!t7ak!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f68b009-9a36-42a7-9e95-6b38da53c58d_657x540.png 848w, https://substackcdn.com/image/fetch/$s_!t7ak!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f68b009-9a36-42a7-9e95-6b38da53c58d_657x540.png 1272w, https://substackcdn.com/image/fetch/$s_!t7ak!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f68b009-9a36-42a7-9e95-6b38da53c58d_657x540.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Linux is evolving at an incredible pace, with widespread adoption across everything from the tiniest embedded devices to supercomputers and hyperscalers powering the world&#8217;s largest data centers. This rapid growth brings a constant influx of new features, making it challenging for developers to deal with unmaintained subsystems that can&#8217;t keep up with the development pace.</p><p>ReiserFS fell into this category, remaining unmaintained after its lead developer, Hans Reiser, was convicted of murdering his wife. Recently, Hans wrote a letter to the kernel community, leaving it up to them to decide what&#8217;s best and to take action accordingly.</p><p>For those interested, the <a href="https://web.archive.org/web/20071023172417/http://www.namesys.com/">design of ReiserFS-4</a> is still maintained and available online at internet archive. Hans Reiser&#8217;s <a href="https://lore.kernel.org/lkml/b98b29cf-27d9-49e0-b10b-1848399badfd@kittens.ph">letter to the kernel community</a>, along with <a href="https://ftp.mfek.org/Reiser/Letters">images of the original handwritten note</a>, can be found on the LKML archives.</p><h3>What does this mean for users still using ReiserFS?</h3><p>Most users have likely already migrated their data to other filesystems. However, for those who haven&#8217;t, the best advice would be, to stick to 6.12 kernel and start planning a migration to a filesystem supported by Linux 6.13.<br></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.linuxnews.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading LinuxNews.Dev &#128039;! Subscribe for free to receive more such posts directly to your inbox!</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Linux 6.13-rc1 released]]></title><description><![CDATA[Linux 6.13-rc1 is out and with that this cycle's merge window is now closed.]]></description><link>https://blog.linuxnews.dev/p/linux-6-13-rc1-released</link><guid isPermaLink="false">https://blog.linuxnews.dev/p/linux-6-13-rc1-released</guid><dc:creator><![CDATA[Linuxdev]]></dc:creator><pubDate>Mon, 02 Dec 2024 11:41:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!mhwy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32c82e8d-4b7a-4650-b441-f843419cde70_679x551.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mhwy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32c82e8d-4b7a-4650-b441-f843419cde70_679x551.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mhwy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32c82e8d-4b7a-4650-b441-f843419cde70_679x551.png 424w, https://substackcdn.com/image/fetch/$s_!mhwy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32c82e8d-4b7a-4650-b441-f843419cde70_679x551.png 848w, https://substackcdn.com/image/fetch/$s_!mhwy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32c82e8d-4b7a-4650-b441-f843419cde70_679x551.png 1272w, https://substackcdn.com/image/fetch/$s_!mhwy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32c82e8d-4b7a-4650-b441-f843419cde70_679x551.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mhwy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32c82e8d-4b7a-4650-b441-f843419cde70_679x551.png" width="679" height="551" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/32c82e8d-4b7a-4650-b441-f843419cde70_679x551.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:551,&quot;width&quot;:679,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:134422,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mhwy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32c82e8d-4b7a-4650-b441-f843419cde70_679x551.png 424w, https://substackcdn.com/image/fetch/$s_!mhwy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32c82e8d-4b7a-4650-b441-f843419cde70_679x551.png 848w, https://substackcdn.com/image/fetch/$s_!mhwy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32c82e8d-4b7a-4650-b441-f843419cde70_679x551.png 1272w, https://substackcdn.com/image/fetch/$s_!mhwy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32c82e8d-4b7a-4650-b441-f843419cde70_679x551.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">6.13-rc1 released</figcaption></figure></div><p><a href="https://lore.kernel.org/all/CAHk-=whiWXVxhd0BATPPd6t36HJ49vApdJXZOYuAJtRA5pRi1g@mail.gmail.com/?ref=linuxnews.dev">Linux 6.13-rc1</a> is out and with that this cycle's merge window is now closed. Feel free to give it a spin on your shiny new machines and try taking some time off during Christmas and New Year!</p><blockquote><p>So two weeks have passed, the merge window is over, and -rc1 is pushed out.<br><br>And for once - possibly the first time ever(*) - it looks like the<br>release cycle doesn't clash horribly up with the holiday season, and<br>we'll have time both to stabilize this release, _and_ the work for<br>6.14 won't be starting until well into January. Sure, I'd not be at<br>all surprised if 6.14 ends up being smaller than average just because<br>people hopefully take a rest over the holidays, but that sounds like a<br>good thing. I don't think we need to stretch the release timing out,<br>but we most certainly can just relax a bit and make the next release<br>smaller.<br><br>Anyway, below is my "short mergelog" as usual, since the full log is<br>way too big. I feel like we had more core VFS changes than usual, but<br>that obviously doesn't really show up in the diff stats, since those<br>are - as always - dominated by drivers.<br><br>Linus<br><br>(*) Almost certainly not the first time, but it feels like we always<br>tend to hit Christmas head on with some timing issue.</p></blockquote>]]></content:encoded></item><item><title><![CDATA[Bcachefs setback for linux 6.13]]></title><description><![CDATA[In one notable incident on the LKML mailing list, Bcachefs maintainer Kent Overstreet might have crossed certain boundaries by using inappropriate language toward senior and well-regarded kernel developer...]]></description><link>https://blog.linuxnews.dev/p/bcachefs-setback-for-linux-6-13</link><guid isPermaLink="false">https://blog.linuxnews.dev/p/bcachefs-setback-for-linux-6-13</guid><dc:creator><![CDATA[Linuxdev]]></dc:creator><pubDate>Sun, 01 Dec 2024 17:57:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feff94837-3098-4d0f-8684-9f038fad4583_794x741.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When we meet a colleague, a friend, an acquaintance, or any other person in real life, it&#8217;s natural to greet them warmly. However, this courtesy often gets overlooked when communicating over email. It&#8217;s important to remember that behind the screen is another human being&#8212;a fellow mate. There have been instances in the past where heated arguments and even abusive language have surfaced on LKML, causing frustration and strain for those involved.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zS86!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feff94837-3098-4d0f-8684-9f038fad4583_794x741.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zS86!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feff94837-3098-4d0f-8684-9f038fad4583_794x741.png 424w, https://substackcdn.com/image/fetch/$s_!zS86!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feff94837-3098-4d0f-8684-9f038fad4583_794x741.png 848w, https://substackcdn.com/image/fetch/$s_!zS86!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feff94837-3098-4d0f-8684-9f038fad4583_794x741.png 1272w, https://substackcdn.com/image/fetch/$s_!zS86!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feff94837-3098-4d0f-8684-9f038fad4583_794x741.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zS86!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feff94837-3098-4d0f-8684-9f038fad4583_794x741.png" width="794" height="741" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eff94837-3098-4d0f-8684-9f038fad4583_794x741.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:741,&quot;width&quot;:794,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1152265,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zS86!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feff94837-3098-4d0f-8684-9f038fad4583_794x741.png 424w, https://substackcdn.com/image/fetch/$s_!zS86!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feff94837-3098-4d0f-8684-9f038fad4583_794x741.png 848w, https://substackcdn.com/image/fetch/$s_!zS86!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feff94837-3098-4d0f-8684-9f038fad4583_794x741.png 1272w, https://substackcdn.com/image/fetch/$s_!zS86!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feff94837-3098-4d0f-8684-9f038fad4583_794x741.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Image was AI generated</figcaption></figure></div><p>Linux kernel development thrives on fostering an open-source community, and its success depends on bringing more people into the fold. To create and maintain an open and welcoming environment, certain ground rules have been established. A <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/code-of-conduct.rst">Code of Conduct</a> has been put in place to ensure these rules are upheld and respected by everyone in the community.</p><p>In one notable incident on the LKML mailing list, Bcachefs maintainer Kent Overstreet might have crossed certain boundaries by using <a href="https://lore.kernel.org/all/citv2v6f33hoidq75xd2spaqxf7nl5wbmmzma4wgmrwpoqidhj@k453tmq7vdrk/">inappropriate language</a> toward senior and well-regarded kernel developer Michal Hocko. Such behavior potentially violates the Code of Conduct guidelines, which can lead to serious repercussions.</p><p>Disagreements over design choices or kernel development processes are not uncommon in the Linux kernel community. However, these conflicts need to be addressed constructively. Many a times, Kent has even advocated for relaxing certain strict rules that he feels hinder Bcachefs development, such as sending large pull requests mid-release cycle.</p><p>One such disagreement with Kent prompted Linus Torvalds to <a href="https://lore.kernel.org/all/CAHk-=wjit-1ETRxCBrQAw49AUcE5scEM5O++M=793bDWnQktmw@mail.gmail.com/">respond with the following</a>:</p><blockquote><p>"You're a smart person. I feel like I've given you enough hints. Why don't you sit back and think about it, and let's make it clear: you have exactly two choices here:<br><br>(a) play better with others<br>(b) take your toy and go home<br><br>Those are the choices."<br>&#8212; Linus Torvalds</p></blockquote><h3>What does this mean for Bcachefs though</h3><p>The Linux Foundation's Technical Advisory Board (TAB), acting on recommendations from the Code of Conduct committee, has <a href="https://lore.kernel.org/lkml/6740fc3aabec0_5eb129497@dwillia2-xfh.jf.intel.com.notmuch/">issued a decision</a> regarding Kent's participation in the kernel development process:</p><blockquote><p>&#8211; Restrict Kent Overstreet's participation in the kernel development process during the Linux 6.13 kernel development cycle.<br>&#8211; Scope: Decline all pull requests from Kent Overstreet during the Linux 6.13 kernel development cycle.</p></blockquote><p>As a result, no pull requests for Bcachefs will be accepted during the 6.13 merge window. This decision significantly impacts the progression of Bcachefs, delaying any major updates or improvements planned for inclusion in the kernel during this cycle. In response, Kent has <a href="https://lore.kernel.org/lkml/o5tbrrk4r3sxtvk7tjyua5h2qaa3fos7446dkxbjyxjwhp4odd@we5elwaeb7dv/">issued</a> an apology of sorts, somewhat in his own way.</p><p>Bcachefs is an impressive modern filesystem, packed with features that Linux users have long desired. There&#8217;s no doubt that both the broader Linux community and the kernel developers want to see Bcachefs succeed. However, its future will ultimately depend on what the maintainers choose to prioritize. <br>We hope this incident provides an opportunity for reflection and a chance to reassess these priorities. Given its potential, Linux would greatly benefit from a filesystem like Bcachefs, and we sincerely wish the project every success moving forward.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.linuxnews.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading LinuxNews.Dev &#128039;! Subscribe for free to receive more such posts directly to your inbox!</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Linux multi-grain timestamp making it's way to 6.13 kernel]]></title><description><![CDATA[During the 6.6 merge window, the multi-grain timestamp feature was introduced but ultimately reverted after it caused regressions in tools like make and rsync. With its reappearance in the 6.13 merge window, it is worth examining what the feature entails, the problems it aims to solve, and the challenges it encountered during earlier 6.6 merge window.]]></description><link>https://blog.linuxnews.dev/p/linux-multi-grain-timestamp</link><guid isPermaLink="false">https://blog.linuxnews.dev/p/linux-multi-grain-timestamp</guid><dc:creator><![CDATA[Linuxdev]]></dc:creator><pubDate>Sat, 30 Nov 2024 15:56:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Hz24!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab5fd2b0-aa40-481e-bcf7-b5188758f600_690x491.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>During the 6.6 merge window, the multi-grain timestamp feature was introduced but ultimately reverted after it caused regressions in tools like <code>make</code> and <code>rsync</code>. With its reappearance in the 6.13 merge window, it is worth examining what the feature entails, the problems it aims to solve, and the challenges it encountered during earlier 6.6 merge window.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Hz24!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab5fd2b0-aa40-481e-bcf7-b5188758f600_690x491.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hz24!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab5fd2b0-aa40-481e-bcf7-b5188758f600_690x491.png 424w, https://substackcdn.com/image/fetch/$s_!Hz24!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab5fd2b0-aa40-481e-bcf7-b5188758f600_690x491.png 848w, https://substackcdn.com/image/fetch/$s_!Hz24!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab5fd2b0-aa40-481e-bcf7-b5188758f600_690x491.png 1272w, https://substackcdn.com/image/fetch/$s_!Hz24!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab5fd2b0-aa40-481e-bcf7-b5188758f600_690x491.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hz24!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab5fd2b0-aa40-481e-bcf7-b5188758f600_690x491.png" width="690" height="491" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab5fd2b0-aa40-481e-bcf7-b5188758f600_690x491.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:491,&quot;width&quot;:690,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:57916,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Hz24!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab5fd2b0-aa40-481e-bcf7-b5188758f600_690x491.png 424w, https://substackcdn.com/image/fetch/$s_!Hz24!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab5fd2b0-aa40-481e-bcf7-b5188758f600_690x491.png 848w, https://substackcdn.com/image/fetch/$s_!Hz24!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab5fd2b0-aa40-481e-bcf7-b5188758f600_690x491.png 1272w, https://substackcdn.com/image/fetch/$s_!Hz24!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab5fd2b0-aa40-481e-bcf7-b5188758f600_690x491.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Inode Timestamps</h3><p>Linux filesystems maintain a set of timestamps to track key events for each file:</p><ul><li><p><strong>Access Time (atime):</strong> Updated when the file is read.</p></li><li><p><strong>Modification Time (mtime):</strong> Updated when the file&#8217;s contents are modified.</p></li><li><p><strong>Change Time (ctime):</strong> Updated when the file&#8217;s metadata (such as permissions or ownership) changes.</p></li></ul><p>These timestamps are stored in the file&#8217;s inode. One notable behavior is that any <code>mtime</code> update also implicitly triggers a <code>ctime</code> update. However, the resolution of these timestamps is coarse&#8212;typically at the granularity of a jiffy (around milliseconds). While this level of precision suffices for most applications, it presents challenges for certain filesystems and use cases.</p><h4>Problems with existing coarse-grained timestamps</h4><p>Network File System (NFS), especially versions like NFSv3, is one area where this limitation becomes problematic. When a server experiences frequent file updates within a single jiffy, the client cannot reliably determine whether its cached file contents have become stale. Modern NFS implementations aim to cache file contents more aggressively to improve performance, but this requires accurate mechanisms to invalidate stale data. Since NFS clients rely on <code>mtime</code> and <code>ctime</code> comparisons to detect changes on the server side, coarse-grained timestamps hinder their effectiveness. Similar issues affect backup applications like <code>rsync</code>, which also depend on precise timestamps to detect file modifications.</p><p><strong>A natural question arises: </strong><em><strong>why not simply switch to higher-resolution timestamps across the board?</strong></em><strong> </strong><br>The answer lies in filesystem performance. Updates to <code>mtime</code> and <code>ctime</code> involve changes to inode metadata. If every read or write operation triggered frequent, fine-grained timestamp updates, it would significantly increase the volume of metadata writes. These metadata updates are often journalled to ensure filesystem integrity, adding further overhead. This tradeoff explains the kernel's reliance on coarse-grained timestamps by default: they strike a balance between functionality and performance.</p><p>For example, the on-disk structure of <code>ext4</code> inodes (<code>struct ext4_inode</code>) reflects this design, with dedicated fields for <code>atime</code>, <code>mtime</code>, and <code>ctime</code> timestamps.</p><pre><code><code>/*
 * Structure of an inode on the disk
 */
struct ext4_inode {
&#9;__le16&#9;i_mode;&#9;&#9;/* File mode */
&#9;__le16&#9;i_uid;&#9;&#9;/* Low 16 bits of Owner Uid */
&#9;__le32&#9;i_size_lo;&#9;/* Size in bytes */
&#9;__le32&#9;i_atime;&#9;/* Access time */
&#9;__le32&#9;i_ctime;&#9;/* Inode Change time */
&#9;__le32&#9;i_mtime;&#9;/* Modification time */
        &lt;...&gt;
};
</code></code></pre><p>Coarse-grained timestamps strike a balance by reducing the frequency of metadata updates, thereby improving performance. However, as discussed NFS and certain applications require more finer grained timestamp updates. This is where the multi-grain timestamp updates can be helpful.</p><h3>Multi-grain Timestamp</h3><p>The feature addresses this limitation by dynamically adjusting the resolution of timestamps. When an inode&#8217;s attributes are being actively observed via <code>-&gt;getattr()</code>, the kernel uses a higher-resolution timestamp for <code>mtime</code> and <code>ctime</code>. For inodes that are not being actively monitored, coarse-grained timestamps remain in use. This adaptive approach provides finer granularity where needed while preserving the performance benefits of coarser timestamps for other cases.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.linuxnews.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading LinuxNews.Dev &#128039;! Subscribe if you &#10084; reading the content.  </p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><h4><strong>Problems with multi-grain 6.6 implementation</strong></h4><p>The initial implementation, however, exposed a significant problem. If two files, <code>f1</code> and <code>f2</code>, are modified in close succession, but <code>f1</code> receives a fine-grained timestamp while <code>f2</code> is updated with a coarse-grained timestamp, the result could imply that <code>f2</code> was modified before <code>f1</code>, violating the VFS ordering guarantees. This issue was one of the primary reasons for reverting the feature during the 6.6 merge window.</p><h4>6.13 multi-grain timestamp fix and filesystem documentation</h4><p>After discussions at LSFMM 2024, Jeff revisited the feature and proposed a rather simple fix to the problem. Christian Brauner described the fix in the pull request as:</p><blockquote><p>To prevent this, a floor value is maintained for multigrain timestamps. Whenever a fine-grained timestamp is handed out, record it, and when later coarse-grained stamps are handed out, ensure they are not earlier than that value. If the coarse-grained timestamp is earlier than the fine-grained floor, return the floor value instead.</p></blockquote><p>This approach preserves the integrity of VFS ordering guarantees while allowing the kernel to use multi-grain timestamps effectively. Jeff Layton has since converted most major filesystems to support the feature.</p><p>The documentation outlines how filesystems can opt into multi-grain timestamps with minimal changes. i.e.</p><blockquote><p>For most filesystems, it's sufficient to just set the <code>FS_MGTIME</code> flag in the <code>fstype-&gt;fs_flags</code> in order to opt-in, providing the ctime is only ever set via <code>inode_set_ctime_current()</code>. If the filesystem has a <code>-&gt;getattr</code> routine that doesn't call generic_fillattr, then it should call <code>fill_mg_cmtime()</code> to fill those values. For <code>setattr</code>, it should use <code>setattr_copy()</code> to update the timestamps, or otherwise mimic its behavior.</p></blockquote><h3>Conclusion</h3><p>The inclusion of multi-grain timestamps in kernel 6.13 is a significant milestone for Linux filesystem community. For filesystems like NFS, this feature will enable more efficient caching behavior, improving performance and addressing long-standing issues with timestamp granularity.</p><p>References:<br>[1]: <a href="https://lore.kernel.org/all/20241115-vfs-mgtime-1dd54cc6d322@brauner/">https://lore.kernel.org/all/20241115-vfs-mgtime-1dd54cc6d322@brauner/</a><br>[2]: <a href="https://lwn.net/Articles/975863/">https://lwn.net/Articles/975863/</a><br>[3]: <a href="https://lwn.net/Articles/946394/">https://lwn.net/Articles/946394/</a><br>[4]: <a href="https://lore.kernel.org/all/20240711-mgtime-v5-0-37bb5b465feb@kernel.org/">https://lore.kernel.org/all/20240711-mgtime-v5-0-37bb5b465feb@kernel.org/</a><br>[5]: <a href="https://www.kernel.org/doc/html/next/filesystems/multigrain-ts.html">https://www.kernel.org/doc/html/next/filesystems/multigrain-ts.htm</a></p>]]></content:encoded></item><item><title><![CDATA[Bash Gotchas [[ ... ]] v/s [ ... ]: Part-2]]></title><description><![CDATA[In our previous discussion, we explored the subtleties between [[ ... ]] and [ ... ] in Bash scripting and when to use each. However, a common mistake is always using [[ ]] or [ ] with if conditions, even when it's not appropriate. Remember, [[ ]] and [ ] are used for evaluating conditional expressions such as string comparisons, pattern matching, or file tests - not for ....]]></description><link>https://blog.linuxnews.dev/p/bash-gotchas-vs-part-2</link><guid isPermaLink="false">https://blog.linuxnews.dev/p/bash-gotchas-vs-part-2</guid><dc:creator><![CDATA[Linuxdev]]></dc:creator><pubDate>Sat, 30 Nov 2024 06:26:39 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1640552435388-a54879e72b28?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2fHxsaW51eCUyMHRlcm1pbmFsfGVufDB8fHx8MTczMjk0NzkwOXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1640552435388-a54879e72b28?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2fHxsaW51eCUyMHRlcm1pbmFsfGVufDB8fHx8MTczMjk0NzkwOXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1640552435388-a54879e72b28?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2fHxsaW51eCUyMHRlcm1pbmFsfGVufDB8fHx8MTczMjk0NzkwOXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1640552435388-a54879e72b28?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2fHxsaW51eCUyMHRlcm1pbmFsfGVufDB8fHx8MTczMjk0NzkwOXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1640552435388-a54879e72b28?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2fHxsaW51eCUyMHRlcm1pbmFsfGVufDB8fHx8MTczMjk0NzkwOXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1640552435388-a54879e72b28?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2fHxsaW51eCUyMHRlcm1pbmFsfGVufDB8fHx8MTczMjk0NzkwOXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1640552435388-a54879e72b28?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2fHxsaW51eCUyMHRlcm1pbmFsfGVufDB8fHx8MTczMjk0NzkwOXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" width="7008" height="4672" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1640552435388-a54879e72b28?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2fHxsaW51eCUyMHRlcm1pbmFsfGVufDB8fHx8MTczMjk0NzkwOXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:4672,&quot;width&quot;:7008,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;a computer screen with a program running on it&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="a computer screen with a program running on it" title="a computer screen with a program running on it" srcset="https://images.unsplash.com/photo-1640552435388-a54879e72b28?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2fHxsaW51eCUyMHRlcm1pbmFsfGVufDB8fHx8MTczMjk0NzkwOXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1640552435388-a54879e72b28?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2fHxsaW51eCUyMHRlcm1pbmFsfGVufDB8fHx8MTczMjk0NzkwOXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1640552435388-a54879e72b28?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2fHxsaW51eCUyMHRlcm1pbmFsfGVufDB8fHx8MTczMjk0NzkwOXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1640552435388-a54879e72b28?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2fHxsaW51eCUyMHRlcm1pbmFsfGVufDB8fHx8MTczMjk0NzkwOXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Linux terminal Photo by Lukas on Unsplash</figcaption></figure></div><h3>The $? Variable and Exit Statuses</h3><p>In our previous discussion, we explored the subtleties between <code>[[ ... ]]</code> and <code>[ ... ]</code> in Bash scripting and when to use each. However, a common mistake is always using <code>[[ ]]</code> or <code>[ ]</code> with <code>if</code> conditions, even when it's not appropriate. Remember, <code>[[ ]]</code> and <code>[ ]</code> are used for <strong>evaluating conditional expressions</strong> such as string comparisons, pattern matching, or file tests - not for checking the exit status of commands or functions.</p><h4>Common Mistake: Misusing [[...]] or [...] to Check Command Exit Status</h4><p>Let's consider an example to illustrate this point:</p><pre><code><code>function myfunc() {
    echo "myfunc ran"
    [[ $# -eq 0 ]] &amp;&amp; return 1 || return 0
}

if [[ myfunc ]]; then
    echo "return success"
else
    echo "return failure"
fi
</code></code></pre><h5>What Is the Output?</h5><pre><code><code>return success
</code></code></pre><h4>Explanation</h4><p>In this example, <code>myfunc</code><strong> never runs in the </strong><code>if</code><strong> condition</strong>. This is because <code>[[ myfunc ]]</code> is evaluating the conditional expression with the string <code>"myfunc"</code>, not executing the function. In Bash, any non-empty string inside <code>[[ ]]</code> evaluates to <strong>true</strong>, so the <code>then</code> branch is always executed, regardless of the function's existence or its return value.</p><h4>Attempting to Fix with Command Substitution</h4><p>Now, let's try using command substitution:</p><pre><code><code>function myfunc() {
    echo "myfunc ran"
    [[ $# -eq 0 ]] &amp;&amp; return 1 || return 0
}

if [[ $(myfunc) ]]; then
    echo "return success"
else
    echo "return failure"
fi
</code></code></pre><h5>What Is the Output?</h5><pre><code><code>return success
</code></code></pre><h4>Explanation</h4><p>Here, <code>$(myfunc)</code> executes <code>myfunc</code> and captures its <strong>output</strong>, not its <strong>exit status</strong>. The <code>if [[ ... ]]</code> condition now evaluates the output of <code>myfunc</code>, which is the string <code>"myfunc ran"</code>. Since this is a non-empty string, the condition evaluates to <strong>true</strong>, and <code>"return success"</code> is printed.</p><p>However, this still doesn't correctly check the function's exit status.</p><h4>The Correct Way to Check Function Exit Status</h4><p>To properly check whether <code>myfunc</code> succeeds or fails based on its <strong>exit status</strong>, you should call the function directly in the <code>if</code> condition without <code>[[ ]]</code> or <code>[ ]</code>. In Bash, <code>if</code> statements can directly evaluate the exit status of a command or function.</p><h5>Corrected Script</h5><pre><code><code>function myfunc() {
    echo "myfunc ran"
    [[ $# -eq 0 ]] &amp;&amp; return 1 || return 0
}

if myfunc; then
    echo "return success"
else
    echo "return failure"
fi

if myfunc "arg"; then
    echo "return success"
else
    echo "return failure"
fi
</code></code></pre><h5>Output:</h5><pre><code><code>myfunc ran
return failure
myfunc ran
return success
</code></code></pre><h5>Explanation</h5><ul><li><p><strong>First </strong><code>if myfunc; then</code><strong> block:</strong></p><ul><li><p><code>myfunc</code> is called <strong>without arguments</strong>, so <code>$# -eq 0</code> is true.</p></li><li><p>The function executes <code>return 1</code>, indicating failure.</p></li><li><p>The <code>if</code> condition evaluates the exit status <code>1</code> (non-zero), which is considered <strong>false</strong>.</p></li><li><p><code>"return failure"</code> is printed.</p></li></ul></li><li><p><strong>Second </strong><code>if myfunc "arg"; then</code><strong> block:</strong></p><ul><li><p><code>myfunc</code> is called <strong>with one argument</strong>, so <code>$# -eq 0</code> is false.</p></li><li><p>The function executes <code>return 0</code>, indicating success.</p></li><li><p>The <code>if</code> condition evaluates the exit status <code>0</code>, which is considered <strong>true</strong>.</p></li><li><p><code>"return success"</code> is printed.</p></li></ul></li></ul><h4>Key Takeaways</h4><ul><li><p><strong>Use </strong><code>if myfunc; then</code><strong> to check a function's exit status.</strong></p><ul><li><p>The <code>if</code> statement directly evaluates the exit status of the command or function.</p></li><li><p>An exit status of <code>0</code> is <strong>true</strong>; any non-zero exit status is <strong>false</strong>.</p></li></ul></li><li><p><strong>Do not use </strong><code>[[ ]]</code><strong> or </strong><code>[ ]</code><strong> when you intend to check the exit status of a command or function.</strong></p><ul><li><p><code>[[ ]]</code> and <code>[ ]</code> are for evaluating conditional expressions, not for executing commands.</p></li><li><p>Placing a command inside <code>[[ ]]</code> or <code>[ ]</code> does not execute it; it treats it as a string or expression.</p></li></ul></li><li><p><strong>Command substitution </strong><code>$(...)</code><strong> captures the output of a command, not its exit status.</strong></p><ul><li><p>Using <code>$(myfunc)</code> inside <code>[[ ]]</code> captures the output of <code>myfunc</code>.</p></li><li><p>If the output is non-empty, the condition will be <strong>true</strong>, regardless of the function's exit status.</p></li></ul></li><li><p><strong>What about using </strong><code>[ ]</code><strong> (the </strong><code>test</code><strong> command)?</strong></p><ul><li><p>Similar to <code>[[ ]]</code>, using <code>if [ myfunc ]; then</code> checks if the string <code>myfunc</code> is non-empty.</p></li><li><p>It does not execute the <code>myfunc</code> function.</p></li></ul></li><li><p><strong>Using the </strong><code>$?</code><strong> Variable:</strong></p><ul><li><p>Alternatively, you can capture the exit status using <code>$?</code> immediately after the function call. This method works but is less concise than calling the function directly in the <code>if</code> condition.</p></li></ul></li></ul><pre><code><code>myfunc
if [ $? -eq 0 ]; then
  echo "return success"
else
  echo "return failure"
fi

</code></code></pre><h4>Conclusion</h4><p>Bash has many such gotchas due it&#8217;s subtle nature. These gotchas can be significantly time consuming to debug if you don&#8217;t know them. Have you encountered other "gotchas" in Bash scripting?<br>Share them with us&#8212;we&#8217;d love &#10084; to discuss more!</p>]]></content:encoded></item><item><title><![CDATA[Bash Gotchas [[ ... ]] vs [ ... ]: Part-1]]></title><description><![CDATA[If you've worked with Bash for any length of time, you've probably encountered both [[ ...]]></description><link>https://blog.linuxnews.dev/p/bash-gotchas-part-1</link><guid isPermaLink="false">https://blog.linuxnews.dev/p/bash-gotchas-part-1</guid><dc:creator><![CDATA[Linuxdev]]></dc:creator><pubDate>Wed, 20 Nov 2024 11:16:12 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1629654291663-b91ad427698f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxiYXNoJTIwbGludXh8ZW58MHx8fHwxNzMyMTAzMjQ1fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you've worked with Bash for any length of time, you've probably encountered both <code>[[ ... ]]</code> and <code>[ ... ]</code> (or test) for writing conditional expressions. At first glance, they may seem interchangeable. But subtle differences between the two can lead to surprising behavior &#8212; especially when handling empty strings.</p><p>Let&#8217;s explore one such "gotcha" scenario.</p><div><hr></div><h3>The Confusing Behavior</h3><p>Consider this simple Bash script:</p><blockquote><p>Note: man page of test</p></blockquote><ul><li><p><code>-n STRING: the length of STRING is nonzero</code></p></li><li><p><code>-z STRING: the length of STRING is zero</code></p></li></ul><pre><code>VAR_STR=""
if [[ -n $VAR_STR ]]; then
    echo "var str is nonzero with [["
else
    echo "var str is zero with [["
fi

if [ -n $VAR_STR ]; then
    echo "var str is nonzero with ["
else
    echo "var str is zero with ["
fi</code></pre><pre><code><strong>When executed, the output is:
</strong>
var str is zero with [[
var str is nonzero with [</code></pre><p>Wait, what? Why is the behavior different? Why does <code>[[ -n $VAR_STR ]]</code> correctly detect the empty string, but <code>[ -n $VAR_STR ]</code> behaves as though the string is non-empty?</p><p>Let&#8217;s break it down.</p><div><hr></div><h3>What&#8217;s Happening Here?</h3><ol><li><p><code>[[ ... ]]</code> in Bash:</p><blockquote><p><code>[[ ... ]]</code><strong> is a Bash keyword</strong> designed for more robust and predictable conditional expressions. When you use <code>[[ ... ]]. </code>Bash treats the entire expression as a syntactic construct. It handles variables safely, even when they are unquoted or empty. <code>-n $VAR_STR</code> checks <code>if $VAR_STR</code> is non-empty, and since <code>$VAR_STR</code> is an empty string, the condition evaluates to false.</p></blockquote><p></p></li><li><p><code>[ ... ]</code> in Bash (POSIX Test):</p><blockquote><p><code>[ ... ]</code><strong> is a POSIX-compliant command (an alias for test)</strong> that behaves like a standard utility. When you use <code>[ ... ]. </code>Bash expands the condition and passes the resulting arguments to the test command. If <code>$VAR_STR</code> is empty and unquoted, the resulting expression becomes<code>[ -n ]. </code>Here, -n is treated as a literal non-empty string, so the condition evaluates to true.</p></blockquote></li></ol><div><hr></div><h3>The Root Cause: Unquoted Variables</h3><p>In the <code>[ ... ]</code> test, failing to quote <code>$VAR_STR</code> causes it to expand to nothing <br>( <code>[ -n ]</code> ), which leads to unexpected behavior. This is why quoting variables is essential when using <code>[ ... ]</code>.</p><div><hr></div><h3>How to Fix This</h3><p>To make your code work consistently, always quote variables when using <code>[ ... ]</code>. Here&#8217;s the corrected script:</p><pre><code>VAR_STR=""

if [[ -n $VAR_STR ]]; then
    echo "var str is nonzero with [["
else
    echo "var str is zero with [["
fi

if [ -n "$VAR_STR" ]; then
    echo "var str is nonzero with ["
else
    echo "var str is zero with ["
fi</code></pre><pre><code><strong>Output:</strong>
var str is zero with [[
var str is zero with [</code></pre><p>Now both<code> [[ ... ]]</code> and <code>[ ... ]</code> behave as expected.</p><div><hr></div><h3>Best Practices</h3><ol><li><p>Prefer <code>[[ ... ]]</code> in Bash Scripts</p><ul><li><p>It&#8217;s safer and easier to use for most scenarios.</p></li><li><p>Quoting variables is optional but still good practice.</p></li></ul></li><li><p>Always Quote Variables in <code>[ ... ]</code></p><ul><li><p>Quoting ensures your script behaves predictably, even with empty or special characters.</p></li></ul></li><li><p>Know Your Shell: Understand whether you&#8217;re targeting Bash or a generic POSIX shell (/bin/sh). Use the appropriate construct accordingly.</p></li></ol><p>In modern Bash scripting, <code>[[ ... ]]</code> is almost always the better choice. But if you need to use <code>[ ... ]</code>: always quote your variables!</p><div><hr></div><h2>Conclusion</h2><p>Bash has many such gotchas due it&#8217;s subtle nature. These gotchas can be significantly time consuming to debug if you don&#8217;t know them. Have you encountered other "gotchas" in Bash scripting? </p><p>Share them with us&#8212;we&#8217;d love to discuss more! </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.linuxnews.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe if you want to hear more about such  Bash Gotchas! &#10084; </p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1629654291663-b91ad427698f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxiYXNoJTIwbGludXh8ZW58MHx8fHwxNzMyMTAzMjQ1fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1629654291663-b91ad427698f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxiYXNoJTIwbGludXh8ZW58MHx8fHwxNzMyMTAzMjQ1fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1629654291663-b91ad427698f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxiYXNoJTIwbGludXh8ZW58MHx8fHwxNzMyMTAzMjQ1fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1629654291663-b91ad427698f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxiYXNoJTIwbGludXh8ZW58MHx8fHwxNzMyMTAzMjQ1fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1629654291663-b91ad427698f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxiYXNoJTIwbGludXh8ZW58MHx8fHwxNzMyMTAzMjQ1fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1629654291663-b91ad427698f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxiYXNoJTIwbGludXh8ZW58MHx8fHwxNzMyMTAzMjQ1fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" width="5184" height="3888" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1629654291663-b91ad427698f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxiYXNoJTIwbGludXh8ZW58MHx8fHwxNzMyMTAzMjQ1fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3888,&quot;width&quot;:5184,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;green and black digital device&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="green and black digital device" title="green and black digital device" srcset="https://images.unsplash.com/photo-1629654291663-b91ad427698f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxiYXNoJTIwbGludXh8ZW58MHx8fHwxNzMyMTAzMjQ1fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1629654291663-b91ad427698f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxiYXNoJTIwbGludXh8ZW58MHx8fHwxNzMyMTAzMjQ1fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1629654291663-b91ad427698f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxiYXNoJTIwbGludXh8ZW58MHx8fHwxNzMyMTAzMjQ1fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1629654291663-b91ad427698f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxiYXNoJTIwbGludXh8ZW58MHx8fHwxNzMyMTAzMjQ1fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><br></p><p></p>]]></content:encoded></item><item><title><![CDATA[Linux Kernel Meetup 2024 (Bangalore)- Q4]]></title><description><![CDATA[Last Bangalore Kernel Meetup of 2024]]></description><link>https://blog.linuxnews.dev/p/linux-kernel-meetup-2024-bangalore</link><guid isPermaLink="false">https://blog.linuxnews.dev/p/linux-kernel-meetup-2024-bangalore</guid><dc:creator><![CDATA[Linuxdev]]></dc:creator><pubDate>Wed, 20 Nov 2024 10:08:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Xpjd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3c81a52-fe62-48fc-8cf2-25cd42c6b11f_1200x676.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Xpjd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3c81a52-fe62-48fc-8cf2-25cd42c6b11f_1200x676.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Xpjd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3c81a52-fe62-48fc-8cf2-25cd42c6b11f_1200x676.png 424w, https://substackcdn.com/image/fetch/$s_!Xpjd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3c81a52-fe62-48fc-8cf2-25cd42c6b11f_1200x676.png 848w, https://substackcdn.com/image/fetch/$s_!Xpjd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3c81a52-fe62-48fc-8cf2-25cd42c6b11f_1200x676.png 1272w, https://substackcdn.com/image/fetch/$s_!Xpjd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3c81a52-fe62-48fc-8cf2-25cd42c6b11f_1200x676.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Xpjd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3c81a52-fe62-48fc-8cf2-25cd42c6b11f_1200x676.png" width="728" height="410.1066666666667" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a3c81a52-fe62-48fc-8cf2-25cd42c6b11f_1200x676.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:676,&quot;width&quot;:1200,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:331359,&quot;alt&quot;:&quot;Linux Kernel Meetup Bangalore 2024&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Linux Kernel Meetup Bangalore 2024" title="Linux Kernel Meetup Bangalore 2024" srcset="https://substackcdn.com/image/fetch/$s_!Xpjd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3c81a52-fe62-48fc-8cf2-25cd42c6b11f_1200x676.png 424w, https://substackcdn.com/image/fetch/$s_!Xpjd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3c81a52-fe62-48fc-8cf2-25cd42c6b11f_1200x676.png 848w, https://substackcdn.com/image/fetch/$s_!Xpjd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3c81a52-fe62-48fc-8cf2-25cd42c6b11f_1200x676.png 1272w, https://substackcdn.com/image/fetch/$s_!Xpjd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3c81a52-fe62-48fc-8cf2-25cd42c6b11f_1200x676.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><strong>Last Bangalore Kernel Meetup of 2024</strong></h3><p>The final Bangalore Kernel Meetup of 2024 is just around the corner, and it's shaping up to be an important event for the Linux kernel enthusiast community in the city. Here are the important details you need to know about this exciting gathering.<br><br>An email from Vinod Koul was sent out yesterday with all the following <a href="https://groups.google.com/g/kernel-meetup-bangalore/c/-EuUeEdjKpQ?ref=linuxnews.dev">details</a>.</p><div><hr></div><h3><strong>Key Details</strong></h3><ul><li><p><strong>Date:</strong> Saturday, 23rd November 2024</p></li><li><p><strong>Time:</strong> 9:00 AM - 4:30 PM</p></li><li><p><strong>Location:</strong><br><strong>Texas Instruments India Pvt. Ltd.</strong><br>66/3, Bagmane Tech Park Rd, Opposite LRDE Post,<br>Byrasandra, C V Raman Nagar,<br>Bengaluru, Karnataka 560093<br></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oLPD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb69017e1-1e72-4ddb-b294-2e60b5ef50e9_1033x737.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oLPD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb69017e1-1e72-4ddb-b294-2e60b5ef50e9_1033x737.png 424w, https://substackcdn.com/image/fetch/$s_!oLPD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb69017e1-1e72-4ddb-b294-2e60b5ef50e9_1033x737.png 848w, https://substackcdn.com/image/fetch/$s_!oLPD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb69017e1-1e72-4ddb-b294-2e60b5ef50e9_1033x737.png 1272w, https://substackcdn.com/image/fetch/$s_!oLPD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb69017e1-1e72-4ddb-b294-2e60b5ef50e9_1033x737.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oLPD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb69017e1-1e72-4ddb-b294-2e60b5ef50e9_1033x737.png" width="728" height="519.3959341723137" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b69017e1-1e72-4ddb-b294-2e60b5ef50e9_1033x737.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:737,&quot;width&quot;:1033,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:118712,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oLPD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb69017e1-1e72-4ddb-b294-2e60b5ef50e9_1033x737.png 424w, https://substackcdn.com/image/fetch/$s_!oLPD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb69017e1-1e72-4ddb-b294-2e60b5ef50e9_1033x737.png 848w, https://substackcdn.com/image/fetch/$s_!oLPD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb69017e1-1e72-4ddb-b294-2e60b5ef50e9_1033x737.png 1272w, https://substackcdn.com/image/fetch/$s_!oLPD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb69017e1-1e72-4ddb-b294-2e60b5ef50e9_1033x737.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h3><strong>Registration Information</strong></h3><p>For those who submitted talk proposals, your registrations have already been processed. General registration will open in <strong>two slots</strong> on <strong>Wednesday, 20th November 2024</strong>. Be sure to register quickly to secure your spot for this exciting event!<br><br><strong>How to Register:</strong><br>&#8226;&#8195;<strong>Registration Link:</strong> &nbsp;<a href="https://my.weezevent.com/bangalore-kernel-meetup-1?ref=linuxnews.dev">https://my.weezevent.com/bangalore-kernel-meetup-1</a><br>&#8226;&#8195;<strong>Deadline:</strong> Until all seats are filled</p><div><hr></div><p><strong>Looking Ahead</strong></p><p>The Bangalore Linux Kernel Meetup has always been about more than just technical talks&#8212;it's a platform for connecting, learning, and growing as a community. Whether you're a veteran kernel developer or someone curious about the Linux ecosystem, this event offers something for everyone.</p><p>Make sure to check out this exciting opportunity to engage in knowledge sharing, networking, and community building. The organizers are pulling out all the stops to make the last meetup of 2024 an event to remember!</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.linuxnews.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Get such updates delivered directly in your inbox! </p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>