blob: 587e4afaa845d4e34bdc9c8d92575ea3fd6f7e57 (
plain)
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
// Copyright 2019 The gVisor Authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package disklayout
// SuperBlock32Bit implements SuperBlock and represents the 32-bit version of
// the ext4_super_block struct in fs/ext4/ext4.h.
type SuperBlock32Bit struct {
// We embed the old superblock struct here because the 32-bit version is just
// an extension of the old version.
SuperBlockOld
FirstInode uint32
InodeSizeRaw uint16
BlockGroupNumber uint16
FeatureCompat uint32
FeatureIncompat uint32
FeatureRoCompat uint32
UUID [16]byte
VolumeName [16]byte
LastMounted [64]byte
AlgoUsageBitmap uint32
PreallocBlocks uint8
PreallocDirBlocks uint8
ReservedGdtBlocks uint16
JournalUUID [16]byte
JournalInum uint32
JournalDev uint32
LastOrphan uint32
HashSeed [4]uint32
DefaultHashVersion uint8
JnlBackupType uint8
BgDescSizeRaw uint16
DefaultMountOpts uint32
FirstMetaBg uint32
MkfsTime uint32
JnlBlocks [17]uint32
}
// Compiles only if SuperBlock32Bit implements SuperBlock.
var _ SuperBlock = (*SuperBlock32Bit)(nil)
// Only override methods which change based on the additional fields above.
// Not overriding SuperBlock.BgDescSize because it would still return 32 here.
// InodeSize implements SuperBlock.InodeSize.
func (sb *SuperBlock32Bit) InodeSize() uint16 {
return sb.InodeSizeRaw
}
// CompatibleFeatures implements SuperBlock.CompatibleFeatures.
func (sb *SuperBlock32Bit) CompatibleFeatures() CompatFeatures {
return CompatFeaturesFromInt(sb.FeatureCompat)
}
// IncompatibleFeatures implements SuperBlock.IncompatibleFeatures.
func (sb *SuperBlock32Bit) IncompatibleFeatures() IncompatFeatures {
return IncompatFeaturesFromInt(sb.FeatureIncompat)
}
// ReadOnlyCompatibleFeatures implements SuperBlock.ReadOnlyCompatibleFeatures.
func (sb *SuperBlock32Bit) ReadOnlyCompatibleFeatures() RoCompatFeatures {
return RoCompatFeaturesFromInt(sb.FeatureRoCompat)
}
|