1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
package main
import (
"fmt"
"os"
"git.lukeshu.com/btrfs-progs-ng/lib/btrfs"
"git.lukeshu.com/btrfs-progs-ng/lib/btrfs/btrfsvol"
"git.lukeshu.com/btrfs-progs-ng/lib/util"
)
func pass0(filenames ...string) (*btrfs.FS, *util.Ref[btrfsvol.PhysicalAddr, btrfs.Superblock], error) {
fmt.Printf("\nPass 0: init and superblocks...\n")
fs := new(btrfs.FS)
for _, filename := range filenames {
fmt.Printf("Pass 0: ... adding device %q...\n", filename)
fh, err := os.OpenFile(filename, os.O_RDWR, 0)
if err != nil {
_ = fs.Close()
return nil, nil, fmt.Errorf("device %q: %w", filename, err)
}
if err := fs.AddDevice(&btrfs.Device{File: fh}); err != nil {
fmt.Printf("Pass 0: ... add device %q: error: %v\n", filename, err)
}
}
sb, err := fs.Superblock()
if err != nil {
_ = fs.Close()
return nil, nil, err
}
return fs, sb, nil
}
|