Lines Matching +full:00 +full:- +full:40 +full:bit

1 .. SPDX-License-Identifier: GPL-2.0
4 -----------
11 that file. ext4 appears to cheat (for performance reasons) a little bit
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::
32 :widths: 8 8 24 40
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
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
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::
320 :widths: 8 8 24 40
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
336 .. list-table::
337 :widths: 8 8 24 40
338 :header-rows: 1
340 * - Offset
341 - Size
342 - Name
343 - Description
344 * - 0x0
345 - __le32
346 - h_i_translator
347 - ??
351 .. list-table::
352 :widths: 8 8 24 40
353 :header-rows: 1
355 * - Offset
356 - Size
357 - Name
358 - Description
359 * - 0x0
360 - __le32
361 - m_i_reserved
362 - ??
370 .. list-table::
371 :widths: 8 8 24 40
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::
408 :widths: 8 8 24 40
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::
439 :widths: 8 8 24 40
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
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