Opened 10 years ago

Closed 10 years ago

Last modified 10 years ago

#3963 closed bug (fixed)

Haiku wrongly initialises volume according to BeOS

Reported by: idefix Owned by: axeld
Priority: critical Milestone: R1
Component: File Systems/BFS Version: R1/pre-alpha1
Keywords: Cc:
Blocked By: Blocking:
Has a Patch: no Platform: All

Description

An volume initialised under Haiku (hrev30847) with mkfs or DriveSetup has block allocation mismatches according to chkbfs under BeOS. The repaired volume will crash Haiku when trying to mount it.

Steps to reproduce:

  • Initialise (and check) a volume with Haiku:
    ~> mkfs -t bfs -v /dev/disk/ata/1/master/0 test0mkfs
    Preparing for modifications...
    
    Parameters Validation...
    
    
    About to initialize /dev/disk/ata/1/master/0 with Be File System
    Are you sure you want to do this now?
    
    ALL YOUR DATA in /dev/disk/ata/1/master/0 will be lost forever.
    Continue (yes|[no])? yes
    DiskDeviceJobQueue::Execute(): executing job: Q28BPrivate15UninitializeJob
    DiskDeviceJobQueue::Execute(): executing job: Q28BPrivate13InitializeJob
    Volume Partition 4 (test3) has been initialized successfully!
    
    ~> checkfs /test0mkfs/
    checked 9 nodes, 0 blocks not allocated, 0 blocks already set, 0 blocks could be freed
            files           0
            directories     5
            attributes      0
            attr. dirs      0
            indices         4
    
  • Check the volume with BeOS:
    $ chkbfs /test0mkfs/
    bfs: /dev/disk/ide/ata/1/master/0/0_0 is read-only!
    Files processed:     11
    BFS has 3 blocks allocated that should not be.
    
        Block allocation mismatches detected.  Fixing.
    
        File system check completed.
    
  • Mount the volume with Haiku:
    bfs: mounted "test0mkfs" (root node at 524288, device = /dev/disk/ata/1/master/0)
    bfs: bfs_stat_index:2020: No such file or directory
    bfs: AllocationBlock::Allocate(): some blocks are already allocated, start = 0, numBlocks = 4297
    PANIC: blocks already set!
    Welcome to Kernel Debugging Land...
    Thread 173 "bfs block allocator" running on CPU 0
    kdebug> bt
    stack trace for thread 173 "bfs block allocator"
        kernel stack: 0x80dda000 to 0x80dde000
    frame               caller     <image>:function + offset
     0 80dddba8 (+  48) 80062e5d   <kernel_x86>:invoke_debugger_command + 0x00f5
     1 80dddbd8 (+  64) 80062c4d   <kernel_x86> invoke_pipe_segment(debugger_command_pipe*: [34m0x80132380[0m, int32: [34m0[0m, [34m0x0[0m [31m"<NULL>"[0m) + 0x0079
     2 80dddc18 (+  64) 80062fd4   <kernel_x86>:invoke_debugger_command_pipe + 0x009c
     3 80dddc58 (+  48) 80064584   <kernel_x86> ExpressionParser<[32m0x80dddd0c[0m>::_ParseCommandPipe([34m0x80dddd08[0m) + 0x0234
     4 80dddc88 (+  64) 800639be   <kernel_x86> ExpressionParser<[32m0x80dddd0c[0m>::EvaluateCommand([34m0x80122c00[0m [36m"bt"[0m, [34m0x80dddd08[0m) + 0x02ba
     5 80dddcc8 (+ 224) 800659ac   <kernel_x86>:evaluate_debug_command + 0x0088
     6 80dddda8 (+  64) 80060cd6   <kernel_x86> kernel_debugger_loop() + 0x01ae
     7 80dddde8 (+  32) 80061bdd   <kernel_x86>:kernel_debugger + 0x004d
     8 80ddde08 (+ 192) 80061b85   <kernel_x86>:panic + 0x0029
     9 80dddec8 (+  96) 805c47ee   <bfs> AllocationGroup<[32m0x82d2f800[0m>::Allocate(Transaction&: [34m0x80dddfcc[0m, uint16: [34m0x0[0m ([34m0[0m), int32: [34m4329[0m) + 0x02b6
    10 80dddf28 (+ 176) 805c5240   <bfs> BlockAllocator<[32m0x811c87d4[0m>::_Initialize(BlockAllocator*: NULL) + 0x032c
    11 80dddfd8 (+  32) 80057007   <kernel_x86> _create_kernel_thread_kentry() + 0x001b
    12 80dddff8 (+2132942856) 80056fa4   <kernel_x86> thread_kthread_exit() + 0x0000
    

Change History (10)

comment:1 by idefix, 10 years ago

Above crashlog happens when mounting the volume read/write. When mounting the volume read-only, the crash is the same as bug #3432.

comment:2 by idefix, 10 years ago

I can't reproduce this in VMware, so it has to do something with my hardware. I will try some earlier revisions to find out when the problem started.

comment:3 by axeld, 10 years ago

Priority: normalcritical
Resolution: fixed
Status: newclosed

Fixed in hrev30998: the attribute directory of the root directory was ignored by checkfs.

comment:4 by idefix, 10 years ago

Resolution: fixed
Status: closedreopened

Unfortunately, I can still reproduce this with hrev31230 following the same steps. I also tried to not do a checkfs in the first step, but that didn't matter.

The final crash is slightly different though (bfs_stat_index:2050 vs 2020):

bfs: mounted "test0mkfs" (root node at 524288, device = /dev/disk/ata/1/master/0)
bfs: bfs_stat_index:2050: No such file or directory
bfs: AllocationBlock::Allocate(): some blocks are already allocated, start = 0, numBlocks = 4297
PANIC: blocks already set!
Welcome to Kernel Debugging Land...
Thread 170 "bfs block allocator" running on CPU 0
kdebug> bt
stack trace for thread 170 "bfs block allocator"
    kernel stack: 0x81d92000 to 0x81d96000
frame               caller     <image>:function + offset
 0 81d95ba8 (+  48) 8006545d   <kernel_x86>:invoke_debugger_command + 0x0105
 1 81d95bd8 (+  64) 8006523d   <kernel_x86> invoke_pipe_segment(debugger_command_pipe*: [34m0x81612030[0m, int32: [34m0[0m, [34m0x0[0m [31m"<NULL>"[0m) + 0x0079
 2 81d95c18 (+  64) 800655f0   <kernel_x86>:invoke_debugger_command_pipe + 0x009c
 3 81d95c58 (+  48) 80066fec   <kernel_x86> ExpressionParser<[32m0x81d95d08[0m>::_ParseCommandPipe([34m0x81d95d04[0m) + 0x0234
 4 81d95c88 (+  64) 80066426   <kernel_x86> ExpressionParser<[32m0x81d95d08[0m>::EvaluateCommand([34m0x80125c00[0m [36m"bt"[0m, [34m0x81d95d04[0m) + 0x02ba
 5 81d95cc8 (+ 224) 80068400   <kernel_x86>:evaluate_debug_command + 0x0080
 6 81d95da8 (+  64) 800632b6   <kernel_x86> kernel_debugger_loop() + 0x01b6
 7 81d95de8 (+  32) 800641cd   <kernel_x86>:kernel_debugger + 0x004d
 8 81d95e08 (+ 192) 80064175   <kernel_x86>:panic + 0x0029
 9 81d95ec8 (+  96) 805c5832   <bfs> AllocationGroup<[32m0x82d4b000[0m>::Allocate(Transaction&: [34m0x81d95fcc[0m, uint16: [34m0x0[0m ([34m0[0m), int32: [34m4329[0m) + 0x02b6
10 81d95f28 (+ 176) 805c6284   <bfs> BlockAllocator<[32m0x811c8094[0m>::_Initialize(BlockAllocator*: NULL) + 0x032c
11 81d95fd8 (+  32) 80057613   <kernel_x86> _create_kernel_thread_kentry() + 0x001b
12 81d95ff8 (+2116460552) 800575b0   <kernel_x86> thread_kthread_exit() + 0x0000

comment:5 by axeld, 10 years ago

I could not reproduce this problem. Can you please run either "bfsinfo -s" from the BFS-tools, or the output of "F12 - mount 3 - bfs _volume" - you need to replace the "3" with whatever device number that partition has (you can use the "mounts" command to see them all listed). The data I'm interested in is how the super block looks like. Thanks!

comment:6 by idefix, 10 years ago

After mkfs initialised the volume:

PANIC: keyboard requested halt.

Welcome to Kernel Debugging Land...
Thread 1 "idle thread 1" running on CPU 0
kdebug> mounts
address     id root       covers     cookie     fs_name
0x80fa82d0   1 0x80f9b044 0x00000000 0x80f9a708 rootfs
0x80fa8348   2 0x80f9b0cc 0x80f9b088 0x80f9a758 devfs
0x80fc8f00   3 0x80f9b50c 0x80f9b484 0x811c6f00 bfs
kdebug> continue 
bfs: mounted "test0mkfs" (root node at 524288, device = /dev/disk/ata/1/master/0)
bfs: bfs_stat_index:2050: No such file or directory
PANIC: keyboard requested halt.

Welcome to Kernel Debugging Land...
Thread 1 "idle thread 1" running on CPU 0
kdebug> mounts
address     id root       covers     cookie     fs_name
0x80fa82d0   1 0x80f9b044 0x00000000 0x80f9a708 rootfs
0x80fa8348   2 0x80f9b0cc 0x80f9b088 0x80f9a758 devfs
0x80fc8f00   3 0x80f9b50c 0x80f9b484 0x811c6f00 bfs
0x80f91f00   5 0x8100fee0 0x81002000 0x811cb0e0 bfs
kdebug> mount 5
MOUNT: 0x80f91f00
 id:            5
 device_name:   /dev/disk/ata/1/master/0
 root_vnode:    0x8100fee0
 covers_vnode:  0x81002000
 partition:     0x80fde198
 lock:          0x80f91f10
 flags:        
 volume 0x8103e8c0:
  layer:            0
  private_volume:   0x811cb0e0
  ops:              0x805e8c20
  file_system:      0x805e8d60
  file_system_name: bfs
kdebug> bfs _volume
id:           5
block cache:  0x810a5258
journal:      0x80f8a690
allocator:    0x811cb2f4
root node:    0x81005000
indices node: 0x810453fc

disk_super_block:
  name           = test0mkfs
  magic1         = 0x42465331 (BFS1) valid
  fs_byte_order  = 0x42494745 (BIGE)
  block_size     = 2048
  block_shift    = 11
  num_blocks     = 3747161
  used_blocks    = 4502
  inode_size     = 2048
  magic2         = 0xdd121031 (...1) valid
  blocks_per_ag  = 4
  ag_shift       = 16 (65536 bytes)
  num_ags        = 58
  flags          = 0x434c454e (CLEN)
  log_blocks     = (0, 233, 4096)
  log_start      = 269
  log_end        = 269
  magic3         = 0x15b6830e (....) valid
  root_dir       = (8, 0, 1)
  indices        = (0, 4329, 1)

Then, after running checkfs on the volume:

PANIC: keyboard requested halt.

Welcome to Kernel Debugging Land...
Thread 1 "idle thread 1" running on CPU 0
kdebug> mounts
address     id root       covers     cookie     fs_name
0x80fa82d0   1 0x80f9b044 0x00000000 0x80f9a708 rootfs
0x80fa8348   2 0x80f9b0cc 0x80f9b088 0x80f9a758 devfs
0x80fc8f00   3 0x80f9b50c 0x80f9b484 0x811c6f00 bfs
0x80f91f00   5 0x8100fee0 0x81002000 0x811cb0e0 bfs
kdebug> mount 5
MOUNT: 0x80f91f00
 id:            5
 device_name:   /dev/disk/ata/1/master/0
 root_vnode:    0x8100fee0
 covers_vnode:  0x81002000
 partition:     0x80fde198
 lock:          0x80f91f10
 flags:        
 volume 0x8103e8c0:
  layer:            0
  private_volume:   0x811cb0e0
  ops:              0x805e8c20
  file_system:      0x805e8d60
  file_system_name: bfs
kdebug> bfs _volume
id:           5
block cache:  0x810a5258
journal:      0x80f8a690
allocator:    0x811cb2f4
root node:    0x81005000
indices node: 0x810453fc

disk_super_block:
  name           = test0mkfs
  magic1         = 0x42465331 (BFS1) valid
  fs_byte_order  = 0x42494745 (BIGE)
  block_size     = 2048
  block_shift    = 11
  num_blocks     = 3747161
  used_blocks    = 4502
  inode_size     = 2048
  magic2         = 0xdd121031 (...1) valid
  blocks_per_ag  = 4
  ag_shift       = 16 (65536 bytes)
  num_ags        = 58
  flags          = 0x434c454e (CLEN)
  log_blocks     = (0, 233, 4096)
  log_start      = 269
  log_end        = 269
  magic3         = 0x15b6830e (....) valid
  root_dir       = (8, 0, 1)
  indices        = (0, 4329, 1)

Booting into BeOS and using the BFS-tools:

Welcome to the BeOS shell.

$ mountvolume test0mkfs
scanning volumes...
test0mkfs mounted OK

$ bfsinfo -s /test0mkfs/
Copyright (c) 2001-2008 pinc Software.

disk_super_block:
  name           = test0mkfs
  magic1         = 0x42465331 (BFS1) valid
  fs_byte_order  = 0x42494745 (BIGE, little endian)
  block_size     = 2048
  block_shift    = 11
  num_blocks     = 3747161
  used_blocks    = 4506
  inode_size     = 2048
  magic2         = 0xdd121031 (...1) valid
  blocks_per_ag  = 4
  ag_shift       = 16
  num_ags        = 58
  flags          = 0x434c454e (CLEN)
  log_blocks     = (0, 233, 4096)
  log_start      = 278
  log_end        = 278
  magic3         = 0x15b6830e (....) valid
  root_dir       = (8, 0, 1)
  indices        = (0, 4329, 1)

$ chkbfs /test0mkfs/
bfs: /dev/disk/ide/ata/1/master/0/0_0 is read-only!
Files processed:     11
BFS has 3 blocks allocated that should not be.

    Block allocation mismatches detected.  Fixing.

    File system check completed.

$ bfsinfo -s /test0mkfs/
Copyright (c) 2001-2008 pinc Software.

disk_super_block:
  name           = test0mkfs
  magic1         = 0x42465331 (BFS1) valid
  fs_byte_order  = 0x42494745 (BIGE, little endian)
  block_size     = 2048
  block_shift    = 11
  num_blocks     = 3747161
  used_blocks    = 4506
  inode_size     = 2048
  magic2         = 0xdd121031 (...1) valid
  blocks_per_ag  = 4
  ag_shift       = 16
  num_ags        = 58
  flags          = 0x434c454e (CLEN)
  log_blocks     = (0, 233, 4096)
  log_start      = 278
  log_end        = 278
  magic3         = 0x15b6830e (....) valid
  root_dir       = (8, 0, 1)
  indices        = (0, 4329, 1)

Booting back into Haiku and then mounting the partition (which results in a crash):

PANIC: keyboard requested halt.

Welcome to Kernel Debugging Land...
Thread 1 "idle thread 1" running on CPU 0
kdebug> mounts
address     id root       covers     cookie     fs_name
0x80fa82d0   1 0x80f9b044 0x00000000 0x80f9a708 rootfs
0x80fa8348   2 0x80f9b0cc 0x80f9b088 0x80f9a758 devfs
0x80fc8f00   3 0x80f9b50c 0x80f9b484 0x811c6f00 bfs
kdebug> continue 
bfs: mounted "test0mkfs" (root node at 524288, device = /dev/disk/ata/1/master/0)
bfs: bfs_stat_index:2050: No such file or directory
bfs: AllocationBlock::Allocate(): some blocks are already allocated, start = 0, numBlocks = 4297
PANIC: blocks already set!
Welcome to Kernel Debugging Land...
Thread 171 "bfs block allocator" running on CPU 0
kdebug> mounts
address     id root       covers     cookie     fs_name
0x80fa82d0   1 0x80f9b044 0x00000000 0x80f9a708 rootfs
0x80fa8348   2 0x80f9b0cc 0x80f9b088 0x80f9a758 devfs
0x80fc8f00   3 0x80f9b50c 0x80f9b484 0x811c6f00 bfs
0x8100ae10   4 0x8100f908 0x81002b28 0x811c7e80 bfs
kdebug> mount 4
MOUNT: 0x8100ae10
 id:            4
 device_name:   /dev/disk/ata/1/master/0
 root_vnode:    0x8100f908
 covers_vnode:  0x81002b28
 partition:     0x80fde198
 lock:          0x8100ae20
 flags:        
 volume 0x810a6ed8:
  layer:            0
  private_volume:   0x811c7e80
  ops:              0x805e8c20
  file_system:      0x805e8d60
  file_system_name: bfs
kdebug> bfs _volume
id:           4
block cache:  0x81078960
journal:      0x810789d8
allocator:    0x811c8094
root node:    0x80fe7e9c
indices node: 0x81060550

disk_super_block:
  name           = test0mkfs
  magic1         = 0x42465331 (BFS1) valid
  fs_byte_order  = 0x42494745 (BIGE)
  block_size     = 2048
  block_shift    = 11
  num_blocks     = 3747161
  used_blocks    = 4506
  inode_size     = 2048
  magic2         = 0xdd121031 (...1) valid
  blocks_per_ag  = 4
  ag_shift       = 16 (65536 bytes)
  num_ags        = 58
  flags          = 0x434c454e (CLEN)
  log_blocks     = (0, 233, 4096)
  log_start      = 278
  log_end        = 278
  magic3         = 0x15b6830e (....) valid
  root_dir       = (8, 0, 1)
  indices        = (0, 4329, 1)

comment:7 by idefix, 10 years ago

Tried another experiment:

Initialising the volume in BeOS:

$ mkbfs 2048 /dev/disk/ide/ata/1/master/0/0_0 test0mkfs
BFS w/2048 byte blocks successfully created on /dev/disk/ide/ata/1/master/0/0_0 as test0mkfs
BFS Dump:
fd 3 dev_block_size 512 dev_block_conversion 4
tmp block data @ 0x80041768
num bitmap blocks: 229
Disk Super Block:
name: test0mkfs
magic1: 0x42465331
fs byte order: little endian
block size: 2048
num blocks: 3747161
num blocks used: 2603
inode size: 2048
magic2: 0xdd121031
num blocks per allocation group: 2
ag shift: 15
num ag's: 115
flags: 0x434c454e
magic3: 0x15b6830e
log start: 0 -- log end: 0
log area:       ag : 0  start : 230     len : 2048
root dir inode: ag : 8  start : 0       len : 1
indices inode:  ag : 0  start : 2278    len : 1
pad: 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
------------------------------------------
nsid: -2147219936 nbitmap blocks 229 bv @ 0x800497c0 bbm_sem 6391
sem 6389 fd 3 dev block size 512
inodes: root 0x800fdc60 index 0x800ffdd8 name 0x801011f0 size 0x80102e18
create time 0x0 last m. time 0x80104230
index list @ 0x0
log sem 6392 cur_log_end 0 cur_lh 0x800fd388 active_lh 0
completed log entries @ 0x0 tmp blocks @ 0x80041768 tmp b. sem 6390
$ mountvolume test0mkfs
scanning volumes...
test0mkfs mounted OK
$ bfsinfo -s /test0mkfs/
Copyright (c) 2001-2008 pinc Software.

disk_super_block:
  name           = test0mkfs
  magic1         = 0x42465331 (BFS1) valid
  fs_byte_order  = 0x42494745 (BIGE, little endian)
  block_size     = 2048
  block_shift    = 11
  num_blocks     = 3747161
  used_blocks    = 2800
  inode_size     = 2048
  magic2         = 0xdd121031 (...1) valid
  blocks_per_ag  = 2
  ag_shift       = 15
  num_ags        = 115
  flags          = 0x434c454e (CLEN)
  log_blocks     = (0, 230, 2048)
  log_start      = 30
  log_end        = 30
  magic3         = 0x15b6830e (....) valid
  root_dir       = (8, 0, 1)
  indices        = (0, 2278, 1)

Booting into Haiku and mounting the volume:

bfs: mounted "test0mkfs" (root node at 262144, device = /dev/disk/ata/1/master/0)
bfs: bfs_stat_index:2050: No such file or directory
PANIC: keyboard requested halt.

Welcome to Kernel Debugging Land...
Thread 1 "idle thread 1" running on CPU 0
kdebug> mounts
address     id root       covers     cookie     fs_name
0x80fa82d0   1 0x80f9b044 0x00000000 0x80f9a708 rootfs
0x80fa8348   2 0x80f9b0cc 0x80f9b088 0x80f9a758 devfs
0x80fc8f00   3 0x80f9b50c 0x80f9b484 0x811c6f00 bfs
0x80f91b40   4 0x80f9b2a8 0x80feae14 0x811c7e80 bfs
kdebug> mount 4
MOUNT: 0x80f91b40
 id:            4
 device_name:   /dev/disk/ata/1/master/0
 root_vnode:    0x80f9b2a8
 covers_vnode:  0x80feae14
 partition:     0x80fde198
 lock:          0x80f91b50
 flags:        
 volume 0x810a3ac8:
  layer:            0
  private_volume:   0x811c7e80
  ops:              0x805e8c20
  file_system:      0x805e8d60
  file_system_name: bfs
kdebug> bfs _volume
id:           4
block cache:  0x810b0078
journal:      0x81021960
allocator:    0x811c8094
root node:    0x80fe0bf4
indices node: 0x80ff2000

disk_super_block:
  name           = test0mkfs
  magic1         = 0x42465331 (BFS1) valid
  fs_byte_order  = 0x42494745 (BIGE)
  block_size     = 2048
  block_shift    = 11
  num_blocks     = 3747161
  used_blocks    = 2800
  inode_size     = 2048
  magic2         = 0xdd121031 (...1) valid
  blocks_per_ag  = 2
  ag_shift       = 15 (32768 bytes)
  num_ags        = 115
  flags          = 0x434c454e (CLEN)
  log_blocks     = (0, 230, 2048)
  log_start      = 32
  log_end        = 32
  magic3         = 0x15b6830e (....) valid
  root_dir       = (8, 0, 1)
  indices        = (0, 2278, 1)
kdebug> continue 

After running checkfs:

PANIC: keyboard requested halt.

Welcome to Kernel Debugging Land...
Thread 1 "idle thread 1" running on CPU 0
kdebug> mount 4
MOUNT: 0x80f91b40
 id:            4
 device_name:   /dev/disk/ata/1/master/0
 root_vnode:    0x80f9b2a8
 covers_vnode:  0x80feae14
 partition:     0x80fde198
 lock:          0x80f91b50
 flags:        
 volume 0x810a3ac8:
  layer:            0
  private_volume:   0x811c7e80
  ops:              0x805e8c20
  file_system:      0x805e8d60
  file_system_name: bfs
kdebug> bfs _volume
id:           4
block cache:  0x810b0078
journal:      0x81021960
allocator:    0x811c8094
root node:    0x80fe0bf4
indices node: 0x80ff2000

disk_super_block:
  name           = test0mkfs
  magic1         = 0x42465331 (BFS1) valid
  fs_byte_order  = 0x42494745 (BIGE)
  block_size     = 2048
  block_shift    = 11
  num_blocks     = 3747161
  used_blocks    = 2800
  inode_size     = 2048
  magic2         = 0xdd121031 (...1) valid
  blocks_per_ag  = 2
  ag_shift       = 15 (32768 bytes)
  num_ags        = 115
  flags          = 0x434c454e (CLEN)
  log_blocks     = (0, 230, 2048)
  log_start      = 32
  log_end        = 32
  magic3         = 0x15b6830e (....) valid
  root_dir       = (8, 0, 1)
  indices        = (0, 2278, 1)

And then booting back into BeOS:

Welcome to the BeOS shell.

$ mountvolume test0mkfs
scanning volumes...
test0mkfs mounted OK
$ bfsinfo -s /test0mkfs/
Copyright (c) 2001-2008 pinc Software.

disk_super_block:
  name           = test0mkfs
  magic1         = 0x42465331 (BFS1) valid
  fs_byte_order  = 0x42494745 (BIGE, little endian)
  block_size     = 2048
  block_shift    = 11
  num_blocks     = 3747161
  used_blocks    = 3450
  inode_size     = 2048
  magic2         = 0xdd121031 (...1) valid
  blocks_per_ag  = 2
  ag_shift       = 15
  num_ags        = 115
  flags          = 0x434c454e (CLEN)
  log_blocks     = (0, 230, 2048)
  log_start      = 55
  log_end        = 55
  magic3         = 0x15b6830e (....) valid
  root_dir       = (8, 0, 1)
  indices        = (0, 2278, 1)

$ chkbfs /test0mkfs/
bfs: /dev/disk/ide/ata/1/master/0/0_0 is read-only!
Files processed:     19

    No errors detected.

    File system check completed.
$ bfsinfo -s /test0mkfs/
Copyright (c) 2001-2008 pinc Software.

disk_super_block:
  name           = test0mkfs
  magic1         = 0x42465331 (BFS1) valid
  fs_byte_order  = 0x42494745 (BIGE, little endian)
  block_size     = 2048
  block_shift    = 11
  num_blocks     = 3747161
  used_blocks    = 3450
  inode_size     = 2048
  magic2         = 0xdd121031 (...1) valid
  blocks_per_ag  = 2
  ag_shift       = 15
  num_ags        = 115
  flags          = 0x434c454e (CLEN)
  log_blocks     = (0, 230, 2048)
  log_start      = 55
  log_end        = 55
  magic3         = 0x15b6830e (....) valid
  root_dir       = (8, 0, 1)
  indices        = (0, 2278, 1)

And back into Haiku after running checkfs on the volume:

bfs: mounted "test0mkfs" (root node at 262144, device = /dev/disk/ata/1/master/0)
bfs: bfs_stat_index:2050: No such file or directory
PANIC: keyboard requested halt.

Welcome to Kernel Debugging Land...
Thread 1 "idle thread 1" running on CPU 0
kdebug> mounts
address     id root       covers     cookie     fs_name
0x80fa82d0   1 0x80f9b044 0x00000000 0x80f9a708 rootfs
0x80fa8348   2 0x80f9b0cc 0x80f9b088 0x80f9a758 devfs
0x80fc8f00   3 0x80f9b50c 0x80f9b484 0x811c6f00 bfs
0x81042f78   6 0x80feab6c 0x80fea000 0x811c7e80 bfs
kdebug> mount 6
MOUNT: 0x81042f78
 id:            6
 device_name:   /dev/disk/ata/1/master/0
 root_vnode:    0x80feab6c
 covers_vnode:  0x80fea000
 partition:     0x80fde198
 lock:          0x81042f88
 flags:        
 volume 0x80ff6168:
  layer:            0
  private_volume:   0x811c7e80
  ops:              0x805e8c20
  file_system:      0x805e8d60
  file_system_name: bfs
kdebug> bfs _volume
id:           6
block cache:  0x810a89d8
journal:      0x810a8960
allocator:    0x811c8094
root node:    0x8102fbf4
indices node: 0x80f95e9c

disk_super_block:
  name           = test0mkfs
  magic1         = 0x42465331 (BFS1) valid
  fs_byte_order  = 0x42494745 (BIGE)
  block_size     = 2048
  block_shift    = 11
  num_blocks     = 3747161
  used_blocks    = 3198
  inode_size     = 2048
  magic2         = 0xdd121031 (...1) valid
  blocks_per_ag  = 2
  ag_shift       = 15 (32768 bytes)
  num_ags        = 115
  flags          = 0x434c454e (CLEN)
  log_blocks     = (0, 230, 2048)
  log_start      = 64
  log_end        = 64
  magic3         = 0x15b6830e (....) valid
  root_dir       = (8, 0, 1)
  indices        = (0, 2278, 1)

comment:8 by axeld, 10 years ago

Thanks! I was just going to ask you to initialize the volume under BeOS :-)

I understand now what's going on: Haiku's BFS allocates the last allocation group completely, while it's only a partial one. BeOS' BFS only allocates what's needed. I'll probably fix that tomorrow; I keep the ticket at "critical" for the other related bug I already fixed.

comment:9 by axeld, 10 years ago

Resolution: fixed
Status: reopenedclosed

Fixed in hrev31248.

comment:10 by idefix, 10 years ago

Confirmed fixed. Thanks!

Note: See TracTickets for help on using tickets.