gexto

package module
v0.0.0-...-0fcfe87 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 7, 2022 License: Apache-2.0 Imports: 11 Imported by: 0

README

gexto

EXT2/EXT3/EXT4 Filesystem library for Golang

Introduction

Gexto is a Go library to allow read / write access to EXT2/3/4 filesystems.

Created due to my eternal frustration at the crazy world of guestfish, where starting a VM containing a separate and complete linux kernel is apparently the only non-root way of editing a filesystem image.

Aims to provide an "os."-like interface to the filesystem with file objects behaving basically how you would expect them to.

Minimal Example

Error checking omitted for brevity

import (
  "log"
  "github.com/nerd2/gexto"
)

func main() {
  fs, _ := gexto.NewFileSystem("file.ext4")
  
  f, _ := fs.Create("/test")
  f.Write([]byte("hello world")
  f.Close()
  
  g, _ := fs.Open("/another/file")
  log.Println(ioutil.ReadAll(file))
}
Testing

Note that testing requires (passwordless) sudo, in order that the test filesystems can be mounted.

Documentation

Index

Constants

View Source
const (
	EXT4_INODE_SECRM        = 0
	EXT4_INODE_UNRM         = 1
	EXT4_INODE_COMPR        = 2
	EXT4_INODE_SYNC         = 3
	EXT4_INODE_IMMUTABLE    = 4
	EXT4_INODE_APPEND       = 5
	EXT4_INODE_NODUMP       = 6
	EXT4_INODE_NOATIME      = 7
	EXT4_INODE_DIRTY        = 8
	EXT4_INODE_COMPRBLK     = 9
	EXT4_INODE_NOCOMPR      = 10
	EXT4_INODE_ENCRYPT      = 11
	EXT4_INODE_INDEX        = 12
	EXT4_INODE_IMAGIC       = 13
	EXT4_INODE_JOURNAL_DATA = 14
	EXT4_INODE_NOTAIL       = 15
	EXT4_INODE_DIRSYNC      = 16
	EXT4_INODE_TOPDIR       = 17
	EXT4_INODE_HUGE_FILE    = 18
	EXT4_INODE_EXTENTS      = 19
	EXT4_INODE_EA_INODE     = 21
	EXT4_INODE_EOFBLOCKS    = 22
	EXT4_INODE_INLINE_DATA  = 28
	EXT4_INODE_PROJINHERIT  = 29
	EXT4_INODE_RESERVED     = 31
)
View Source
const APPEND_FL = 0x00000020
View Source
const BAD_INO = 1
View Source
const BG_BLOCK_UNINIT = 0x0002
View Source
const BG_INODE_UNINIT = 0x0001
View Source
const BG_INODE_ZEROED = 0x0004
View Source
const BOOT_LOADER_INO = 5
View Source
const COMPRBLK_FL = 0x00000200
View Source
const COMPR_FL = 0x00000004
View Source
const DIRSYNC_FL = 0x00010000
View Source
const DIRTY_FL = 0x00000100
View Source
const EA_INODE_FL = 0x00200000
View Source
const ENCRYPT_FL = 0x00000800
View Source
const EOFBLOCKS_FL = 0x00400000
View Source
const EXTENTS_FL = 0x00080000
View Source
const FEATURE_COMPAT_DIR_INDEX = 0x0020
View Source
const FEATURE_COMPAT_DIR_PREALLOC = 0x0001
View Source
const FEATURE_COMPAT_EXT_ATTR = 0x0008
View Source
const FEATURE_COMPAT_HAS_JOURNAL = 0x0004
View Source
const FEATURE_COMPAT_IMAGIC_INODES = 0x0002
View Source
const FEATURE_COMPAT_RESIZE_INODE = 0x0010
View Source
const FEATURE_COMPAT_SPARSE_SUPER2 = 0x0200
View Source
const FEATURE_INCOMPAT_64BIT = 0x0080
View Source
const FEATURE_INCOMPAT_COMPRESSION = 0x0001
View Source
const FEATURE_INCOMPAT_CSUM_SEED = 0x2000
View Source
const FEATURE_INCOMPAT_DIRDATA = 0x1000
View Source
const FEATURE_INCOMPAT_EA_INODE = 0x0400
View Source
const FEATURE_INCOMPAT_ENCRYPT = 0x10000
View Source
const FEATURE_INCOMPAT_EXTENTS = 0x0040
View Source
const FEATURE_INCOMPAT_FILETYPE = 0x0002
View Source
const FEATURE_INCOMPAT_FLEX_BG = 0x0200
View Source
const FEATURE_INCOMPAT_INLINE_DATA = 0x8000
View Source
const FEATURE_INCOMPAT_JOURNAL_DEV = 0x0008
View Source
const FEATURE_INCOMPAT_LARGEDIR = 0x4000
View Source
const FEATURE_INCOMPAT_META_BG = 0x0010
View Source
const FEATURE_INCOMPAT_MMP = 0x0100
View Source
const FEATURE_INCOMPAT_RECOVER = 0x0004
View Source
const FEATURE_RO_COMPAT_BIGALLOC = 0x0200
View Source
const FEATURE_RO_COMPAT_BTREE_DIR = 0x0004
View Source
const FEATURE_RO_COMPAT_DIR_NLINK = 0x0020
View Source
const FEATURE_RO_COMPAT_EXTRA_ISIZE = 0x0040
View Source
const FEATURE_RO_COMPAT_GDT_CSUM = 0x0010
View Source
const FEATURE_RO_COMPAT_HUGE_FILE = 0x0008
View Source
const FEATURE_RO_COMPAT_LARGE_FILE = 0x0002
View Source
const FEATURE_RO_COMPAT_METADATA_CSUM = 0x0400
View Source
const FEATURE_RO_COMPAT_PROJECT = 0x2000
View Source
const FEATURE_RO_COMPAT_QUOTA = 0x0100
View Source
const FEATURE_RO_COMPAT_READONLY = 0x1000
View Source
const FEATURE_RO_COMPAT_SPARSE_SUPER = 0x0001
View Source
const FL_USER_MODIFIABLE = 0x204BC0FF
View Source
const FL_USER_VISIBLE = 0x304BDFFF
View Source
const GRP_QUOTA_INO = 4
View Source
const HUGE_FILE_FL = 0x00040000
View Source
const IMAGIC_FL = 0x00002000
View Source
const IMMUTABLE_FL = 0x00000010
View Source
const INDEX_FL = 0x00001000
View Source
const INLINE_DATA_FL = 0x10000000
View Source
const JOURNAL_DATA_FL = 0x00004000
View Source
const JOURNAL_INO = 8
View Source
const NOATIME_FL = 0x00000080
View Source
const NOCOMPR_FL = 0x00000400
View Source
const NODUMP_FL = 0x00000040
View Source
const NOTAIL_FL = 0x00008000
View Source
const PROJINHERIT_FL = 0x20000000
View Source
const RESERVED_FL = 0x80000000
View Source
const RESIZE_INO = 7
View Source
const ROOT_INO = 2
View Source
const SECRM_FL = 0x00000001

Inode flags

View Source
const SYNC_FL = 0x00000008
View Source
const TOPDIR_FL = 0x00020000
View Source
const UNDEL_DIR_INO = 6
View Source
const UNRM_FL = 0x00000002
View Source
const USR_QUOTA_INO = 3

Variables

This section is empty.

Functions

func LimitWriter

func LimitWriter(w io.Writer, n int64) io.Writer

func NewDirectory

func NewDirectory(inode *Inode) *directory

Types

type Checksummer

type Checksummer interface {
	io.Writer
	WriteUint32(uint32)
	Get() uint32
}

func NewChecksummer

func NewChecksummer(sb *Superblock) Checksummer

type DirectoryEntry2

type DirectoryEntry2 struct {
	Inode    uint32 `struc:"uint32,little"`
	Rec_len  uint16 `struc:"uint16,little"`
	Name_len uint8  `struc:"uint8,sizeof=Name"`
	Flags    uint8  `struc:"uint8"`
	Name     string `struc:"[]byte"`
}

type DirectoryEntryCsum

type DirectoryEntryCsum struct {
	FakeInodeZero uint32 `struc:"uint32,little"`
	Rec_len       uint16 `struc:"uint16,little"`
	FakeName_len  uint8  `struc:"uint8"`
	FakeFileType  uint8  `struc:"uint8"`
	Checksum      uint32 `struc:"uint32,little"`
}

type Extent

type Extent struct {
	Block    uint32 `struc:"uint32,little"`
	Len      uint16 `struc:"uint16,little"`
	Start_hi uint16 `struc:"uint16,little"`
	Start_lo uint32 `struc:"uint32,little"`
}

type ExtentHeader

type ExtentHeader struct {
	Magic      uint16 `struc:"uint16,little"`
	Entries    uint16 `struc:"uint16,little"`
	Max        uint16 `struc:"uint16,little"`
	Depth      uint16 `struc:"uint16,little"`
	Generation uint32 `struc:"uint32,little"`
}

type ExtentInternal

type ExtentInternal struct {
	Block     uint32 `struc:"uint32,little"`
	Leaf_low  uint32 `struc:"uint32,little"`
	Leaf_high uint16 `struc:"uint16,little"`
	Unused    uint16 `struc:"uint16,little"`
}

type File

type File struct {
	// contains filtered or unexported fields
}

func (*File) Read

func (f *File) Read(p []byte) (n int, err error)

func (*File) Seek

func (f *File) Seek(offset int64, whence int) (ret int64, err error)

func (*File) Write

func (f *File) Write(p []byte) (n int, err error)

type FileSystem

type FileSystem interface {
	Open(name string) (*File, error)
	Create(name string) (*File, error)
	Remove(name string) error
	Mkdir(name string, perm os.FileMode) error
	Close() error
}

func NewFileSystem

func NewFileSystem(devicePath string) (FileSystem, error)

type GroupDescriptor

type GroupDescriptor struct {
	Block_bitmap_lo      uint32 `struc:"uint32,little"`
	Inode_bitmap_lo      uint32 `struc:"uint32,little"`
	Inode_table_lo       uint32 `struc:"uint32,little"`
	Free_blocks_count_lo uint16 `struc:"uint16,little"`
	Free_inodes_count_lo uint16 `struc:"uint16,little"`
	Used_dirs_count_lo   uint16 `struc:"uint16,little"`
	Flags                uint16 `struc:"uint16,little"`
	Exclude_bitmap_lo    uint32 `struc:"uint32,little"`
	Block_bitmap_csum_lo uint16 `struc:"uint16,little"`
	Inode_bitmap_csum_lo uint16 `struc:"uint16,little"`
	Itable_unused_lo     uint16 `struc:"uint16,little"`
	Checksum             uint16 `struc:"uint16,little"`
	Block_bitmap_hi      uint32 `struc:"uint32,little"`
	Inode_bitmap_hi      uint32 `struc:"uint32,little"`
	Inode_table_hi       uint32 `struc:"uint32,little"`
	Free_blocks_count_hi uint16 `struc:"uint16,little"`
	Free_inodes_count_hi uint16 `struc:"uint16,little"`
	Used_dirs_count_hi   uint16 `struc:"uint16,little"`
	Itable_unused_hi     uint16 `struc:"uint16,little"`
	Exclude_bitmap_hi    uint32 `struc:"uint32,little"`
	Block_bitmap_csum_hi uint16 `struc:"uint16,little"`
	Inode_bitmap_csum_hi uint16 `struc:"uint16,little"`
	Reserved             uint32 `struc:"uint32,little"`
	// contains filtered or unexported fields
}

func (*GroupDescriptor) GetBlockBitmapLoc

func (bgd *GroupDescriptor) GetBlockBitmapLoc() int64

func (*GroupDescriptor) GetFreeBlocks

func (bgd *GroupDescriptor) GetFreeBlocks(n int64) (int64, int64)

func (*GroupDescriptor) GetFreeInode

func (bgd *GroupDescriptor) GetFreeInode() *Inode

func (*GroupDescriptor) GetInodeBitmapLoc

func (bgd *GroupDescriptor) GetInodeBitmapLoc() int64

func (*GroupDescriptor) GetInodeTableLoc

func (bgd *GroupDescriptor) GetInodeTableLoc() int64

func (*GroupDescriptor) UpdateCsumAndWriteback

func (bgd *GroupDescriptor) UpdateCsumAndWriteback()

type Inode

type Inode struct {
	Mode           uint16   `struc:"uint16,little"`
	Uid            uint16   `struc:"uint16,little"`
	Size_lo        uint32   `struc:"uint32,little"`
	Atime          uint32   `struc:"uint32,little"`
	Ctime          uint32   `struc:"uint32,little"`
	Mtime          uint32   `struc:"uint32,little"`
	Dtime          uint32   `struc:"uint32,little"`
	Gid            uint16   `struc:"uint16,little"`
	Links_count    uint16   `struc:"uint16,little"`
	Blocks_lo      uint32   `struc:"uint32,little"`
	Flags          uint32   `struc:"uint32,little"`
	Osd1           uint32   `struc:"uint32,little"`
	BlockOrExtents [60]byte `struc:"[60]byte,little"`
	Generation     uint32   `struc:"uint32,little"`
	File_acl_lo    uint32   `struc:"uint32,little"`
	Size_high      uint32   `struc:"uint32,little"`
	Obso_faddr     uint32   `struc:"uint32,little"`
	// OSD2 - linux only starts
	Blocks_high   uint16 `struc:"uint16,little"`
	File_acl_high uint16 `struc:"uint16,little"`
	Uid_high      uint16 `struc:"uint16,little"`
	Gid_high      uint16 `struc:"uint16,little"`
	Checksum_low  uint16 `struc:"uint16,little"`
	Unused        uint16 `struc:"uint16,little"`
	// OSD2 - linux only ends
	Extra_isize  uint16 `struc:"uint16,little"`
	Checksum_hi  uint16 `struc:"uint16,little"`
	Ctime_extra  uint32 `struc:"uint32,little"`
	Mtime_extra  uint32 `struc:"uint32,little"`
	Atime_extra  uint32 `struc:"uint32,little"`
	Crtime       uint32 `struc:"uint32,little"`
	Crtime_extra uint32 `struc:"uint32,little"`
	Version_hi   uint32 `struc:"uint32,little"`
	Projid       uint32 `struc:"uint32,little"`
	// contains filtered or unexported fields
}

func (*Inode) AddBlocks

func (inode *Inode) AddBlocks(n int64) (blockNum int64, contiguousBlocks int64)

func (*Inode) GetBlockPtr

func (inode *Inode) GetBlockPtr(num int64) (int64, int64, bool)

Returns the blockId of the file block, and the number of contiguous blocks

func (*Inode) GetSize

func (inode *Inode) GetSize() int64

func (*Inode) ReadDirectory

func (inode *Inode) ReadDirectory() []DirectoryEntry2

func (*Inode) SetSize

func (inode *Inode) SetSize(i int64)

func (*Inode) UpdateCsumAndWriteback

func (inode *Inode) UpdateCsumAndWriteback()

func (*Inode) UsesDirectoryHashTree

func (inode *Inode) UsesDirectoryHashTree() bool

func (*Inode) UsesExtents

func (inode *Inode) UsesExtents() bool

type MoveExtent

type MoveExtent struct {
	Reserved    uint32 `struc:"uint32,little"`
	Donor_fd    uint32 `struc:"uint32,little"`
	Orig_start  uint64 `struc:"uint64,little"`
	Donor_start uint64 `struc:"uint64,little"`
	Len         uint64 `struc:"uint64,little"`
	Moved_len   uint64 `struc:"uint64,little"`
}

type Superblock

type Superblock struct {
	InodeCount         uint32 `struc:"uint32,little"`
	BlockCount_lo      uint32 `struc:"uint32,little"`
	R_blockCount_lo    uint32 `struc:"uint32,little"`
	Free_blockCount_lo uint32 `struc:"uint32,little"`
	Free_inodeCount    uint32 `struc:"uint32,little"`
	First_data_block   uint32 `struc:"uint32,little"`
	Log_block_size     uint32 `struc:"uint32,little"`
	Log_cluster_size   uint32 `struc:"uint32,little"`
	BlockPer_group     uint32 `struc:"uint32,little"`
	ClusterPer_group   uint32 `struc:"uint32,little"`
	InodePer_group     uint32 `struc:"uint32,little"`
	Mtime              uint32 `struc:"uint32,little"`
	Wtime              uint32 `struc:"uint32,little"`
	Mnt_count          uint16 `struc:"uint16,little"`
	Max_mnt_count      uint16 `struc:"uint16,little"`
	Magic              uint16 `struc:"uint16,little"`
	State              uint16 `struc:"uint16,little"`
	Errors             uint16 `struc:"uint16,little"`
	Minor_rev_level    uint16 `struc:"uint16,little"`
	Lastcheck          uint32 `struc:"uint32,little"`
	Checkinterval      uint32 `struc:"uint32,little"`
	Creator_os         uint32 `struc:"uint32,little"`
	Rev_level          uint32 `struc:"uint32,little"`
	Def_resuid         uint16 `struc:"uint16,little"`
	Def_resgid         uint16 `struc:"uint16,little"`
	// Dynamic_rev superblocks only
	First_ino              uint32   `struc:"uint32,little"`
	Inode_size             uint16   `struc:"uint16,little"`
	Block_group_nr         uint16   `struc:"uint16,little"`
	Feature_compat         uint32   `struc:"uint32,little"`
	Feature_incompat       uint32   `struc:"uint32,little"`
	Feature_ro_compat      uint32   `struc:"uint32,little"`
	Uuid                   [16]byte `struc:"[16]byte"`
	Volume_name            [16]byte `struc:"[16]byte"`
	Last_mounted           [64]byte `struc:"[64]byte"`
	Algorithm_usage_bitmap uint32   `struc:"uint32,little"`
	// Performance hints
	Prealloc_blocks     byte   `struc:"byte"`
	Prealloc_dir_blocks byte   `struc:"byte"`
	Reserved_gdt_blocks uint16 `struc:"uint16,little"`

	Journal_Uuid       [16]byte   `struc:"[16]byte"`
	Journal_inum       uint32     `struc:"uint32,little"`
	Journal_dev        uint32     `struc:"uint32,little"`
	Last_orphan        uint32     `struc:"uint32,little"`
	Hash_seed          [4]uint32  `struc:"[4]uint32,little"`
	Def_hash_version   byte       `struc:"byte"`
	Jnl_backup_type    byte       `struc:"byte"`
	Desc_size          uint16     `struc:"uint16,little"`
	Default_mount_opts uint32     `struc:"uint32,little"`
	First_meta_bg      uint32     `struc:"uint32,little"`
	MkfTime            uint32     `struc:"uint32,little"`
	Jnl_blocks         [17]uint32 `struc:"[17]uint32,little"`

	BlockCount_hi         uint32     `struc:"uint32,little"`
	R_blockCount_hi       uint32     `struc:"uint32,little"`
	Free_blockCount_hi    uint32     `struc:"uint32,little"`
	Min_extra_isize       uint16     `struc:"uint16,little"`
	Want_extra_isize      uint16     `struc:"uint16,little"`
	Flags                 uint32     `struc:"uint32,little"`
	Raid_stride           uint16     `struc:"uint16,little"`
	Mmp_update_interval   uint16     `struc:"uint16,little"`
	Mmp_block             uint64     `struc:"uint64,little"`
	Raid_stripe_width     uint32     `struc:"uint32,little"`
	Log_groupPer_flex     byte       `struc:"byte"`
	Checksum_type         byte       `struc:"byte"`
	Encryption_level      byte       `struc:"byte"`
	Reserved_pad          byte       `struc:"byte"`
	KbyteWritten          uint64     `struc:"uint64,little"`
	Snapshot_inum         uint32     `struc:"uint32,little"`
	Snapshot_id           uint32     `struc:"uint32,little"`
	Snapshot_r_blockCount uint64     `struc:"uint64,little"`
	Snapshot_list         uint32     `struc:"uint32,little"`
	Error_count           uint32     `struc:"uint32,little"`
	First_error_time      uint32     `struc:"uint32,little"`
	First_error_ino       uint32     `struc:"uint32,little"`
	First_error_block     uint64     `struc:"uint64,little"`
	First_error_func      [32]byte   `struc:"[32]pad"`
	First_error_line      uint32     `struc:"uint32,little"`
	Last_error_time       uint32     `struc:"uint32,little"`
	Last_error_ino        uint32     `struc:"uint32,little"`
	Last_error_line       uint32     `struc:"uint32,little"`
	Last_error_block      uint64     `struc:"uint64,little"`
	Last_error_func       [32]byte   `struc:"[32]pad"`
	Mount_opts            [64]byte   `struc:"[64]pad"`
	Usr_quota_inum        uint32     `struc:"uint32,little"`
	Grp_quota_inum        uint32     `struc:"uint32,little"`
	Overhead_clusters     uint32     `struc:"uint32,little"`
	Backup_bgs            [2]uint32  `struc:"[2]uint32,little"`
	Encrypt_algos         [4]byte    `struc:"[4]pad"`
	Encrypt_pw_salt       [16]byte   `struc:"[16]pad"`
	Lpf_ino               uint32     `struc:"uint32,little"`
	Prj_quota_inum        uint32     `struc:"uint32,little"`
	Checksum_seed         uint32     `struc:"uint32,little"`
	Reserved              [98]uint32 `struc:"[98]uint32,little"`
	Checksum              uint32     `struc:"uint32,little"`
	// contains filtered or unexported fields
}

func (*Superblock) FeatureCompatDir_index

func (sb *Superblock) FeatureCompatDir_index() bool

func (*Superblock) FeatureCompatDir_prealloc

func (sb *Superblock) FeatureCompatDir_prealloc() bool

func (*Superblock) FeatureCompatExt_attr

func (sb *Superblock) FeatureCompatExt_attr() bool

func (*Superblock) FeatureCompatHas_journal

func (sb *Superblock) FeatureCompatHas_journal() bool

func (*Superblock) FeatureCompatImagic_inodes

func (sb *Superblock) FeatureCompatImagic_inodes() bool

func (*Superblock) FeatureCompatResize_inode

func (sb *Superblock) FeatureCompatResize_inode() bool

func (*Superblock) FeatureCompatSparse_super2

func (sb *Superblock) FeatureCompatSparse_super2() bool

func (*Superblock) FeatureIncompat64bit

func (sb *Superblock) FeatureIncompat64bit() bool

func (*Superblock) FeatureIncompatCompression

func (sb *Superblock) FeatureIncompatCompression() bool

func (*Superblock) FeatureIncompatCsum_seed

func (sb *Superblock) FeatureIncompatCsum_seed() bool

func (*Superblock) FeatureIncompatDirdata

func (sb *Superblock) FeatureIncompatDirdata() bool

func (*Superblock) FeatureIncompatEa_inode

func (sb *Superblock) FeatureIncompatEa_inode() bool

func (*Superblock) FeatureIncompatEncrypt

func (sb *Superblock) FeatureIncompatEncrypt() bool

func (*Superblock) FeatureIncompatExtents

func (sb *Superblock) FeatureIncompatExtents() bool

func (*Superblock) FeatureIncompatFiletype

func (sb *Superblock) FeatureIncompatFiletype() bool

func (*Superblock) FeatureIncompatFlex_bg

func (sb *Superblock) FeatureIncompatFlex_bg() bool

func (*Superblock) FeatureIncompatInline_data

func (sb *Superblock) FeatureIncompatInline_data() bool

func (*Superblock) FeatureIncompatJournal_dev

func (sb *Superblock) FeatureIncompatJournal_dev() bool

func (*Superblock) FeatureIncompatLargedir

func (sb *Superblock) FeatureIncompatLargedir() bool

func (*Superblock) FeatureIncompatMeta_bg

func (sb *Superblock) FeatureIncompatMeta_bg() bool

func (*Superblock) FeatureIncompatMmp

func (sb *Superblock) FeatureIncompatMmp() bool

func (*Superblock) FeatureIncompatRecover

func (sb *Superblock) FeatureIncompatRecover() bool

func (*Superblock) FeatureRoCompatBigalloc

func (sb *Superblock) FeatureRoCompatBigalloc() bool

func (*Superblock) FeatureRoCompatBtree_dir

func (sb *Superblock) FeatureRoCompatBtree_dir() bool
func (sb *Superblock) FeatureRoCompatDir_nlink() bool

func (*Superblock) FeatureRoCompatExtra_isize

func (sb *Superblock) FeatureRoCompatExtra_isize() bool

func (*Superblock) FeatureRoCompatGdt_csum

func (sb *Superblock) FeatureRoCompatGdt_csum() bool

func (*Superblock) FeatureRoCompatHuge_file

func (sb *Superblock) FeatureRoCompatHuge_file() bool

func (*Superblock) FeatureRoCompatLarge_file

func (sb *Superblock) FeatureRoCompatLarge_file() bool

func (*Superblock) FeatureRoCompatMetadata_csum

func (sb *Superblock) FeatureRoCompatMetadata_csum() bool

func (*Superblock) FeatureRoCompatProject

func (sb *Superblock) FeatureRoCompatProject() bool

func (*Superblock) FeatureRoCompatQuota

func (sb *Superblock) FeatureRoCompatQuota() bool

func (*Superblock) FeatureRoCompatReadonly

func (sb *Superblock) FeatureRoCompatReadonly() bool

func (*Superblock) FeatureRoCompatSparse_super

func (sb *Superblock) FeatureRoCompatSparse_super() bool

func (*Superblock) GetBlockCount

func (sb *Superblock) GetBlockCount() int64

func (*Superblock) GetBlockSize

func (sb *Superblock) GetBlockSize() int64

func (*Superblock) GetGroupsPerFlex

func (sb *Superblock) GetGroupsPerFlex() int64

func (*Superblock) UpdateCsumAndWriteback

func (sb *Superblock) UpdateCsumAndWriteback()

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL