bcachefs 文件系统修改fs_label

bcachefs 在format的时候可以指定fs_label, 其他时候没看到可以修改的地方。 从https://www.reddit.com/r/bcachefs/comments/1org1vh/how_to_change_label_to_bcachefs_partition/ 看到的一段脚本

#!/usr/bin/env python3
import fcntl
import os
import array

# Correct ioctl constants
FS_IOC_GETFSLABEL = 0x81009431
FS_IOC_SETFSLABEL = 0x41009432
FSLABEL_MAX = 256

def get_filesystem_label(mount_point):
    """Get filesystem label using FS_IOC_GETFSLABEL ioctl"""
    label_buffer = array.array('b', b'\x00' * FSLABEL_MAX)
    fd = os.open(mount_point, os.O_RDONLY)
    try:
        fcntl.ioctl(fd, FS_IOC_GETFSLABEL, label_buffer, True)
        label = label_buffer.tobytes().rstrip(b'\x00').decode('utf-8')
        return label
    finally:
        os.close(fd)

def set_filesystem_label(mount_point, label):
    """Set filesystem label using FS_IOC_SETFSLABEL ioctl"""
    if len(label) >= FSLABEL_MAX:
        raise ValueError(f"Label too long (max {FSLABEL_MAX - 1} chars)")

    label_bytes = label.encode('utf-8') + b'\x00'
    fd = os.open(mount_point, os.O_RDONLY)
    try:
        fcntl.ioctl(fd, FS_IOC_SETFSLABEL, label_bytes)
        return True
    finally:
        os.close(fd)

# Example usage (requires root/CAP_SYS_ADMIN)
if __name__ == "__main__":
    mount_point = "/mnt/old_fs_name"
    NEW_FS_NAME = "praxis"

    # Set label
    set_filesystem_label(mount_point, NEW_FS_NAME)

    # Get label
    current_label = get_filesystem_label(mount_point)
    print(f"Current label: {current_label}")