linux-headers (unknown)

(root)/
include/
linux/
bfs_fs.h
       1  /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
       2  /*
       3   *	include/linux/bfs_fs.h - BFS data structures on disk.
       4   *	Copyright (C) 1999-2018 Tigran Aivazian <aivazian.tigran@gmail.com>
       5   */
       6  
       7  #ifndef _LINUX_BFS_FS_H
       8  #define _LINUX_BFS_FS_H
       9  
      10  #include <linux/types.h>
      11  
      12  #define BFS_BSIZE_BITS		9
      13  #define BFS_BSIZE		(1<<BFS_BSIZE_BITS)
      14  
      15  #define BFS_MAGIC		0x1BADFACE
      16  #define BFS_ROOT_INO		2
      17  #define BFS_INODES_PER_BLOCK	8
      18  
      19  /* SVR4 vnode type values (bfs_inode->i_vtype) */
      20  #define BFS_VDIR 2L
      21  #define BFS_VREG 1L
      22  
      23  /* BFS inode layout on disk */
      24  struct bfs_inode {
      25  	__le16 i_ino;
      26  	__u16 i_unused;
      27  	__le32 i_sblock;
      28  	__le32 i_eblock;
      29  	__le32 i_eoffset;
      30  	__le32 i_vtype;
      31  	__le32 i_mode;
      32  	__le32 i_uid;
      33  	__le32 i_gid;
      34  	__le32 i_nlink;
      35  	__le32 i_atime;
      36  	__le32 i_mtime;
      37  	__le32 i_ctime;
      38  	__u32 i_padding[4];
      39  };
      40  
      41  #define BFS_NAMELEN		14	
      42  #define BFS_DIRENT_SIZE		16
      43  #define BFS_DIRS_PER_BLOCK	32
      44  
      45  struct bfs_dirent {
      46  	__le16 ino;
      47  	char name[BFS_NAMELEN];
      48  };
      49  
      50  /* BFS superblock layout on disk */
      51  struct bfs_super_block {
      52  	__le32 s_magic;
      53  	__le32 s_start;
      54  	__le32 s_end;
      55  	__le32 s_from;
      56  	__le32 s_to;
      57  	__s32 s_bfrom;
      58  	__s32 s_bto;
      59  	char  s_fsname[6];
      60  	char  s_volume[6];
      61  	__u32 s_padding[118];
      62  };
      63  
      64  
      65  #define BFS_OFF2INO(offset) \
      66          ((((offset) - BFS_BSIZE) / sizeof(struct bfs_inode)) + BFS_ROOT_INO)
      67  
      68  #define BFS_INO2OFF(ino) \
      69  	((__u32)(((ino) - BFS_ROOT_INO) * sizeof(struct bfs_inode)) + BFS_BSIZE)
      70  #define BFS_NZFILESIZE(ip) \
      71          ((le32_to_cpu((ip)->i_eoffset) + 1) -  le32_to_cpu((ip)->i_sblock) * BFS_BSIZE)
      72  
      73  #define BFS_FILESIZE(ip) \
      74          ((ip)->i_sblock == 0 ? 0 : BFS_NZFILESIZE(ip))
      75  
      76  #define BFS_FILEBLOCKS(ip) \
      77          ((ip)->i_sblock == 0 ? 0 : (le32_to_cpu((ip)->i_eblock) + 1) -  le32_to_cpu((ip)->i_sblock))
      78  #define BFS_UNCLEAN(bfs_sb, sb)	\
      79  	((le32_to_cpu(bfs_sb->s_from) != -1) && (le32_to_cpu(bfs_sb->s_to) != -1) && !(sb->s_flags & SB_RDONLY))
      80  
      81  
      82  #endif	/* _LINUX_BFS_FS_H */