Lines Matching +full:32 +full:- +full:bits
1 .. SPDX-License-Identifier: GPL-2.0
4 -----------
15 links and is in general more seek-happy than ext4 due to its simpler
22 ``(inode_number - 1) / sb.s_inodes_per_group``, and the offset into the
23 group's table is ``(inode_number - 1) % sb.s_inodes_per_group``. There
31 .. list-table::
33 :header-rows: 1
36 * - Offset
37 - Size
38 - Name
39 - Description
40 * - 0x0
41 - __le16
42 - i_mode
43 - File mode. See the table i_mode_ below.
44 * - 0x2
45 - __le16
46 - i_uid
47 - Lower 16-bits of Owner UID.
48 * - 0x4
49 - __le32
50 - i_size_lo
51 - Lower 32-bits of size in bytes.
52 * - 0x8
53 - __le32
54 - i_atime
55 - Last access time, in seconds since the epoch. However, if the EA_INODE
58 * - 0xC
59 - __le32
60 - i_ctime
61 - Last inode change time, in seconds since the epoch. However, if the
63 value and this field contains the lower 32 bits of the attribute value's
65 * - 0x10
66 - __le32
67 - i_mtime
68 - Last data modification time, in seconds since the epoch. However, if the
72 * - 0x14
73 - __le32
74 - i_dtime
75 - Deletion Time, in seconds since the epoch.
76 * - 0x18
77 - __le16
78 - i_gid
79 - Lower 16-bits of GID.
80 * - 0x1A
81 - __le16
82 - i_links_count
83 - Hard link count. Normally, ext4 does not permit an inode to have more
90 * - 0x1C
91 - __le32
92 - i_blocks_lo
93 - Lower 32-bits of “block” count. If the huge_file feature flag is not
94 set on the filesystem, the file consumes ``i_blocks_lo`` 512-byte blocks
97 << 32)`` 512-byte blocks on disk. If huge_file is set and
99 consumes (``i_blocks_lo + i_blocks_hi`` << 32) filesystem blocks on
101 * - 0x20
102 - __le32
103 - i_flags
104 - Inode flags. See the table i_flags_ below.
105 * - 0x24
106 - 4 bytes
107 - i_osd1
108 - See the table i_osd1_ for more details.
109 * - 0x28
110 - 60 bytes
111 - i_block[EXT4_N_BLOCKS=15]
112 - Block map or extent tree. See the section “The Contents of inode.i_block”.
113 * - 0x64
114 - __le32
115 - i_generation
116 - File version (for NFS).
117 * - 0x68
118 - __le32
119 - i_file_acl_lo
120 - Lower 32-bits of extended attribute block. ACLs are of course one of
123 * - 0x6C
124 - __le32
125 - i_size_high / i_dir_acl
126 - Upper 32-bits of file/directory size. In ext2/3 this field was named
128 * - 0x70
129 - __le32
130 - i_obso_faddr
131 - (Obsolete) fragment address.
132 * - 0x74
133 - 12 bytes
134 - i_osd2
135 - See the table i_osd2_ for more details.
136 * - 0x80
137 - __le16
138 - i_extra_isize
139 - Size of this inode - 128. Alternately, the size of the extended inode
141 * - 0x82
142 - __le16
143 - i_checksum_hi
144 - Upper 16-bits of the inode checksum.
145 * - 0x84
146 - __le32
147 - i_ctime_extra
148 - Extra change time bits. This provides sub-second precision. See Inode
150 * - 0x88
151 - __le32
152 - i_mtime_extra
153 - Extra modification time bits. This provides sub-second precision.
154 * - 0x8C
155 - __le32
156 - i_atime_extra
157 - Extra access time bits. This provides sub-second precision.
158 * - 0x90
159 - __le32
160 - i_crtime
161 - File creation time, in seconds since the epoch.
162 * - 0x94
163 - __le32
164 - i_crtime_extra
165 - Extra file creation time bits. This provides sub-second precision.
166 * - 0x98
167 - __le32
168 - i_version_hi
169 - Upper 32-bits for version number.
170 * - 0x9C
171 - __le32
172 - i_projid
173 - Project ID.
179 .. list-table::
181 :header-rows: 1
183 * - Value
184 - Description
185 * - 0x1
186 - S_IXOTH (Others may execute)
187 * - 0x2
188 - S_IWOTH (Others may write)
189 * - 0x4
190 - S_IROTH (Others may read)
191 * - 0x8
192 - S_IXGRP (Group members may execute)
193 * - 0x10
194 - S_IWGRP (Group members may write)
195 * - 0x20
196 - S_IRGRP (Group members may read)
197 * - 0x40
198 - S_IXUSR (Owner may execute)
199 * - 0x80
200 - S_IWUSR (Owner may write)
201 * - 0x100
202 - S_IRUSR (Owner may read)
203 * - 0x200
204 - S_ISVTX (Sticky bit)
205 * - 0x400
206 - S_ISGID (Set GID)
207 * - 0x800
208 - S_ISUID (Set UID)
209 * -
210 - These are mutually-exclusive file types:
211 * - 0x1000
212 - S_IFIFO (FIFO)
213 * - 0x2000
214 - S_IFCHR (Character device)
215 * - 0x4000
216 - S_IFDIR (Directory)
217 * - 0x6000
218 - S_IFBLK (Block device)
219 * - 0x8000
220 - S_IFREG (Regular file)
221 * - 0xA000
222 - S_IFLNK (Symbolic link)
223 * - 0xC000
224 - S_IFSOCK (Socket)
230 .. list-table::
232 :header-rows: 1
234 * - Value
235 - Description
236 * - 0x1
237 - This file requires secure deletion (EXT4_SECRM_FL). (not implemented)
238 * - 0x2
239 - This file should be preserved, should undeletion be desired
241 * - 0x4
242 - File is compressed (EXT4_COMPR_FL). (not really implemented)
243 * - 0x8
244 - All writes to the file must be synchronous (EXT4_SYNC_FL).
245 * - 0x10
246 - File is immutable (EXT4_IMMUTABLE_FL).
247 * - 0x20
248 - File can only be appended (EXT4_APPEND_FL).
249 * - 0x40
250 - The dump(1) utility should not dump this file (EXT4_NODUMP_FL).
251 * - 0x80
252 - Do not update access time (EXT4_NOATIME_FL).
253 * - 0x100
254 - Dirty compressed file (EXT4_DIRTY_FL). (not used)
255 * - 0x200
256 - File has one or more compressed clusters (EXT4_COMPRBLK_FL). (not used)
257 * - 0x400
258 - Do not compress file (EXT4_NOCOMPR_FL). (not used)
259 * - 0x800
260 - Encrypted inode (EXT4_ENCRYPT_FL). This bit value previously was
262 * - 0x1000
263 - Directory has hashed indexes (EXT4_INDEX_FL).
264 * - 0x2000
265 - AFS magic directory (EXT4_IMAGIC_FL).
266 * - 0x4000
267 - File data must always be written through the journal
269 * - 0x8000
270 - File tail should not be merged (EXT4_NOTAIL_FL). (not used by ext4)
271 * - 0x10000
272 - All directory entry data should be written synchronously (see
274 * - 0x20000
275 - Top of directory hierarchy (EXT4_TOPDIR_FL).
276 * - 0x40000
277 - This is a huge file (EXT4_HUGE_FILE_FL).
278 * - 0x80000
279 - Inode uses extents (EXT4_EXTENTS_FL).
280 * - 0x100000
281 - Verity protected file (EXT4_VERITY_FL).
282 * - 0x200000
283 - Inode stores a large extended attribute value in its data blocks
285 * - 0x400000
286 - This file has blocks allocated past EOF (EXT4_EOFBLOCKS_FL).
288 * - 0x01000000
289 - Inode is a snapshot (``EXT4_SNAPFILE_FL``). (not in mainline)
290 * - 0x04000000
291 - Snapshot is being deleted (``EXT4_SNAPFILE_DELETED_FL``). (not in
293 * - 0x08000000
294 - Snapshot shrink has completed (``EXT4_SNAPFILE_SHRUNK_FL``). (not in
296 * - 0x10000000
297 - Inode has inline data (EXT4_INLINE_DATA_FL).
298 * - 0x20000000
299 - Create children with the same project ID (EXT4_PROJINHERIT_FL).
300 * - 0x80000000
301 - Reserved for ext4 library (EXT4_RESERVED_FL).
302 * -
303 - Aggregate flags:
304 * - 0x705BDFFF
305 - User-visible flags.
306 * - 0x604BC0FF
307 - User-modifiable flags. Note that while EXT4_JOURNAL_DATA_FL and
319 .. list-table::
321 :header-rows: 1
323 * - Offset
324 - Size
325 - Name
326 - Description
327 * - 0x0
328 - __le32
329 - l_i_version
330 - Inode version. However, if the EA_INODE inode flag is set, this inode
331 stores an extended attribute value and this field contains the upper 32
332 bits of the attribute value's reference count.
336 .. list-table::
338 :header-rows: 1
340 * - Offset
341 - Size
342 - Name
343 - Description
344 * - 0x0
345 - __le32
346 - h_i_translator
347 - ??
351 .. list-table::
353 :header-rows: 1
355 * - Offset
356 - Size
357 - Name
358 - Description
359 * - 0x0
360 - __le32
361 - m_i_reserved
362 - ??
370 .. list-table::
372 :header-rows: 1
374 * - Offset
375 - Size
376 - Name
377 - Description
378 * - 0x0
379 - __le16
380 - l_i_blocks_high
381 - Upper 16-bits of the block count. Please see the note attached to
383 * - 0x2
384 - __le16
385 - l_i_file_acl_high
386 - Upper 16-bits of the extended attribute block (historically, the file
388 * - 0x4
389 - __le16
390 - l_i_uid_high
391 - Upper 16-bits of the Owner UID.
392 * - 0x6
393 - __le16
394 - l_i_gid_high
395 - Upper 16-bits of the GID.
396 * - 0x8
397 - __le16
398 - l_i_checksum_lo
399 - Lower 16-bits of the inode checksum.
400 * - 0xA
401 - __le16
402 - l_i_reserved
403 - Unused.
407 .. list-table::
409 :header-rows: 1
411 * - Offset
412 - Size
413 - Name
414 - Description
415 * - 0x0
416 - __le16
417 - h_i_reserved1
418 - ??
419 * - 0x2
420 - __u16
421 - h_i_mode_high
422 - Upper 16-bits of the file mode.
423 * - 0x4
424 - __le16
425 - h_i_uid_high
426 - Upper 16-bits of the Owner UID.
427 * - 0x6
428 - __le16
429 - h_i_gid_high
430 - Upper 16-bits of the GID.
431 * - 0x8
432 - __u32
433 - h_i_author
434 - Author code?
438 .. list-table::
440 :header-rows: 1
442 * - Offset
443 - Size
444 - Name
445 - Description
446 * - 0x0
447 - __le16
448 - h_i_reserved1
449 - ??
450 * - 0x2
451 - __u16
452 - m_i_file_acl_high
453 - Upper 16-bits of the extended attribute block (historically, the file
455 * - 0x4
456 - __u32
457 - m_i_reserved2[2]
458 - ??
466 on-disk inode at format time for all inodes in the filesystem to provide
467 space beyond the end of the original ext2 inode. The on-disk inode
470 128-byte ext2 inode is recorded in the ``i_extra_isize`` field for each
472 having to upgrade all of the on-disk inodes. Access to fields beyond
476 (``i_extra_isize = 32``). The extra space between the end of the inode
484 Each block group contains ``sb->s_inodes_per_group`` inodes. Because
487 ``bg = (inode_num - 1) / sb->s_inodes_per_group``. The particular inode
489 ``index = (inode_num - 1) % sb->s_inodes_per_group``. To get the byte
491 ``offset = index * sb->s_inode_size``.
497 structure -- inode change time (ctime), access time (atime), data
499 are 32-bit signed integers that represent seconds since the Unix epoch
500 (1970-01-01 00:00:00 GMT), which means that the fields will overflow in
507 If the inode structure size ``sb->s_inode_size`` is larger than 128
510 inode fields are widened to 64 bits. Within this “extra” 32-bit field,
511 the lower two bits are used to extend the 32-bit seconds field to be 34
512 bit wide; the upper 30 bits are used to provide nanosecond timestamp
515 creation time (crtime); this field is 64-bits wide and decoded in the
516 same manner as 64-bit [cma]time. Neither crtime nor dtime are accessible
519 We use the 32-bit signed time value plus (2^32 * (extra epoch bits)).
522 .. list-table::
524 :header-rows: 1
526 * - Extra epoch bits
527 - MSB of 32-bit time
528 - Adjustment for signed 32-bit to 64-bit tv_sec
529 - Decoded 64-bit tv_sec
530 - valid time range
531 * - 0 0
532 - 1
533 - 0
534 - ``-0x80000000 - -0x00000001``
535 - 1901-12-13 to 1969-12-31
536 * - 0 0
537 - 0
538 - 0
539 - ``0x000000000 - 0x07fffffff``
540 - 1970-01-01 to 2038-01-19
541 * - 0 1
542 - 1
543 - 0x100000000
544 - ``0x080000000 - 0x0ffffffff``
545 - 2038-01-19 to 2106-02-07
546 * - 0 1
547 - 0
548 - 0x100000000
549 - ``0x100000000 - 0x17fffffff``
550 - 2106-02-07 to 2174-02-25
551 * - 1 0
552 - 1
553 - 0x200000000
554 - ``0x180000000 - 0x1ffffffff``
555 - 2174-02-25 to 2242-03-16
556 * - 1 0
557 - 0
558 - 0x200000000
559 - ``0x200000000 - 0x27fffffff``
560 - 2242-03-16 to 2310-04-04
561 * - 1 1
562 - 1
563 - 0x300000000
564 - ``0x280000000 - 0x2ffffffff``
565 - 2310-04-04 to 2378-04-22
566 * - 1 1
567 - 0
568 - 0x300000000
569 - ``0x300000000 - 0x37fffffff``
570 - 2378-04-22 to 2446-05-10
574 long-standing bugs decoding and encoding dates beyond 2038, which don't
575 seem to be fixed as of kernel 3.12 and e2fsprogs 1.42.8. 64-bit kernels
576 incorrectly use the extra epoch bits 1,1 for dates between 1901 and