1  /* Constants from kernel header for various FSes.
       2     Copyright (C) 1998-2023 Free Software Foundation, Inc.
       3     This file is part of the GNU C Library.
       4  
       5     The GNU C Library is free software; you can redistribute it and/or
       6     modify it under the terms of the GNU Lesser General Public
       7     License as published by the Free Software Foundation; either
       8     version 2.1 of the License, or (at your option) any later version.
       9  
      10     The GNU C Library is distributed in the hope that it will be useful,
      11     but WITHOUT ANY WARRANTY; without even the implied warranty of
      12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      13     Lesser General Public License for more details.
      14  
      15     You should have received a copy of the GNU Lesser General Public
      16     License along with the GNU C Library; if not, see
      17     <https://www.gnu.org/licenses/>.  */
      18  
      19  #ifndef _LINUX_FSINFO_H
      20  #define _LINUX_FSINFO_H	1
      21  
      22  /* These definitions come from the kernel headers.  But we cannot
      23     include the headers here because of type clashes.  If new
      24     filesystem types will become available we have to add the
      25     appropriate definitions here.  */
      26  
      27  /* Constant that identifies the `adfs' filesystem.  */
      28  #define ADFS_SUPER_MAGIC	0xadf5
      29  
      30  /* Constant that identifies the `affs' filesystem.  */
      31  #define AFFS_SUPER_MAGIC	0xadff
      32  
      33  /* Constant that identifies the `afs' filesystem.  */
      34  #define AFS_SUPER_MAGIC		0x5346414F
      35  
      36  /* Constant that identifies the `anon_inodefs' filesystem.  */
      37  #define ANON_INODE_FS_MAGIC	0x09041934
      38  
      39  /* Constant that identifies the `autofs' filesystem.  */
      40  #define AUTOFS_SUPER_MAGIC	0x187
      41  
      42  /* Constant that identifies the `bdev' filesystem.  */
      43  #define BDEVFS_MAGIC		0x62646576
      44  
      45  /* Constant that identifies the `bfs' filesystem.  */
      46  #define BFS_MAGIC		0x1badface
      47  
      48  /* Constant that identifies the `binfmt_misc' filesystem.  */
      49  #define BINFMTFS_MAGIC		0x42494e4d
      50  
      51  /* Constant that identifies the `btrfs' filesystem.  */
      52  #define BTRFS_SUPER_MAGIC	0x9123683e
      53  
      54  /* Constant that identifies the `btrfs_test_fs' filesystem.  */
      55  #define BTRFS_TEST_MAGIC	0x73727279
      56  
      57  /* Constant that identifies the `cgroup' filesystem.  */
      58  #define CGROUP_SUPER_MAGIC	0x27e0eb
      59  
      60  /* Constant that identifies the `coda' filesystem.  */
      61  #define CODA_SUPER_MAGIC	0x73757245
      62  
      63  /* Constant that identifies the `coherent' filesystem.  */
      64  #define COH_SUPER_MAGIC		0x012ff7b7
      65  
      66  /* Constant that identifies the `cramfs' filesystem.  */
      67  #define CRAMFS_MAGIC		0x28cd3d45
      68  
      69  /* Constant that identifies the `cramfs' filesystem w/opposite endianness.  */
      70  #define CRAMFS_MAGIC_WEND	0x453dcd28
      71  
      72  /* Constant that identifies the `debugfs' filesystem.  */
      73  #define DEBUGFS_MAGIC		0x64626720
      74  
      75  /* Constant that identifies the `devfs' filesystem.  */
      76  #define DEVFS_SUPER_MAGIC	0x1373
      77  
      78  /* Constant that identifies the `devpts' filesystem.  */
      79  #define DEVPTS_SUPER_MAGIC	0x1cd1
      80  
      81  /* Constants that identifies the `ecryptfs' filesystem.  */
      82  #define ECRYPTFS_SUPER_MAGIC	0xf15f
      83  
      84  /* Constants that identifies the `efs' filesystem.  */
      85  #define EFS_SUPER_MAGIC		0x414a53
      86  #define EFS_MAGIC		0x072959
      87  
      88  /* Constants that identifies the `evivar' filesystem.  */
      89  #define EFIVARFS_MAGIC		0xde5e81e4
      90  
      91  /* Constant that identifies the `ext2' filesystem.  */
      92  #define EXT2_SUPER_MAGIC	0xef53
      93  
      94  /* Constant that identifies the `ext3' filesystem.  */
      95  #define EXT3_SUPER_MAGIC	0xef53
      96  
      97  /* Constant that identifies the `ext3' filesystem.  */
      98  #define EXT4_SUPER_MAGIC	0xef53
      99  
     100  /* Constant that identifies the `f2fs' filesystem.  */
     101  #define F2FS_SUPER_MAGIC	0xf2f52010
     102  
     103  /* Constant that identifies the `futexfs' filesystem.  */
     104  #define FUTEXFS_SUPER_MAGIC	0xBAD1DEA
     105  
     106  /* Constant that identifies the `hostfs' filesystem.  */
     107  #define HOSTFS_SUPER_MAGIC	0x00c0ffee
     108  
     109  /* Constant that identifies the `hpfs' filesystem.  */
     110  #define HPFS_SUPER_MAGIC	0xf995e849
     111  
     112  /* Constant that identifies the `hugetlbfs' filesystem.  */
     113  #define HUGETLBFS_MAGIC 	0x958458f6
     114  
     115  /* Constant that identifies the `iso9660' filesystem.  */
     116  #define ISOFS_SUPER_MAGIC	0x9660
     117  
     118  /* Constant that identifies the `jffs' filesystem.  */
     119  #define JFFS_SUPER_MAGIC	0x07c0
     120  
     121  /* Constant that identifies the `jffs2' filesystem.  */
     122  #define JFFS2_SUPER_MAGIC	0x72b6
     123  
     124  /* Constant that identifies the `jfs' filesystem.  */
     125  #define JFS_SUPER_MAGIC		0x3153464a
     126  
     127  /* Constant that identifies the `logfs' filesystem.  */
     128  #define LOGFS_MAGIC_U32		0xc97e8168u
     129  
     130  /* Constant that identifies the `lustre' filesystem.  */
     131  #define LUSTRE_SUPER_MAGIC	0x0BD00BD0
     132  
     133  /* Constants that identify the `minix2' filesystem.  */
     134  #define MINIX2_SUPER_MAGIC	0x2468
     135  #define MINIX2_SUPER_MAGIC2	0x2478
     136  
     137  /* Constants that identify the `minix3' filesystem.  */
     138  #define MINIX3_SUPER_MAGIC	0x4d5a
     139  
     140  /* Constants that identify the `minix' filesystem.  */
     141  #define MINIX_SUPER_MAGIC	0x137f
     142  #define MINIX_SUPER_MAGIC2	0x138F
     143  
     144  /* Constant that identifies the `msdos' filesystem.  */
     145  #define MSDOS_SUPER_MAGIC	0x4d44
     146  
     147  /* Constant that identifies the `mtd_inodefs' filesystem.  */
     148  #define MTD_INODE_FS_MAGIC	0x11307854
     149  
     150  /* Constant that identifies the `ncp' filesystem.  */
     151  #define NCP_SUPER_MAGIC		0x564c
     152  
     153  /* Constant that identifies the `nilfs' filesystem.  */
     154  #define NILFS_SUPER_MAGIC	0x3434
     155  
     156  /* Constant that identifies the `nfs' filesystem.  */
     157  #define NFS_SUPER_MAGIC		0x6969
     158  
     159  /* Constant that identifies the `ntfs' filesystem.  */
     160  #define NTFS_SUPER_MAGIC	0x5346544e
     161  
     162  /* Constant that identifies the `openpromfs' filesystem.  */
     163  #define OPENPROM_SUPER_MAGIC	0x9fa1
     164  
     165  /* Constant that identifies the `pipefs' filesystem.  */
     166  #define PIPEFS_MAGIC		0x50495045
     167  
     168  /* Constant that identifies the `proc' filesystem.  */
     169  #define PROC_SUPER_MAGIC	0x9fa0
     170  
     171  /* Constant that identifies the `pstorefs' filesystem.  */
     172  #define PSTOREFS_MAGIC		0x6165676C
     173  
     174  /* Constant that identifies the `qnx4' filesystem.  */
     175  #define QNX4_SUPER_MAGIC	0x002f
     176  
     177  /* Constant that identifies the `qnx6' filesystem.  */
     178  #define QNX6_SUPER_MAGIC	0x68191122
     179  
     180  /* Constant that identifies the `ramfs' filesystem.  */
     181  #define RAMFS_MAGIC		0x858458f6
     182  
     183  /* Constant that identifies the `reiser' filesystem.  */
     184  #define REISERFS_SUPER_MAGIC	0x52654973
     185  
     186  #define REISERFS_SUPER_MAGIC_STRING	"ReIsErFs"
     187  #define REISER2FS_SUPER_MAGIC_STRING	"ReIsEr2Fs"
     188  #define REISER2FS_JR_SUPER_MAGIC_STRING	"ReIsEr3Fs"
     189  
     190  /* Constant that identifies the `romfs' filesystem.  */
     191  #define ROMFS_SUPER_MAGIC	0x7275
     192  
     193  /* Constant that identifies the `securityfs' filesystem.  */
     194  #define SECURITYFS_MAGIC	0x73636673
     195  
     196  /* Constant that identifies the `selinuxfs' filesystem.  */
     197  #define SELINUX_MAGIC		0xf97cff8c
     198  
     199  /* Constant that identifies the `smackfs' filesystem.  */
     200  #define SMACK_MAGIC		0x43415d53	/* "SMAC" */
     201  
     202  /* Constant that identifies the `shm' filesystem.  */
     203  #define SHMFS_SUPER_MAGIC	0x01021994
     204  
     205  /* Constant that identifies the `smb' filesystem.  */
     206  #define SMB_SUPER_MAGIC		0x517b
     207  
     208  /* Constant that identifies the `sockfs' filesystem.  */
     209  #define SOCKFS_MAGIC		0x534F434B
     210  
     211  /* Constant that identifies the `squashfs' filesystem.  */
     212  #define SQUASHFS_MAGIC		0x73717368
     213  
     214  /* Constant that identifies the end of stacks allocated by the kernel.  */
     215  #define STACK_END_MAGIC		0x57AC6E9D
     216  
     217  /* Constant that identifies the `sysfs' filesystem.  */
     218  #define SYSFS_MAGIC		0x62656572
     219  
     220  /* Constants that identify the `sysV' filesystem.  */
     221  #define SYSV2_SUPER_MAGIC	0x012ff7b6
     222  #define SYSV4_SUPER_MAGIC	0x012ff7b5
     223  
     224  /* Constant that identifies the `tmpfs' filesystem.  */
     225  #define TMPFS_MAGIC		0x01021994
     226  
     227  /* Constant that identifies the `udf' filesystem.  */
     228  #define UDF_SUPER_MAGIC		0x15013346
     229  
     230  /* Constant that identify the `ufs' filesystem.  */
     231  #define UFS_MAGIC		0x00011954
     232  #define UFS_CIGAM		0x54190100 /* byteswapped MAGIC */
     233  
     234  /* Constant that identifies the `usbdevfs' filesystem.  */
     235  #define USBDEVFS_SUPER_MAGIC	0x9fa2
     236  #define USBDEVICE_SUPER_MAGIC	0x9fa2
     237  
     238  /* Constant that identifies the `9p' filesystem.  */
     239  #define V9FS_MAGIC		0x01021997
     240  
     241  /* Constant that identifies the `vxfs' filesystem.  */
     242  #define VXFS_SUPER_MAGIC	0xa501fcf5
     243  
     244  /* Constant that identifies the `xenfs' filesystem.  */
     245  #define XENFS_SUPER_MAGIC	0xabba1974
     246  
     247  /* Constant that identifies the `xenix' filesystem.  */
     248  #define XENIX_SUPER_MAGIC	0x012ff7b4
     249  
     250  /* Constant that identifies the `xfs' filesystem.  */
     251  #define XFS_SUPER_MAGIC		0x58465342
     252  
     253  /* Maximum link counts.  */
     254  #define COH_LINK_MAX		10000
     255  #define EXT2_LINK_MAX		32000
     256  #define EXT4_LINK_MAX		65000
     257  #define F2FS_LINK_MAX		32000
     258  #define LUSTRE_LINK_MAX		EXT4_LINK_MAX
     259  #define MINIX2_LINK_MAX		65530
     260  #define MINIX_LINK_MAX		250
     261  #define REISERFS_LINK_MAX	64535
     262  #define SYSV_LINK_MAX		126     /* 127? 251? */
     263  #define UFS_LINK_MAX		EXT2_LINK_MAX
     264  #define XENIX_LINK_MAX		126     /* ?? */
     265  #define XFS_LINK_MAX		2147483647
     266  
     267  /* The Linux kernel header mentioned this as a kind of generic value.  */
     268  #define LINUX_LINK_MAX	127
     269  
     270  
     271  #endif	/* linux_fsinfo.h */