Changeset View
Changeset View
Standalone View
Standalone View
sys/ufs/ufs/inode.h
Show All 37 Lines | |||||
*/ | */ | ||||
#ifndef _UFS_UFS_INODE_H_ | #ifndef _UFS_UFS_INODE_H_ | ||||
#define _UFS_UFS_INODE_H_ | #define _UFS_UFS_INODE_H_ | ||||
#include <sys/lock.h> | #include <sys/lock.h> | ||||
#include <sys/queue.h> | #include <sys/queue.h> | ||||
#include <ufs/ufs/dinode.h> | #include <ufs/ufs/dinode.h> | ||||
#include <sys/seqc.h> | |||||
/* | /* | ||||
* This must agree with the definition in <ufs/ufs/dir.h>. | * This must agree with the definition in <ufs/ufs/dir.h>. | ||||
*/ | */ | ||||
#define doff_t int32_t | #define doff_t int32_t | ||||
/* | /* | ||||
* The inode is used to describe each active (or recently active) file in the | * The inode is used to describe each active (or recently active) file in the | ||||
▲ Show 20 Lines • Show All 90 Lines • ▼ Show 20 Lines | #define UFS_INODE_FLAG_LAZY_MASK \ | ||||
IN_LAZYACCESS) | IN_LAZYACCESS) | ||||
/* | /* | ||||
* Some flags can persist a vnode transitioning to 0 hold count and being tkaen | * Some flags can persist a vnode transitioning to 0 hold count and being tkaen | ||||
* off the list. | * off the list. | ||||
*/ | */ | ||||
#define UFS_INODE_FLAG_LAZY_MASK_ASSERTABLE \ | #define UFS_INODE_FLAG_LAZY_MASK_ASSERTABLE \ | ||||
(UFS_INODE_FLAG_LAZY_MASK & ~(IN_LAZYMOD | IN_LAZYACCESS)) | (UFS_INODE_FLAG_LAZY_MASK & ~(IN_LAZYMOD | IN_LAZYACCESS)) | ||||
#define UFS_INODE_SET_MODE(ip, mode) do { \ | |||||
struct inode *_ip = (ip); \ | |||||
int _mode = (mode); \ | |||||
\ | |||||
ASSERT_VOP_IN_SEQC(ITOV(_ip)); \ | |||||
atomic_store_short(&(_ip)->i_mode, _mode); \ | |||||
} while (0) | |||||
#define UFS_INODE_SET_FLAG(ip, flags) do { \ | #define UFS_INODE_SET_FLAG(ip, flags) do { \ | ||||
struct inode *_ip = (ip); \ | struct inode *_ip = (ip); \ | ||||
struct vnode *_vp = ITOV(_ip); \ | struct vnode *_vp = ITOV(_ip); \ | ||||
int _flags = (flags); \ | int _flags = (flags); \ | ||||
\ | \ | ||||
_ip->i_flag |= _flags; \ | _ip->i_flag |= _flags; \ | ||||
if (_flags & UFS_INODE_FLAG_LAZY_MASK) \ | if (_flags & UFS_INODE_FLAG_LAZY_MASK) \ | ||||
vlazy(_vp); \ | vlazy(_vp); \ | ||||
▲ Show 20 Lines • Show All 64 Lines • ▼ Show 20 Lines | |||||
*/ | */ | ||||
struct indir { | struct indir { | ||||
ufs2_daddr_t in_lbn; /* Logical block number. */ | ufs2_daddr_t in_lbn; /* Logical block number. */ | ||||
int in_off; /* Offset in buffer. */ | int in_off; /* Offset in buffer. */ | ||||
}; | }; | ||||
/* Convert between inode pointers and vnode pointers. */ | /* Convert between inode pointers and vnode pointers. */ | ||||
#define VTOI(vp) ((struct inode *)(vp)->v_data) | #define VTOI(vp) ((struct inode *)(vp)->v_data) | ||||
#define VTOI_SMR(vp) ((struct inode *)vn_load_v_data_smr(vp)) | |||||
#define ITOV(ip) ((ip)->i_vnode) | #define ITOV(ip) ((ip)->i_vnode) | ||||
/* Determine if soft dependencies are being done */ | /* Determine if soft dependencies are being done */ | ||||
#define DOINGSOFTDEP(vp) \ | #define DOINGSOFTDEP(vp) \ | ||||
(((vp)->v_mount->mnt_flag & (MNT_SOFTDEP | MNT_SUJ)) != 0) | (((vp)->v_mount->mnt_flag & (MNT_SOFTDEP | MNT_SUJ)) != 0) | ||||
#define MOUNTEDSOFTDEP(mp) (((mp)->mnt_flag & (MNT_SOFTDEP | MNT_SUJ)) != 0) | #define MOUNTEDSOFTDEP(mp) (((mp)->mnt_flag & (MNT_SOFTDEP | MNT_SUJ)) != 0) | ||||
#define DOINGSUJ(vp) (((vp)->v_mount->mnt_flag & MNT_SUJ) != 0) | #define DOINGSUJ(vp) (((vp)->v_mount->mnt_flag & MNT_SUJ) != 0) | ||||
#define MOUNTEDSUJ(mp) (((mp)->mnt_flag & MNT_SUJ) != 0) | #define MOUNTEDSUJ(mp) (((mp)->mnt_flag & MNT_SUJ) != 0) | ||||
Show All 11 Lines |