Hackfut Security File Manager
Current Path:
/usr/include/linux
usr
/
include
/
linux
/
📁
..
📄
a.out.h
(7.15 KB)
📄
acct.h
(3.41 KB)
📄
adb.h
(1.05 KB)
📄
adfs_fs.h
(856 B)
📄
affs_hardblocks.h
(1.45 KB)
📄
agpgart.h
(3.83 KB)
📄
aio_abi.h
(3.04 KB)
📄
apm_bios.h
(3.46 KB)
📄
arcfb.h
(150 B)
📄
atalk.h
(927 B)
📄
atm.h
(7.62 KB)
📄
atm_eni.h
(585 B)
📄
atm_he.h
(343 B)
📄
atm_idt77105.h
(892 B)
📄
atm_nicstar.h
(1.19 KB)
📄
atm_tcp.h
(1.5 KB)
📄
atm_zatm.h
(1.57 KB)
📄
atmapi.h
(889 B)
📄
atmarp.h
(1.2 KB)
📄
atmbr2684.h
(3.13 KB)
📄
atmclip.h
(513 B)
📄
atmdev.h
(7.42 KB)
📄
atmioc.h
(1.55 KB)
📄
atmlec.h
(2.5 KB)
📄
atmmpc.h
(4.07 KB)
📄
atmppp.h
(576 B)
📄
atmsap.h
(4.79 KB)
📄
atmsvc.h
(1.75 KB)
📄
audit.h
(15.51 KB)
📄
auto_fs.h
(2.29 KB)
📄
auto_fs4.h
(4.03 KB)
📄
auxvec.h
(1.35 KB)
📄
ax25.h
(2.69 KB)
📄
b1lli.h
(1.62 KB)
📄
baycom.h
(820 B)
📄
bfs_fs.h
(1.79 KB)
📄
binfmts.h
(565 B)
📄
blk_types.h
(6.94 KB)
📄
blkpg.h
(1.56 KB)
📄
blktrace_api.h
(4.37 KB)
📄
bpqether.h
(952 B)
📄
bsg.h
(2.33 KB)
📁
byteorder
📁
can
📄
can.h
(3.25 KB)
📄
capability.h
(10.34 KB)
📄
capi.h
(2.99 KB)
📄
cciss_ioctl.h
(5.69 KB)
📄
cdk.h
(12.47 KB)
📄
cdrom.h
(27.47 KB)
📄
cgroupstats.h
(2.1 KB)
📄
chio.h
(5.16 KB)
📄
cm4000_cs.h
(1.68 KB)
📄
cn_proc.h
(2.65 KB)
📄
coda.h
(17.08 KB)
📄
coda_psdev.h
(679 B)
📄
coff.h
(12.12 KB)
📄
comstats.h
(3.05 KB)
📄
connector.h
(2.08 KB)
📄
const.h
(682 B)
📄
cramfs_fs.h
(2.86 KB)
📄
cuda.h
(769 B)
📄
cyclades.h
(16.65 KB)
📄
cycx_cfm.h
(2.86 KB)
📄
dcbnl.h
(21.6 KB)
📄
dccp.h
(5.66 KB)
📄
dlm.h
(2.47 KB)
📄
dlm_device.h
(2.42 KB)
📄
dlm_netlink.h
(1.04 KB)
📄
dlm_plock.h
(806 B)
📄
dlmconstants.h
(4.9 KB)
📄
dm-ioctl.h
(10.42 KB)
📄
dm-log-userspace.h
(14.82 KB)
📄
dn.h
(4.42 KB)
📄
dqblk_xfs.h
(6.79 KB)
📁
dvb
📄
edd.h
(5.41 KB)
📄
efs_fs_sb.h
(2.11 KB)
📄
elf-em.h
(1.79 KB)
📄
elf-fdpic.h
(2.5 KB)
📄
elf.h
(10.97 KB)
📄
elfcore.h
(2.86 KB)
📄
errno.h
(79 B)
📄
errqueue.h
(443 B)
📄
ethtool.h
(33.37 KB)
📄
eventpoll.h
(1.32 KB)
📄
ext2_fs.h
(18.36 KB)
📄
fadvise.h
(855 B)
📄
falloc.h
(293 B)
📄
fb.h
(15.64 KB)
📄
fcntl.h
(1.57 KB)
📄
fd.h
(11.29 KB)
📄
fdreg.h
(5.23 KB)
📄
fib_rules.h
(1.42 KB)
📄
fiemap.h
(2.49 KB)
📄
filter.h
(3.45 KB)
📄
firewire-cdev.h
(24.47 KB)
📄
firewire-constants.h
(1.93 KB)
📄
flat.h
(2.04 KB)
📄
fs.h
(18.47 KB)
📄
fuse.h
(11.17 KB)
📄
futex.h
(4.79 KB)
📄
gameport.h
(816 B)
📄
gen_stats.h
(1.27 KB)
📄
generic_serial.h
(895 B)
📄
genetlink.h
(1.64 KB)
📄
gfs2_ondisk.h
(11.54 KB)
📄
gigaset_dev.h
(981 B)
📄
hayesesp.h
(230 B)
📁
hdlc
📄
hdlc.h
(574 B)
📄
hdlcdrv.h
(2.78 KB)
📄
hdreg.h
(22.11 KB)
📄
hid.h
(1.78 KB)
📄
hiddev.h
(6.12 KB)
📄
hidraw.h
(1.19 KB)
📄
hpet.h
(686 B)
📄
hysdn_if.h
(1.29 KB)
📄
i2c-dev.h
(2.35 KB)
📄
i2c.h
(6.48 KB)
📄
i2o-dev.h
(11.22 KB)
📄
i8k.h
(1.4 KB)
📄
icmp.h
(2.82 KB)
📄
icmpv6.h
(3.74 KB)
📄
if.h
(8.47 KB)
📄
if_addr.h
(1.42 KB)
📄
if_addrlabel.h
(658 B)
📄
if_arcnet.h
(3.63 KB)
📄
if_arp.h
(5.97 KB)
📄
if_bonding.h
(3.98 KB)
📄
if_bridge.h
(3.72 KB)
📄
if_cablemodem.h
(910 B)
📄
if_ec.h
(901 B)
📄
if_eql.h
(1.25 KB)
📄
if_ether.h
(6.39 KB)
📄
if_fc.h
(1.63 KB)
📄
if_fddi.h
(3.61 KB)
📄
if_frad.h
(2.87 KB)
📄
if_hippi.h
(4.08 KB)
📄
if_infiniband.h
(1.12 KB)
📄
if_link.h
(11.79 KB)
📄
if_ltalk.h
(125 B)
📄
if_packet.h
(3.45 KB)
📄
if_phonet.h
(337 B)
📄
if_plip.h
(596 B)
📄
if_ppp.h
(6.78 KB)
📄
if_pppol2tp.h
(1.94 KB)
📄
if_pppox.h
(3.68 KB)
📄
if_slip.h
(809 B)
📄
if_strip.h
(700 B)
📄
if_tr.h
(3.12 KB)
📄
if_tun.h
(2.94 KB)
📄
if_tunnel.h
(1.42 KB)
📄
if_vlan.h
(1.67 KB)
📄
igmp.h
(2.86 KB)
📄
in.h
(8.99 KB)
📄
in6.h
(7.32 KB)
📄
in_route.h
(873 B)
📄
inet_diag.h
(2.4 KB)
📄
inotify.h
(2.77 KB)
📄
input.h
(26.95 KB)
📄
ioctl.h
(100 B)
📄
ip.h
(3.47 KB)
📄
ip6_tunnel.h
(1.05 KB)
📄
ip_vs.h
(12.29 KB)
📄
ipc.h
(1.99 KB)
📄
ipmi.h
(16.16 KB)
📄
ipmi_msgdefs.h
(4.37 KB)
📄
ipsec.h
(884 B)
📄
ipv6.h
(2.82 KB)
📄
ipv6_route.h
(1.58 KB)
📄
ipx.h
(1.78 KB)
📄
irda.h
(7.47 KB)
📄
irqnr.h
(93 B)
📁
isdn
📄
isdn.h
(5.55 KB)
📄
isdn_divertif.h
(1.01 KB)
📄
isdn_ppp.h
(1.82 KB)
📄
isdnif.h
(2.25 KB)
📄
iso_fs.h
(6.29 KB)
📄
ivtv.h
(2.66 KB)
📄
ivtvfb.h
(1.12 KB)
📄
ixjuser.h
(24.53 KB)
📄
jffs2.h
(6.79 KB)
📄
joystick.h
(3.5 KB)
📄
kd.h
(6.02 KB)
📄
kdev_t.h
(298 B)
📄
kernel.h
(2.4 KB)
📄
kernelcapi.h
(959 B)
📄
keyboard.h
(12.4 KB)
📄
keyctl.h
(2.91 KB)
📄
kvm.h
(20.2 KB)
📄
kvm_para.h
(564 B)
📄
libc-compat.h
(3.46 KB)
📄
limits.h
(874 B)
📄
llc.h
(2.77 KB)
📄
loop.h
(2.14 KB)
📄
lp.h
(3.71 KB)
📄
magic.h
(2.24 KB)
📄
major.h
(4.55 KB)
📄
map_to_7segment.h
(7.02 KB)
📄
matroxfb.h
(1.4 KB)
📄
mempolicy.h
(2 KB)
📄
meye.h
(2.48 KB)
📄
mii.h
(7.76 KB)
📄
minix_fs.h
(2.01 KB)
📄
mman.h
(230 B)
📄
mmtimer.h
(2.01 KB)
📄
mqueue.h
(2.01 KB)
📄
mroute.h
(3.72 KB)
📄
mroute6.h
(3.9 KB)
📄
msdos_fs.h
(5.7 KB)
📄
msg.h
(2.48 KB)
📄
mtio.h
(7.89 KB)
📄
n_r3964.h
(2.29 KB)
📄
nbd.h
(1.91 KB)
📄
ncp.h
(4.94 KB)
📄
ncp_fs.h
(3.28 KB)
📄
ncp_mount.h
(2.06 KB)
📄
ncp_no.h
(651 B)
📄
neighbour.h
(3.96 KB)
📄
net.h
(1.97 KB)
📄
net_dropmon.h
(1.07 KB)
📄
net_tstamp.h
(3.39 KB)
📄
netdevice.h
(1.73 KB)
📁
netfilter
📄
netfilter.h
(1.51 KB)
📁
netfilter_arp
📄
netfilter_arp.h
(380 B)
📁
netfilter_bridge
📄
netfilter_bridge.h
(735 B)
📄
netfilter_decnet.h
(1.83 KB)
📁
netfilter_ipv4
📄
netfilter_ipv4.h
(1.98 KB)
📁
netfilter_ipv6
📄
netfilter_ipv6.h
(2 KB)
📄
netlink.h
(4.85 KB)
📄
netrom.h
(719 B)
📄
nfs.h
(4.25 KB)
📄
nfs2.h
(1.37 KB)
📄
nfs3.h
(2.16 KB)
📄
nfs4.h
(5.63 KB)
📄
nfs4_mount.h
(1.83 KB)
📄
nfs_fs.h
(1.52 KB)
📄
nfs_idmap.h
(2.19 KB)
📄
nfs_mount.h
(3.13 KB)
📄
nfsacl.h
(577 B)
📁
nfsd
📄
nl80211.h
(187.85 KB)
📄
nubus.h
(8.17 KB)
📄
nvram.h
(470 B)
📄
oom.h
(456 B)
📄
param.h
(78 B)
📄
parport.h
(3.56 KB)
📄
patchkey.h
(831 B)
📄
pci.h
(1.45 KB)
📄
pci_regs.h
(37.08 KB)
📄
perf_event.h
(21.34 KB)
📄
personality.h
(1.95 KB)
📄
pfkeyv2.h
(9.91 KB)
📄
pg.h
(2.23 KB)
📄
phantom.h
(1.55 KB)
📄
phonet.h
(4.25 KB)
📄
pkt_cls.h
(9.08 KB)
📄
pkt_sched.h
(10.63 KB)
📄
pktcdvd.h
(2.56 KB)
📄
pmu.h
(5.07 KB)
📄
poll.h
(96 B)
📄
posix_types.h
(1.24 KB)
📄
ppdev.h
(3.07 KB)
📄
ppp-comp.h
(6.36 KB)
📄
ppp_defs.h
(6.31 KB)
📄
pps.h
(3.85 KB)
📄
prctl.h
(4.86 KB)
📄
ptp_clock.h
(3.41 KB)
📄
ptrace.h
(2.24 KB)
📄
qnx4_fs.h
(2.21 KB)
📄
qnxtypes.h
(561 B)
📄
quota.h
(5.59 KB)
📄
radeonfb.h
(297 B)
📁
raid
📄
random.h
(1.06 KB)
📄
raw.h
(302 B)
📄
reboot.h
(1.25 KB)
📄
reiserfs_fs.h
(907 B)
📄
reiserfs_xattr.h
(465 B)
📄
resource.h
(2.04 KB)
📄
rfkill.h
(3.3 KB)
📄
romfs_fs.h
(1.1 KB)
📄
rose.h
(2.05 KB)
📄
route.h
(2.22 KB)
📄
rtc.h
(3.61 KB)
📄
rtnetlink.h
(14.98 KB)
📄
scc.h
(4.44 KB)
📄
sched.h
(2.05 KB)
📄
screen_info.h
(2.15 KB)
📄
sdla.h
(2.77 KB)
📄
selinux_netlink.h
(1.11 KB)
📄
sem.h
(3.58 KB)
📄
serial.h
(6.62 KB)
📄
serial_core.h
(3.93 KB)
📄
serial_reg.h
(12.93 KB)
📄
serio.h
(1.65 KB)
📄
shm.h
(2.14 KB)
📄
signal.h
(129 B)
📄
signalfd.h
(1.07 KB)
📄
smb.h
(1.18 KB)
📄
smb_fs.h
(535 B)
📄
smb_mount.h
(468 B)
📄
smbno.h
(14.18 KB)
📄
snmp.h
(10.9 KB)
📄
socket.h
(738 B)
📄
sockios.h
(5.83 KB)
📄
som.h
(5.35 KB)
📄
sonet.h
(2.16 KB)
📄
sonypi.h
(5.02 KB)
📄
sound.h
(1.07 KB)
📄
soundcard.h
(44.94 KB)
📁
spi
📄
stat.h
(1005 B)
📄
stddef.h
(633 B)
📄
string.h
(175 B)
📁
sunrpc
📄
suspend_ioctls.h
(1.34 KB)
📄
swab.h
(6.14 KB)
📄
synclink.h
(8.49 KB)
📄
sysctl.h
(25.87 KB)
📄
taskstats.h
(6.78 KB)
📁
tc_act
📁
tc_ematch
📄
tcp.h
(5.08 KB)
📄
telephony.h
(8.84 KB)
📄
termios.h
(544 B)
📄
time.h
(1.7 KB)
📄
times.h
(215 B)
📄
timex.h
(6.08 KB)
📄
tiocl.h
(1.63 KB)
📄
tipc.h
(5.77 KB)
📄
tipc_config.h
(15.01 KB)
📄
toshiba.h
(1.25 KB)
📄
tty.h
(128 B)
📄
types.h
(991 B)
📄
udf_fs_i.h
(634 B)
📄
udp.h
(1.14 KB)
📄
uinput.h
(5 KB)
📄
uio.h
(648 B)
📄
ultrasound.h
(4.39 KB)
📄
un.h
(203 B)
📄
unistd.h
(157 B)
📁
usb
📄
usbdevice_fs.h
(5.21 KB)
📄
utime.h
(152 B)
📄
utsname.h
(606 B)
📄
uuid.h
(1.73 KB)
📄
version.h
(281 B)
📄
veth.h
(474 B)
📄
vhost.h
(4.46 KB)
📄
videodev.h
(10.27 KB)
📄
videodev2.h
(64.52 KB)
📄
videotext.h
(4.14 KB)
📄
virtio_9p.h
(351 B)
📄
virtio_balloon.h
(1.23 KB)
📄
virtio_blk.h
(2.91 KB)
📄
virtio_config.h
(1.25 KB)
📄
virtio_console.h
(1.37 KB)
📄
virtio_ids.h
(545 B)
📄
virtio_net.h
(6.86 KB)
📄
virtio_pci.h
(2.21 KB)
📄
virtio_ring.h
(4.38 KB)
📄
virtio_rng.h
(265 B)
📄
vt.h
(3 KB)
📄
wait.h
(580 B)
📄
wanrouter.h
(17.42 KB)
📄
watchdog.h
(2.34 KB)
📁
wimax
📄
wimax.h
(8.17 KB)
📄
wireless.h
(41.65 KB)
📄
x25.h
(3.34 KB)
📄
xattr.h
(646 B)
📄
xfrm.h
(10.31 KB)
Editing: ext2_fs.h
/* * linux/include/linux/ext2_fs.h * * Copyright (C) 1992, 1993, 1994, 1995 * Remy Card (card@masi.ibp.fr) * Laboratoire MASI - Institut Blaise Pascal * Universite Pierre et Marie Curie (Paris VI) * * from * * linux/include/linux/minix_fs.h * * Copyright (C) 1991, 1992 Linus Torvalds */ #ifndef _LINUX_EXT2_FS_H #define _LINUX_EXT2_FS_H #include <linux/types.h> #include <linux/magic.h> /* * The second extended filesystem constants/structures */ /* * Define EXT2FS_DEBUG to produce debug messages */ #undef EXT2FS_DEBUG /* * Define EXT2_RESERVATION to reserve data blocks for expanding files */ #define EXT2_DEFAULT_RESERVE_BLOCKS 8 /*max window size: 1024(direct blocks) + 3([t,d]indirect blocks) */ #define EXT2_MAX_RESERVE_BLOCKS 1027 #define EXT2_RESERVE_WINDOW_NOT_ALLOCATED 0 /* * The second extended file system version */ #define EXT2FS_DATE "95/08/09" #define EXT2FS_VERSION "0.5b" /* * Debug code */ #ifdef EXT2FS_DEBUG # define ext2_debug(f, a...) { \ printk ("EXT2-fs DEBUG (%s, %d): %s:", \ __FILE__, __LINE__, __func__); \ printk (f, ## a); \ } #else # define ext2_debug(f, a...) /**/ #endif /* * Special inode numbers */ #define EXT2_BAD_INO 1 /* Bad blocks inode */ #define EXT2_ROOT_INO 2 /* Root inode */ #define EXT2_BOOT_LOADER_INO 5 /* Boot loader inode */ #define EXT2_UNDEL_DIR_INO 6 /* Undelete directory inode */ /* First non-reserved inode for old ext2 filesystems */ #define EXT2_GOOD_OLD_FIRST_INO 11 /* Assume that user mode programs are passing in an ext2fs superblock, not * a kernel struct super_block. This will allow us to call the feature-test * macros from user land. */ #define EXT2_SB(sb) (sb) /* * Maximal count of links to a file */ #define EXT2_LINK_MAX 32000 /* * Macro-instructions used to manage several block sizes */ #define EXT2_MIN_BLOCK_SIZE 1024 #define EXT2_MAX_BLOCK_SIZE 4096 #define EXT2_MIN_BLOCK_LOG_SIZE 10 # define EXT2_BLOCK_SIZE(s) (EXT2_MIN_BLOCK_SIZE << (s)->s_log_block_size) #define EXT2_ADDR_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / sizeof (__u32)) # define EXT2_BLOCK_SIZE_BITS(s) ((s)->s_log_block_size + 10) #define EXT2_INODE_SIZE(s) (((s)->s_rev_level == EXT2_GOOD_OLD_REV) ? \ EXT2_GOOD_OLD_INODE_SIZE : \ (s)->s_inode_size) #define EXT2_FIRST_INO(s) (((s)->s_rev_level == EXT2_GOOD_OLD_REV) ? \ EXT2_GOOD_OLD_FIRST_INO : \ (s)->s_first_ino) /* * Macro-instructions used to manage fragments */ #define EXT2_MIN_FRAG_SIZE 1024 #define EXT2_MAX_FRAG_SIZE 4096 #define EXT2_MIN_FRAG_LOG_SIZE 10 # define EXT2_FRAG_SIZE(s) (EXT2_MIN_FRAG_SIZE << (s)->s_log_frag_size) # define EXT2_FRAGS_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / EXT2_FRAG_SIZE(s)) /* * Structure of a blocks group descriptor */ struct ext2_group_desc { __le32 bg_block_bitmap; /* Blocks bitmap block */ __le32 bg_inode_bitmap; /* Inodes bitmap block */ __le32 bg_inode_table; /* Inodes table block */ __le16 bg_free_blocks_count; /* Free blocks count */ __le16 bg_free_inodes_count; /* Free inodes count */ __le16 bg_used_dirs_count; /* Directories count */ __le16 bg_pad; __le32 bg_reserved[3]; }; /* * Macro-instructions used to manage group descriptors */ # define EXT2_BLOCKS_PER_GROUP(s) ((s)->s_blocks_per_group) # define EXT2_DESC_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / sizeof (struct ext2_group_desc)) # define EXT2_INODES_PER_GROUP(s) ((s)->s_inodes_per_group) /* * Constants relative to the data blocks */ #define EXT2_NDIR_BLOCKS 12 #define EXT2_IND_BLOCK EXT2_NDIR_BLOCKS #define EXT2_DIND_BLOCK (EXT2_IND_BLOCK + 1) #define EXT2_TIND_BLOCK (EXT2_DIND_BLOCK + 1) #define EXT2_N_BLOCKS (EXT2_TIND_BLOCK + 1) /* * Inode flags (GETFLAGS/SETFLAGS) */ #define EXT2_SECRM_FL FS_SECRM_FL /* Secure deletion */ #define EXT2_UNRM_FL FS_UNRM_FL /* Undelete */ #define EXT2_COMPR_FL FS_COMPR_FL /* Compress file */ #define EXT2_SYNC_FL FS_SYNC_FL /* Synchronous updates */ #define EXT2_IMMUTABLE_FL FS_IMMUTABLE_FL /* Immutable file */ #define EXT2_APPEND_FL FS_APPEND_FL /* writes to file may only append */ #define EXT2_NODUMP_FL FS_NODUMP_FL /* do not dump file */ #define EXT2_NOATIME_FL FS_NOATIME_FL /* do not update atime */ /* Reserved for compression usage... */ #define EXT2_DIRTY_FL FS_DIRTY_FL #define EXT2_COMPRBLK_FL FS_COMPRBLK_FL /* One or more compressed clusters */ #define EXT2_NOCOMP_FL FS_NOCOMP_FL /* Don't compress */ #define EXT2_ECOMPR_FL FS_ECOMPR_FL /* Compression error */ /* End compression flags --- maybe not all used */ #define EXT2_BTREE_FL FS_BTREE_FL /* btree format dir */ #define EXT2_INDEX_FL FS_INDEX_FL /* hash-indexed directory */ #define EXT2_IMAGIC_FL FS_IMAGIC_FL /* AFS directory */ #define EXT2_JOURNAL_DATA_FL FS_JOURNAL_DATA_FL /* Reserved for ext3 */ #define EXT2_NOTAIL_FL FS_NOTAIL_FL /* file tail should not be merged */ #define EXT2_DIRSYNC_FL FS_DIRSYNC_FL /* dirsync behaviour (directories only) */ #define EXT2_TOPDIR_FL FS_TOPDIR_FL /* Top of directory hierarchies*/ #define EXT2_RESERVED_FL FS_RESERVED_FL /* reserved for ext2 lib */ #define EXT2_FL_USER_VISIBLE FS_FL_USER_VISIBLE /* User visible flags */ #define EXT2_FL_USER_MODIFIABLE FS_FL_USER_MODIFIABLE /* User modifiable flags */ /* Flags that should be inherited by new inodes from their parent. */ #define EXT2_FL_INHERITED (EXT2_SECRM_FL | EXT2_UNRM_FL | EXT2_COMPR_FL |\ EXT2_SYNC_FL | EXT2_NODUMP_FL |\ EXT2_NOATIME_FL | EXT2_COMPRBLK_FL |\ EXT2_NOCOMP_FL | EXT2_JOURNAL_DATA_FL |\ EXT2_NOTAIL_FL | EXT2_DIRSYNC_FL) /* Flags that are appropriate for regular files (all but dir-specific ones). */ #define EXT2_REG_FLMASK (~(EXT2_DIRSYNC_FL | EXT2_TOPDIR_FL)) /* Flags that are appropriate for non-directories/regular files. */ #define EXT2_OTHER_FLMASK (EXT2_NODUMP_FL | EXT2_NOATIME_FL) /* Mask out flags that are inappropriate for the given type of inode. */ static __inline__ __u32 ext2_mask_flags(umode_t mode, __u32 flags) { if (S_ISDIR(mode)) return flags; else if (S_ISREG(mode)) return flags & EXT2_REG_FLMASK; else return flags & EXT2_OTHER_FLMASK; } /* * ioctl commands */ #define EXT2_IOC_GETFLAGS FS_IOC_GETFLAGS #define EXT2_IOC_SETFLAGS FS_IOC_SETFLAGS #define EXT2_IOC_GETVERSION FS_IOC_GETVERSION #define EXT2_IOC_SETVERSION FS_IOC_SETVERSION #define EXT2_IOC_GETRSVSZ _IOR('f', 5, long) #define EXT2_IOC_SETRSVSZ _IOW('f', 6, long) /* * ioctl commands in 32 bit emulation */ #define EXT2_IOC32_GETFLAGS FS_IOC32_GETFLAGS #define EXT2_IOC32_SETFLAGS FS_IOC32_SETFLAGS #define EXT2_IOC32_GETVERSION FS_IOC32_GETVERSION #define EXT2_IOC32_SETVERSION FS_IOC32_SETVERSION /* * Structure of an inode on the disk */ struct ext2_inode { __le16 i_mode; /* File mode */ __le16 i_uid; /* Low 16 bits of Owner Uid */ __le32 i_size; /* Size in bytes */ __le32 i_atime; /* Access time */ __le32 i_ctime; /* Creation time */ __le32 i_mtime; /* Modification time */ __le32 i_dtime; /* Deletion Time */ __le16 i_gid; /* Low 16 bits of Group Id */ __le16 i_links_count; /* Links count */ __le32 i_blocks; /* Blocks count */ __le32 i_flags; /* File flags */ union { struct { __le32 l_i_reserved1; } linux1; struct { __le32 h_i_translator; } hurd1; struct { __le32 m_i_reserved1; } masix1; } osd1; /* OS dependent 1 */ __le32 i_block[EXT2_N_BLOCKS];/* Pointers to blocks */ __le32 i_generation; /* File version (for NFS) */ __le32 i_file_acl; /* File ACL */ __le32 i_dir_acl; /* Directory ACL */ __le32 i_faddr; /* Fragment address */ union { struct { __u8 l_i_frag; /* Fragment number */ __u8 l_i_fsize; /* Fragment size */ __u16 i_pad1; __le16 l_i_uid_high; /* these 2 fields */ __le16 l_i_gid_high; /* were reserved2[0] */ __u32 l_i_reserved2; } linux2; struct { __u8 h_i_frag; /* Fragment number */ __u8 h_i_fsize; /* Fragment size */ __le16 h_i_mode_high; __le16 h_i_uid_high; __le16 h_i_gid_high; __le32 h_i_author; } hurd2; struct { __u8 m_i_frag; /* Fragment number */ __u8 m_i_fsize; /* Fragment size */ __u16 m_pad1; __u32 m_i_reserved2[2]; } masix2; } osd2; /* OS dependent 2 */ }; #define i_size_high i_dir_acl #if defined(__KERNEL__) || defined(__linux__) #define i_reserved1 osd1.linux1.l_i_reserved1 #define i_frag osd2.linux2.l_i_frag #define i_fsize osd2.linux2.l_i_fsize #define i_uid_low i_uid #define i_gid_low i_gid #define i_uid_high osd2.linux2.l_i_uid_high #define i_gid_high osd2.linux2.l_i_gid_high #define i_reserved2 osd2.linux2.l_i_reserved2 #endif #ifdef __hurd__ #define i_translator osd1.hurd1.h_i_translator #define i_frag osd2.hurd2.h_i_frag #define i_fsize osd2.hurd2.h_i_fsize #define i_uid_high osd2.hurd2.h_i_uid_high #define i_gid_high osd2.hurd2.h_i_gid_high #define i_author osd2.hurd2.h_i_author #endif #ifdef __masix__ #define i_reserved1 osd1.masix1.m_i_reserved1 #define i_frag osd2.masix2.m_i_frag #define i_fsize osd2.masix2.m_i_fsize #define i_reserved2 osd2.masix2.m_i_reserved2 #endif /* * File system states */ #define EXT2_VALID_FS 0x0001 /* Unmounted cleanly */ #define EXT2_ERROR_FS 0x0002 /* Errors detected */ #define EFSCORRUPTED EUCLEAN /* Filesystem is corrupted */ /* * Mount flags */ #define EXT2_MOUNT_CHECK 0x000001 /* Do mount-time checks */ #define EXT2_MOUNT_OLDALLOC 0x000002 /* Don't use the new Orlov allocator */ #define EXT2_MOUNT_GRPID 0x000004 /* Create files with directory's group */ #define EXT2_MOUNT_DEBUG 0x000008 /* Some debugging messages */ #define EXT2_MOUNT_ERRORS_CONT 0x000010 /* Continue on errors */ #define EXT2_MOUNT_ERRORS_RO 0x000020 /* Remount fs ro on errors */ #define EXT2_MOUNT_ERRORS_PANIC 0x000040 /* Panic on errors */ #define EXT2_MOUNT_MINIX_DF 0x000080 /* Mimics the Minix statfs */ #define EXT2_MOUNT_NOBH 0x000100 /* No buffer_heads */ #define EXT2_MOUNT_NO_UID32 0x000200 /* Disable 32-bit UIDs */ #define EXT2_MOUNT_XATTR_USER 0x004000 /* Extended user attributes */ #define EXT2_MOUNT_POSIX_ACL 0x008000 /* POSIX Access Control Lists */ #define EXT2_MOUNT_XIP 0x010000 /* Execute in place */ #define EXT2_MOUNT_USRQUOTA 0x020000 /* user quota */ #define EXT2_MOUNT_GRPQUOTA 0x040000 /* group quota */ #define EXT2_MOUNT_RESERVATION 0x080000 /* Preallocation */ #define clear_opt(o, opt) o &= ~EXT2_MOUNT_##opt #define set_opt(o, opt) o |= EXT2_MOUNT_##opt #define test_opt(sb, opt) (EXT2_SB(sb)->s_mount_opt & \ EXT2_MOUNT_##opt) /* * Maximal mount counts between two filesystem checks */ #define EXT2_DFL_MAX_MNT_COUNT 20 /* Allow 20 mounts */ #define EXT2_DFL_CHECKINTERVAL 0 /* Don't use interval check */ /* * Behaviour when detecting errors */ #define EXT2_ERRORS_CONTINUE 1 /* Continue execution */ #define EXT2_ERRORS_RO 2 /* Remount fs read-only */ #define EXT2_ERRORS_PANIC 3 /* Panic */ #define EXT2_ERRORS_DEFAULT EXT2_ERRORS_CONTINUE /* * Structure of the super block */ struct ext2_super_block { __le32 s_inodes_count; /* Inodes count */ __le32 s_blocks_count; /* Blocks count */ __le32 s_r_blocks_count; /* Reserved blocks count */ __le32 s_free_blocks_count; /* Free blocks count */ __le32 s_free_inodes_count; /* Free inodes count */ __le32 s_first_data_block; /* First Data Block */ __le32 s_log_block_size; /* Block size */ __le32 s_log_frag_size; /* Fragment size */ __le32 s_blocks_per_group; /* # Blocks per group */ __le32 s_frags_per_group; /* # Fragments per group */ __le32 s_inodes_per_group; /* # Inodes per group */ __le32 s_mtime; /* Mount time */ __le32 s_wtime; /* Write time */ __le16 s_mnt_count; /* Mount count */ __le16 s_max_mnt_count; /* Maximal mount count */ __le16 s_magic; /* Magic signature */ __le16 s_state; /* File system state */ __le16 s_errors; /* Behaviour when detecting errors */ __le16 s_minor_rev_level; /* minor revision level */ __le32 s_lastcheck; /* time of last check */ __le32 s_checkinterval; /* max. time between checks */ __le32 s_creator_os; /* OS */ __le32 s_rev_level; /* Revision level */ __le16 s_def_resuid; /* Default uid for reserved blocks */ __le16 s_def_resgid; /* Default gid for reserved blocks */ /* * These fields are for EXT2_DYNAMIC_REV superblocks only. * * Note: the difference between the compatible feature set and * the incompatible feature set is that if there is a bit set * in the incompatible feature set that the kernel doesn't * know about, it should refuse to mount the filesystem. * * e2fsck's requirements are more strict; if it doesn't know * about a feature in either the compatible or incompatible * feature set, it must abort and not try to meddle with * things it doesn't understand... */ __le32 s_first_ino; /* First non-reserved inode */ __le16 s_inode_size; /* size of inode structure */ __le16 s_block_group_nr; /* block group # of this superblock */ __le32 s_feature_compat; /* compatible feature set */ __le32 s_feature_incompat; /* incompatible feature set */ __le32 s_feature_ro_compat; /* readonly-compatible feature set */ __u8 s_uuid[16]; /* 128-bit uuid for volume */ char s_volume_name[16]; /* volume name */ char s_last_mounted[64]; /* directory where last mounted */ __le32 s_algorithm_usage_bitmap; /* For compression */ /* * Performance hints. Directory preallocation should only * happen if the EXT2_COMPAT_PREALLOC flag is on. */ __u8 s_prealloc_blocks; /* Nr of blocks to try to preallocate*/ __u8 s_prealloc_dir_blocks; /* Nr to preallocate for dirs */ __u16 s_padding1; /* * Journaling support valid if EXT3_FEATURE_COMPAT_HAS_JOURNAL set. */ __u8 s_journal_uuid[16]; /* uuid of journal superblock */ __u32 s_journal_inum; /* inode number of journal file */ __u32 s_journal_dev; /* device number of journal file */ __u32 s_last_orphan; /* start of list of inodes to delete */ __u32 s_hash_seed[4]; /* HTREE hash seed */ __u8 s_def_hash_version; /* Default hash version to use */ __u8 s_reserved_char_pad; __u16 s_reserved_word_pad; __le32 s_default_mount_opts; __le32 s_first_meta_bg; /* First metablock block group */ __u32 s_reserved[190]; /* Padding to the end of the block */ }; /* * Codes for operating systems */ #define EXT2_OS_LINUX 0 #define EXT2_OS_HURD 1 #define EXT2_OS_MASIX 2 #define EXT2_OS_FREEBSD 3 #define EXT2_OS_LITES 4 /* * Revision levels */ #define EXT2_GOOD_OLD_REV 0 /* The good old (original) format */ #define EXT2_DYNAMIC_REV 1 /* V2 format w/ dynamic inode sizes */ #define EXT2_CURRENT_REV EXT2_GOOD_OLD_REV #define EXT2_MAX_SUPP_REV EXT2_DYNAMIC_REV #define EXT2_GOOD_OLD_INODE_SIZE 128 /* * Feature set definitions */ #define EXT2_HAS_COMPAT_FEATURE(sb,mask) \ ( EXT2_SB(sb)->s_es->s_feature_compat & cpu_to_le32(mask) ) #define EXT2_HAS_RO_COMPAT_FEATURE(sb,mask) \ ( EXT2_SB(sb)->s_es->s_feature_ro_compat & cpu_to_le32(mask) ) #define EXT2_HAS_INCOMPAT_FEATURE(sb,mask) \ ( EXT2_SB(sb)->s_es->s_feature_incompat & cpu_to_le32(mask) ) #define EXT2_SET_COMPAT_FEATURE(sb,mask) \ EXT2_SB(sb)->s_es->s_feature_compat |= cpu_to_le32(mask) #define EXT2_SET_RO_COMPAT_FEATURE(sb,mask) \ EXT2_SB(sb)->s_es->s_feature_ro_compat |= cpu_to_le32(mask) #define EXT2_SET_INCOMPAT_FEATURE(sb,mask) \ EXT2_SB(sb)->s_es->s_feature_incompat |= cpu_to_le32(mask) #define EXT2_CLEAR_COMPAT_FEATURE(sb,mask) \ EXT2_SB(sb)->s_es->s_feature_compat &= ~cpu_to_le32(mask) #define EXT2_CLEAR_RO_COMPAT_FEATURE(sb,mask) \ EXT2_SB(sb)->s_es->s_feature_ro_compat &= ~cpu_to_le32(mask) #define EXT2_CLEAR_INCOMPAT_FEATURE(sb,mask) \ EXT2_SB(sb)->s_es->s_feature_incompat &= ~cpu_to_le32(mask) #define EXT2_FEATURE_COMPAT_DIR_PREALLOC 0x0001 #define EXT2_FEATURE_COMPAT_IMAGIC_INODES 0x0002 #define EXT3_FEATURE_COMPAT_HAS_JOURNAL 0x0004 #define EXT2_FEATURE_COMPAT_EXT_ATTR 0x0008 #define EXT2_FEATURE_COMPAT_RESIZE_INO 0x0010 #define EXT2_FEATURE_COMPAT_DIR_INDEX 0x0020 #define EXT2_FEATURE_COMPAT_ANY 0xffffffff #define EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER 0x0001 #define EXT2_FEATURE_RO_COMPAT_LARGE_FILE 0x0002 #define EXT2_FEATURE_RO_COMPAT_BTREE_DIR 0x0004 #define EXT2_FEATURE_RO_COMPAT_ANY 0xffffffff #define EXT2_FEATURE_INCOMPAT_COMPRESSION 0x0001 #define EXT2_FEATURE_INCOMPAT_FILETYPE 0x0002 #define EXT3_FEATURE_INCOMPAT_RECOVER 0x0004 #define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x0008 #define EXT2_FEATURE_INCOMPAT_META_BG 0x0010 #define EXT2_FEATURE_INCOMPAT_ANY 0xffffffff #define EXT2_FEATURE_COMPAT_SUPP EXT2_FEATURE_COMPAT_EXT_ATTR #define EXT2_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE| \ EXT2_FEATURE_INCOMPAT_META_BG) #define EXT2_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \ EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \ EXT2_FEATURE_RO_COMPAT_BTREE_DIR) #define EXT2_FEATURE_RO_COMPAT_UNSUPPORTED ~EXT2_FEATURE_RO_COMPAT_SUPP #define EXT2_FEATURE_INCOMPAT_UNSUPPORTED ~EXT2_FEATURE_INCOMPAT_SUPP /* * Default values for user and/or group using reserved blocks */ #define EXT2_DEF_RESUID 0 #define EXT2_DEF_RESGID 0 /* * Default mount options */ #define EXT2_DEFM_DEBUG 0x0001 #define EXT2_DEFM_BSDGROUPS 0x0002 #define EXT2_DEFM_XATTR_USER 0x0004 #define EXT2_DEFM_ACL 0x0008 #define EXT2_DEFM_UID16 0x0010 /* Not used by ext2, but reserved for use by ext3 */ #define EXT3_DEFM_JMODE 0x0060 #define EXT3_DEFM_JMODE_DATA 0x0020 #define EXT3_DEFM_JMODE_ORDERED 0x0040 #define EXT3_DEFM_JMODE_WBACK 0x0060 /* * Structure of a directory entry */ #define EXT2_NAME_LEN 255 struct ext2_dir_entry { __le32 inode; /* Inode number */ __le16 rec_len; /* Directory entry length */ __le16 name_len; /* Name length */ char name[EXT2_NAME_LEN]; /* File name */ }; /* * The new version of the directory entry. Since EXT2 structures are * stored in intel byte order, and the name_len field could never be * bigger than 255 chars, it's safe to reclaim the extra byte for the * file_type field. */ struct ext2_dir_entry_2 { __le32 inode; /* Inode number */ __le16 rec_len; /* Directory entry length */ __u8 name_len; /* Name length */ __u8 file_type; char name[EXT2_NAME_LEN]; /* File name */ }; /* * Ext2 directory file types. Only the low 3 bits are used. The * other bits are reserved for now. */ enum { EXT2_FT_UNKNOWN, EXT2_FT_REG_FILE, EXT2_FT_DIR, EXT2_FT_CHRDEV, EXT2_FT_BLKDEV, EXT2_FT_FIFO, EXT2_FT_SOCK, EXT2_FT_SYMLINK, EXT2_FT_MAX }; /* * EXT2_DIR_PAD defines the directory entries boundaries * * NOTE: It must be a multiple of 4 */ #define EXT2_DIR_PAD 4 #define EXT2_DIR_ROUND (EXT2_DIR_PAD - 1) #define EXT2_DIR_REC_LEN(name_len) (((name_len) + 8 + EXT2_DIR_ROUND) & \ ~EXT2_DIR_ROUND) #define EXT2_MAX_REC_LEN ((1<<16)-1) #endif /* _LINUX_EXT2_FS_H */
Upload File
Create Folder