mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-07 21:16:57 +02:00
fix(disk_util): Set btrfs default subvolume
This avoids needing to always pass the subvol=root mount option.
This commit is contained in:
parent
acb9800259
commit
ee6b9ee1f9
@ -7,6 +7,7 @@ import argparse
|
|||||||
import contextlib
|
import contextlib
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
|
import re
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
import tempfile
|
import tempfile
|
||||||
@ -320,6 +321,18 @@ def Sudo(cmd, stdout_null=False):
|
|||||||
null.close()
|
null.close()
|
||||||
|
|
||||||
|
|
||||||
|
def BtrfsSubvolId(path):
|
||||||
|
"""Get the subvolume id from a given path."""
|
||||||
|
|
||||||
|
out = subprocess.check_output(
|
||||||
|
['sudo', 'btrfs', 'subvolume', 'show', path])
|
||||||
|
m = re.search(r'^\s*Object ID:\s*(\d+)$', out, re.MULTILINE)
|
||||||
|
if not m:
|
||||||
|
raise Exception('Failed to parse btrfs output: %r', out)
|
||||||
|
|
||||||
|
return int(m.group(1))
|
||||||
|
|
||||||
|
|
||||||
def FormatBtrfs(part, device):
|
def FormatBtrfs(part, device):
|
||||||
"""Format an ext2 or ext4 filesystem.
|
"""Format an ext2 or ext4 filesystem.
|
||||||
|
|
||||||
@ -342,6 +355,8 @@ def FormatBtrfs(part, device):
|
|||||||
Sudo(['mount', '-t', 'btrfs', device, btrfs_mount])
|
Sudo(['mount', '-t', 'btrfs', device, btrfs_mount])
|
||||||
try:
|
try:
|
||||||
Sudo(['btrfs', 'subvolume', 'create', subvol_path])
|
Sudo(['btrfs', 'subvolume', 'create', subvol_path])
|
||||||
|
subvol_id = BtrfsSubvolId(subvol_path)
|
||||||
|
Sudo(['btrfs', 'subvolume', 'set-default', subvol_id, btrfs_mount])
|
||||||
finally:
|
finally:
|
||||||
Sudo(['umount', btrfs_mount])
|
Sudo(['umount', btrfs_mount])
|
||||||
os.rmdir(btrfs_mount)
|
os.rmdir(btrfs_mount)
|
||||||
|
Loading…
Reference in New Issue
Block a user