<feed xmlns='http://www.w3.org/2005/Atom'>
<title>guix/gnu/build/file-systems.scm, branch nckx-patch-1</title>
<subtitle>Transactional package manager, declarative GNU/Linux distribution, reproducible deployment tool, and more! https://guix.gnu.org</subtitle>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/'/>
<entry>
<title>revert 7e7487166b02aa41d42e96a1dfccaceda7fefc12</title>
<updated>2026-03-29T11:12:19+00:00</updated>
<author>
<name>nckx</name>
<email>me@tobias.gr</email>
</author>
<published>2026-03-29T11:12:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=9ea6ba31b92ca2e20cf41ca40860178da5838104'/>
<id>9ea6ba31b92ca2e20cf41ca40860178da5838104</id>
<content type='text'>
Since commit 7e7487166b02aa41d42e96a1dfccaceda7fefc12, Guix System treats devices starting with "/dev/" as special and won't even try to mount them if the whole string isn't an existing file name.

This strict naming policy is (AFAIK?) Guix-specific and breaks things like booting multi-device bcachefs file systems:

  waiting for partition '/dev/sda1:/dev/sdb1' to appear...
  waiting for partition '/dev/sda1:/dev/sdb1' to appear...

…ad infinitum until crashing to a Guile prompt.

Guix must not enforce custom naming policies like this. On the contrary: we should defer mounting to the kernel whenever possible, and handle failures only when they occur.

We can still delay mounts, retry failed mounts, and try to set up favourable mount conditions based on what we think the mount(2) SOURCE looks like, without adding our own arbitrary rules.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since commit 7e7487166b02aa41d42e96a1dfccaceda7fefc12, Guix System treats devices starting with "/dev/" as special and won't even try to mount them if the whole string isn't an existing file name.

This strict naming policy is (AFAIK?) Guix-specific and breaks things like booting multi-device bcachefs file systems:

  waiting for partition '/dev/sda1:/dev/sdb1' to appear...
  waiting for partition '/dev/sda1:/dev/sdb1' to appear...

…ad infinitum until crashing to a Guile prompt.

Guix must not enforce custom naming policies like this. On the contrary: we should defer mounting to the kernel whenever possible, and handle failures only when they occur.

We can still delay mounts, retry failed mounts, and try to set up favourable mount conditions based on what we think the mount(2) SOURCE looks like, without adding our own arbitrary rules.
</pre>
</div>
</content>
</entry>
<entry>
<title>file-systems: canonicalize-device-spec: Wait for device to exist.</title>
<updated>2026-02-23T02:56:12+00:00</updated>
<author>
<name>Rutherther</name>
<email>rutherther@ditigal.xyz</email>
</author>
<published>2026-02-04T20:26:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=7e7487166b02aa41d42e96a1dfccaceda7fefc12'/>
<id>7e7487166b02aa41d42e96a1dfccaceda7fefc12</id>
<content type='text'>
Waits for devices specified by a string.

Fixes: #6134
Change-Id: I430483deccb70fad44fe0e141afc050ae41308dc
Signed-off-by: Maxim Cournoyer &lt;maxim@guixotic.coop&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Waits for devices specified by a string.

Fixes: #6134
Change-Id: I430483deccb70fad44fe0e141afc050ae41308dc
Signed-off-by: Maxim Cournoyer &lt;maxim@guixotic.coop&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>file-systems: mount-file-system: Guard against missing devices.</title>
<updated>2026-02-23T02:46:09+00:00</updated>
<author>
<name>Rutherther</name>
<email>rutherther@ditigal.xyz</email>
</author>
<published>2026-02-04T18:19:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=e3d8fc1147d03b6e6a47f8f1976068ad0faec9ab'/>
<id>e3d8fc1147d03b6e6a47f8f1976068ad0faec9ab</id>
<content type='text'>
When a device with a UUID is missing, canonicalize-device-spec will throw an
error. This error is not handled for mount-may-fail? devices. That means
that if you use UUID device and it isn't available, the boot will hang on
the user-file-systems not being started. All user services depend on that
service.

Also added a test for this behavior.

* gnu/build/file-systems.scm
(mount-file-system): Guard canonicalize-device-spec call.
(canonicalize-device-spec): Throw &amp;partition-lookup-error on missing
partition.
(&amp;partition-lookup-error): New variable.
* gnu/tests/base.scm (%test-missing-file-system): New variable.

Change-Id: I3b8d652251cef421cff6d2fdafb8d9d7d1fc74b5
Reported-By: renbus, on IRC
Signed-off-by: Maxim Cournoyer &lt;maxim@guixotic.coop&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When a device with a UUID is missing, canonicalize-device-spec will throw an
error. This error is not handled for mount-may-fail? devices. That means
that if you use UUID device and it isn't available, the boot will hang on
the user-file-systems not being started. All user services depend on that
service.

Also added a test for this behavior.

* gnu/build/file-systems.scm
(mount-file-system): Guard canonicalize-device-spec call.
(canonicalize-device-spec): Throw &amp;partition-lookup-error on missing
partition.
(&amp;partition-lookup-error): New variable.
* gnu/tests/base.scm (%test-missing-file-system): New variable.

Change-Id: I3b8d652251cef421cff6d2fdafb8d9d7d1fc74b5
Reported-By: renbus, on IRC
Signed-off-by: Maxim Cournoyer &lt;maxim@guixotic.coop&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>file-systems: Support the 'remount' mount flag.</title>
<updated>2025-11-06T22:29:46+00:00</updated>
<author>
<name>Sören Tempel</name>
<email>soeren+git@soeren-tempel.net</email>
</author>
<published>2025-10-27T03:11:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=08db14c74f5d0608f70f87c0cdbcb80fd0a499f5'/>
<id>08db14c74f5d0608f70f87c0cdbcb80fd0a499f5</id>
<content type='text'>
This allows remounting file systems which are already mounted by
the initrd with custom mount options (e.g. /proc with hidepid=2).

* gnu/build/file-systems.scm (mount-flags-&gt;bit-mask): Map 'remount
to MS_REMOUNT.
* gnu/system/file-systems.scm (invalid-file-system-flags): Add
'remount to the list of KNOWN-FLAGS.
* doc/guix.texi (File Systems): Document it.

Fixes: guix/guix#3849
Change-Id: I0ab116a5b4f7bd201e955ecf022e260c63828dc4
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This allows remounting file systems which are already mounted by
the initrd with custom mount options (e.g. /proc with hidepid=2).

* gnu/build/file-systems.scm (mount-flags-&gt;bit-mask): Map 'remount
to MS_REMOUNT.
* gnu/system/file-systems.scm (invalid-file-system-flags): Add
'remount to the list of KNOWN-FLAGS.
* doc/guix.texi (File Systems): Document it.

Fixes: guix/guix#3849
Change-Id: I0ab116a5b4f7bd201e955ecf022e260c63828dc4
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>file-systems: Fix article usage in docstrings.</title>
<updated>2025-09-21T17:08:33+00:00</updated>
<author>
<name>Jean-Baptiste Note</name>
<email>jean-baptiste.note@m4x.org</email>
</author>
<published>2025-09-14T12:14:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=8118eb0b5aac3d0327a570f7cf454bd59760046d'/>
<id>8118eb0b5aac3d0327a570f7cf454bd59760046d</id>
<content type='text'>
* gnu/build/file-systems.scm (linux-swap-superblock?)
(read-linux-swap-superblock, bcachefs-superblock?): Use "a" instead of
"an" before consonant sounds.

Change-Id: Ifb36a125733ff898ecbef0a0a546819130707fba
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* gnu/build/file-systems.scm (linux-swap-superblock?)
(read-linux-swap-superblock, bcachefs-superblock?): Use "a" instead of
"an" before consonant sounds.

Change-Id: Ifb36a125733ff898ecbef0a0a546819130707fba
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>file-systems: Add support for hibernation swap detection.</title>
<updated>2025-09-21T17:08:28+00:00</updated>
<author>
<name>Jean-Baptiste Note</name>
<email>jean-baptiste.note@m4x.org</email>
</author>
<published>2025-09-11T19:10:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=ec135370533b1fe3771bfc9c199f734863893e7f'/>
<id>ec135370533b1fe3771bfc9c199f734863893e7f</id>
<content type='text'>
* gnu/build/file-systems.scm (%linux-swsuspend-magic): New variable.
(linux-swsuspend-superblock?, read-linux-swsuspend-superblock): New
procedures.
(%partition-label-readers, %partition-uuid-readers): Add readers for
linux-swsuspend superblocks.

Change-Id: If77ca9b4ae1f72c4e9ce52149b10d331566b0030
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* gnu/build/file-systems.scm (%linux-swsuspend-magic): New variable.
(linux-swsuspend-superblock?, read-linux-swsuspend-superblock): New
procedures.
(%partition-label-readers, %partition-uuid-readers): Add readers for
linux-swsuspend superblocks.

Change-Id: If77ca9b4ae1f72c4e9ce52149b10d331566b0030
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Reapply "Update Maxim's email address."</title>
<updated>2025-09-18T04:44:12+00:00</updated>
<author>
<name>Maxim Cournoyer</name>
<email>maxim@guixotic.coop</email>
</author>
<published>2025-09-18T03:25:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=10482f731e6def20df23caa9cd0b9ab428f52a50'/>
<id>10482f731e6def20df23caa9cd0b9ab428f52a50</id>
<content type='text'>
This reverts commit a7db92d9b389cbe565395523882c34c6eff2c21a, this time with
the more careful command, to avoid a world rebuild:

grep -rl --exclude-dir=build --exclude-dir=patches --exclude=ld-wrapper.in \
  --exclude=sitecustomize.py --exclude=guix-emacs.el maxim.cournoyer@gmail.com |
  xargs sed -i 's/maxim.cournoyer@gmail.com/maxim@guixotic.coop/g'

Change-Id: I0871f5cf9ace79e34e78e24154d0da6ea95a3a91
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit a7db92d9b389cbe565395523882c34c6eff2c21a, this time with
the more careful command, to avoid a world rebuild:

grep -rl --exclude-dir=build --exclude-dir=patches --exclude=ld-wrapper.in \
  --exclude=sitecustomize.py --exclude=guix-emacs.el maxim.cournoyer@gmail.com |
  xargs sed -i 's/maxim.cournoyer@gmail.com/maxim@guixotic.coop/g'

Change-Id: I0871f5cf9ace79e34e78e24154d0da6ea95a3a91
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "Update Maxim's email address."</title>
<updated>2025-09-18T03:07:31+00:00</updated>
<author>
<name>Maxim Cournoyer</name>
<email>maxim@guixotic.coop</email>
</author>
<published>2025-09-18T03:04:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=a7db92d9b389cbe565395523882c34c6eff2c21a'/>
<id>a7db92d9b389cbe565395523882c34c6eff2c21a</id>
<content type='text'>
This reverts commit d0d87a744d724b7e7d5ac013c586039652087bb3. Oops! This
caused a world rebuild.

Change-Id: I25fff644b2b61d0ee93d69b457b04c72b5b74d15
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit d0d87a744d724b7e7d5ac013c586039652087bb3. Oops! This
caused a world rebuild.

Change-Id: I25fff644b2b61d0ee93d69b457b04c72b5b74d15
</pre>
</div>
</content>
</entry>
<entry>
<title>Update Maxim's email address.</title>
<updated>2025-09-17T23:05:19+00:00</updated>
<author>
<name>Maxim Cournoyer</name>
<email>maxim@guixotic.coop</email>
</author>
<published>2025-09-17T23:03:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=d0d87a744d724b7e7d5ac013c586039652087bb3'/>
<id>d0d87a744d724b7e7d5ac013c586039652087bb3</id>
<content type='text'>
The change was automated via:

  git grep -l maxim.cournoyer@gmail.com |
    xargs sed -i 's/maxim.cournoyer@gmail.com/maxim@guixotic.coop/g'

* .mailmap: New entry.

Change-Id: Iaa88b1e51c94159c49138fb43910badb990eb169
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The change was automated via:

  git grep -l maxim.cournoyer@gmail.com |
    xargs sed -i 's/maxim.cournoyer@gmail.com/maxim@guixotic.coop/g'

* .mailmap: New entry.

Change-Id: Iaa88b1e51c94159c49138fb43910badb990eb169
</pre>
</div>
</content>
</entry>
<entry>
<title>file-systems: Support UUIDs for FAT12.</title>
<updated>2025-06-15T22:25:54+00:00</updated>
<author>
<name>Quentin Vincent</name>
<email>quentin_vincent@disroot.org</email>
</author>
<published>2025-06-15T05:35:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=f6b65101dcb9a679eaf74fd235b53de2f4586ac5'/>
<id>f6b65101dcb9a679eaf74fd235b53de2f4586ac5</id>
<content type='text'>
* gnu/build/file-systems.scm (fat16-superblock?): Support FAT12.

Change-Id: Ia14899134e02bda54b0796efb0bc1c6f89e95c0d
Signed-off-by: Danny Milosavljevic &lt;dannym@friendly-machines.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* gnu/build/file-systems.scm (fat16-superblock?): Support FAT12.

Change-Id: Ia14899134e02bda54b0796efb0bc1c6f89e95c0d
Signed-off-by: Danny Milosavljevic &lt;dannym@friendly-machines.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
