FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor


 
 
LinkBack Thread Tools
 
Old 08-05-2012, 10:45 AM
Tom Gundersen
 
Default btrfs-progs

On Aug 5, 2012 6:04 AM, "C Anthony Risinger" <anthony@xtfx.me> wrote:
>
> On Sat, Aug 4, 2012 at 7:53 AM, Jackson Alley <toomanymirrors@gmail.com>
wrote:
> >
> > I've rebooted and confirmed the udev rule I found does not resolve the
> > issue. I don't believe the problem lies with mkinitcpio as I'm not using
> > a root btrfs system but rather in the init scripts
> > (
https://projects.archlinux.org/initscripts.git/commit/?id=13ca7f028ac775773a6685966d0faeee5cc55a9d
).
> > I've attached the boot log and dmesg output.
> > dmesg: http://pastebin.com/PxfnYgAm
> > boot log: http://pastebin.com/Pg9xY4u5
>
> yeah i didn't think mkinitcpio was involved but you said it was
> throwing an error about a missing btrfs hook, even though you have no
> hook defined ... so i asked.
>
> AFIAK the FS module is not loaded automatically until mount time --
> dmesg shows the module being loaded at that time, not when scanned.
> dracut loads the module just prior to calling `device scan`:
>
>
http://git.kernel.org/?p=boot/dracut/dracut.git;a=blob;f=modules.d/90btrfs/80-btrfs.rules;h=e74f9a6af647e465d9367e95b37aef2e57dd fdbe;hb=HEAD
>
> ... and since scanning requires /dev/btrfs-control, which is not
> created until the btrfs module is loaded, the module MUST be loaded to
> properly register the device. i was able to confirm that `btrfs
> device scan` DOES NOT automatically load the required `btrfs` module.
>
> your dmesg shows required devices loading at this time:
>
> [ 4.058562] sd 9:0:0:0: [sde] 976773168 512-byte logical blocks:
> (500 GB/465 GiB)
>
> ... but the module is not loaded until after all devices fire:
>
> [ 4.171028] Btrfs loaded
>
> ... therefore probably nothing was registered, and thus a few seconds
> later you see:
>
> [ 6.081051] btrfs: failed to read the system array on sde1
>
> ... try this (tested for one device, unverified for more):
>
> # cat /usr/lib/udev/rules.d/70-btrfs.rules
> ACTION!="remove", SUBSYSTEM=="block", ENV{ID_FS_TYPE}=="btrfs",
> RUN+="/sbin/modprobe btrfs", RUN+="/usr/bin/btrfs device scan
> $env{DEVNAME}"

This makes a lot of sense. Please verify.

Tom
 
Old 08-05-2012, 11:40 AM
Jackson Alley
 
Default btrfs-progs

On 08/05/2012 06:45 AM, Tom Gundersen wrote:
> On Aug 5, 2012 6:04 AM, "C Anthony Risinger" <anthony@xtfx.me> wrote:
>> On Sat, Aug 4, 2012 at 7:53 AM, Jackson Alley <toomanymirrors@gmail.com>
> wrote:
>>> I've rebooted and confirmed the udev rule I found does not resolve the
>>> issue. I don't believe the problem lies with mkinitcpio as I'm not using
>>> a root btrfs system but rather in the init scripts
>>> (
> https://projects.archlinux.org/initscripts.git/commit/?id=13ca7f028ac775773a6685966d0faeee5cc55a9d
> ).
>>> I've attached the boot log and dmesg output.
>>> dmesg: http://pastebin.com/PxfnYgAm
>>> boot log: http://pastebin.com/Pg9xY4u5
>> yeah i didn't think mkinitcpio was involved but you said it was
>> throwing an error about a missing btrfs hook, even though you have no
>> hook defined ... so i asked.
>>
>> AFIAK the FS module is not loaded automatically until mount time --
>> dmesg shows the module being loaded at that time, not when scanned.
>> dracut loads the module just prior to calling `device scan`:
>>
>>
> http://git.kernel.org/?p=boot/dracut/dracut.git;a=blob;f=modules.d/90btrfs/80-btrfs.rules;h=e74f9a6af647e465d9367e95b37aef2e57dd fdbe;hb=HEAD
>> ... and since scanning requires /dev/btrfs-control, which is not
>> created until the btrfs module is loaded, the module MUST be loaded to
>> properly register the device. i was able to confirm that `btrfs
>> device scan` DOES NOT automatically load the required `btrfs` module.
>>
>> your dmesg shows required devices loading at this time:
>>
>> [ 4.058562] sd 9:0:0:0: [sde] 976773168 512-byte logical blocks:
>> (500 GB/465 GiB)
>>
>> ... but the module is not loaded until after all devices fire:
>>
>> [ 4.171028] Btrfs loaded
>>
>> ... therefore probably nothing was registered, and thus a few seconds
>> later you see:
>>
>> [ 6.081051] btrfs: failed to read the system array on sde1
>>
>> ... try this (tested for one device, unverified for more):
>>
>> # cat /usr/lib/udev/rules.d/70-btrfs.rules
>> ACTION!="remove", SUBSYSTEM=="block", ENV{ID_FS_TYPE}=="btrfs",
>> RUN+="/sbin/modprobe btrfs", RUN+="/usr/bin/btrfs device scan
>> $env{DEVNAME}"
> This makes a lot of sense. Please verify.
>
> Tom
Thanks you guys, this worked with slight modification:
$ cat /etc/udev/rules.d/60-btrfs.rules
ACTION!="remove", SUBSYSTEM=="block", ENV{ID_FS_TYPE}=="btrfs",
RUN+="/sbin/modprobe btrfs", RUN+="/sbin/btrfs device scan $env{DEVNAME}"

Jackson
 

Thread Tools




All times are GMT. The time now is 04:58 PM.

VBulletin, Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright ©2007 - 2008, www.linux-archive.org