Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0
0002 /*
0003  * Copyright (c) 2000-2003,2005 Silicon Graphics, Inc.
0004  * All Rights Reserved.
0005  */
0006 #ifndef __XFS_INODE_BUF_H__
0007 #define __XFS_INODE_BUF_H__
0008 
0009 struct xfs_inode;
0010 struct xfs_dinode;
0011 
0012 /*
0013  * Inode location information.  Stored in the inode and passed to
0014  * xfs_imap_to_bp() to get a buffer and dinode for a given inode.
0015  */
0016 struct xfs_imap {
0017     xfs_daddr_t im_blkno;   /* starting BB of inode chunk */
0018     unsigned short  im_len;     /* length in BBs of inode chunk */
0019     unsigned short  im_boffset; /* inode offset in block in bytes */
0020 };
0021 
0022 int xfs_imap_to_bp(struct xfs_mount *mp, struct xfs_trans *tp,
0023                struct xfs_imap *imap, struct xfs_buf **bpp);
0024 void    xfs_dinode_calc_crc(struct xfs_mount *mp, struct xfs_dinode *dip);
0025 void    xfs_inode_to_disk(struct xfs_inode *ip, struct xfs_dinode *to,
0026               xfs_lsn_t lsn);
0027 int xfs_inode_from_disk(struct xfs_inode *ip, struct xfs_dinode *from);
0028 
0029 xfs_failaddr_t xfs_dinode_verify(struct xfs_mount *mp, xfs_ino_t ino,
0030                struct xfs_dinode *dip);
0031 xfs_failaddr_t xfs_inode_validate_extsize(struct xfs_mount *mp,
0032         uint32_t extsize, uint16_t mode, uint16_t flags);
0033 xfs_failaddr_t xfs_inode_validate_cowextsize(struct xfs_mount *mp,
0034         uint32_t cowextsize, uint16_t mode, uint16_t flags,
0035         uint64_t flags2);
0036 
0037 static inline uint64_t xfs_inode_encode_bigtime(struct timespec64 tv)
0038 {
0039     return xfs_unix_to_bigtime(tv.tv_sec) * NSEC_PER_SEC + tv.tv_nsec;
0040 }
0041 
0042 struct timespec64 xfs_inode_from_disk_ts(struct xfs_dinode *dip,
0043         const xfs_timestamp_t ts);
0044 
0045 static inline bool
0046 xfs_dinode_good_version(struct xfs_mount *mp, uint8_t version)
0047 {
0048     if (xfs_has_v3inodes(mp))
0049         return version == 3;
0050     return version == 1 || version == 2;
0051 }
0052 
0053 
0054 #endif  /* __XFS_INODE_BUF_H__ */