unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
From: Guillaume Le Vaillant <glv@posteo.net>
To: 38435@debbugs.gnu.org
Subject: bug#38435: BTRFS open_ctree failed
Date: Sat, 30 Nov 2019 17:01:08 +0100	[thread overview]
Message-ID: <87sgm5nykb.fsf@yamatai> (raw)
In-Reply-To: <87tv6lo1pk.fsf@yamatai>


Guillaume Le Vaillant skribis:

> raingloom skribis:
>
>> This is what I get after a recent `guix system reconfigure` :
>> Scanning for Btrfs filesystems
>> [    2.342790] BTRFS error (device sda1): open_ctree failed
>>
>> Previous profiles work, I haven't modified anything about my config.scm
>> between them.
>>
>> [...]
>>
>>
>> Contents of /etc/profile.scm:
>>
>> [...]
>>
>>   (file-systems (cons* (file-system
>>                          (device (file-system-label "GUIX"))
>>                          (mount-point "/")
>> 			 (options "lazytime,compress")
>>                          (type "btrfs"))
>>                        ;(file-system
>>                        ;  (device (uuid "1234-ABCD" 'fat))
>>                        ;  (mount-point "/boot/efi")
>>                        ;  (type "vfat"))
>>                        %base-file-systems))
>>
>
> I just tried adding the 'lazytime' option to my root file system, and
> I got the same error as you when booting. Could you try removing it and
> see if it works?
>
> Until recently, the options declared in 'file-system' records were
> always ignored when mounting the root file system. Now they are taken
> into consideration, and I think it reveals a bug in the way file systems
> are mounted. If some options like 'lazytime' or 'defaults' are declared
> in a 'file-system' record (root file system or not), mounting it fails.
> However some other options like 'compress' or 'autodefrag' work fine.
>
> I suspect Guix adds some options by default when trying to mount file
> systems, and maybe we end up with conflicting options or doubled options
> that cause problems.

Apparently, Guix uses the 'mount' system call directly to mount file
systems (c.f. 'guix/build/syscalls.scm'), and passes all the options
declared in the 'file-system' records in the 'data' argument.

However the man page for mount(2) indicates:

--8<---------------cut here---------------start------------->8---
int mount(const char *source, const char *target,
                const char *filesystemtype, unsigned long mountflags,
                const void *data);

[...]

The data argument is interpreted by the different filesystems.
Typically it is a string of comma-separated options understood by this
filesystem.  See mount(8) for details of the options available for each
filesystem type.
--8<---------------cut here---------------end--------------->8---

If I understand correcly, the generic options (e.g. 'lazytime') must be
passed in 'mountflags', and the options specific to the file system
(e.g. 'compress') must be passed in 'data'.

This would mean that before calling the 'mount' system call, we must
remove the generic options from the 'options' variable (which is then
passed in 'data'), and add their corresponding flags to the 'flags'
variable (which is then passed in 'mountflags').

What do you think?

  reply	other threads:[~2019-11-30 16:02 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-30 13:45 bug#38435: BTRFS open_ctree failed raingloom
2019-11-30 14:53 ` Guillaume Le Vaillant
2019-11-30 16:01   ` Guillaume Le Vaillant [this message]
2019-12-01 11:02   ` raingloom
2019-12-03  9:47     ` Guillaume Le Vaillant
2021-02-01 19:16       ` Maxim Cournoyer
2020-02-18 16:29   ` Maxim Cournoyer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87sgm5nykb.fsf@yamatai \
    --to=glv@posteo.net \
    --cc=38435@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).