Go to the documentation of this file.
   33 #ifndef _UFS_FFS_FS_H_ 
   34 #define _UFS_FFS_FS_H_ 
   37 #include <ufs/ufs/dinode.h> 
   71 #define SBLOCK_FLOPPY        0 
   72 #define SBLOCK_UFS1       8192 
   73 #define SBLOCK_UFS2      65536 
   74 #define SBLOCK_PIGGY    262144 
   75 #define SBLOCKSIZE        8192 
   76 #define SBLOCKSEARCH \ 
   77         { SBLOCK_UFS2, SBLOCK_UFS1, SBLOCK_FLOPPY, SBLOCK_PIGGY, -1 } 
  112 #define MINBSIZE        4096 
  119 #define MAXMNTLEN       468 
  142 #define NOCSPTRS        ((128 / sizeof(void *)) - 4) 
  150 #define FS_MAXCONTIG    16 
  165 #define DEFAULTOPT      FS_OPTTIME 
  176 #define AVFILESIZ       16384    
  200 #define BLK_NOCOPY ((ufs2_daddr_t)(1)) 
  201 #define BLK_SNAP ((ufs2_daddr_t)(2)) 
  206 #define FFS_ADJ_REFCNT           1       
  207 #define FFS_ADJ_BLKCNT           2       
  208 #define FFS_BLK_FREE             3       
  209 #define FFS_DIR_FREE             4       
  210 #define FFS_FILE_FREE            5       
  211 #define FFS_SET_FLAGS            6       
  212 #define FFS_ADJ_NDIR             7       
  213 #define FFS_ADJ_NBFREE           8       
  214 #define FFS_ADJ_NIFREE           9       
  215 #define FFS_ADJ_NFFREE          10       
  216 #define FFS_ADJ_NUMCLUSTERS     11       
  217 #define FFS_SET_CWD             12       
  218 #define FFS_SET_DOTDOT          13       
  219 #define FFS_UNLINK              14       
  220 #define FFS_SET_INODE           15       
  221 #define FFS_SET_BUFOUTPUT       16       
  227 #define FFS_CMD_VERSION         0x19790518       
  370 CTASSERT(
sizeof(
struct fs) == 1376);
 
  376 #define FS_UFS1_MAGIC   0x011954         
  377 #define FS_UFS2_MAGIC   0x19540119       
  378 #define FS_BAD_MAGIC    0x19960408       
  379 #define FS_OKAY         0x7c269d38       
  380 #define FS_42INODEFMT   -1               
  381 #define FS_44INODEFMT   2                
  387 #define FS_OPTSPACE     1        
  417 #define FS_UNCLEAN      0x0001   
  418 #define FS_DOSOFTDEP    0x0002   
  419 #define FS_NEEDSFSCK    0x0004   
  420 #define FS_SUJ          0x0008   
  421 #define FS_ACLS         0x0010   
  422 #define FS_MULTILABEL   0x0020   
  423 #define FS_GJOURNAL     0x0040   
  424 #define FS_FLAGS_UPDATED 0x0080  
  425 #define FS_NFS4ACLS     0x0100   
  426 #define FS_INDEXDIRS    0x0200   
  427 #define FS_TRIM         0x0400   
  432 #define ACTIVECGNUM(fs, cg)     ((fs)->fs_active[(cg) / (NBBY * sizeof(int))]) 
  433 #define ACTIVECGOFF(cg)         (1 << ((cg) % (NBBY * sizeof(int)))) 
  434 #define ACTIVESET(fs, cg)       do {                                    \ 
  435         if ((fs)->fs_active)                                            \ 
  436                 ACTIVECGNUM((fs), (cg)) |= ACTIVECGOFF((cg));           \ 
  438 #define ACTIVECLEAR(fs, cg)     do {                                    \ 
  439         if ((fs)->fs_active)                                            \ 
  440                 ACTIVECGNUM((fs), (cg)) &= ~ACTIVECGOFF((cg));          \ 
  450            (sizeof(struct cg) + sizeof(int32_t) + \ 
  451        (fs)->fs_old_cpg * sizeof(int32_t) + \ 
  452           (fs)->fs_old_cpg * sizeof(u_int16_t) + \ 
  453          howmany((fs)->fs_ipg, NBBY) + \ 
  454          howmany((fs)->fs_fpg, NBBY) +\ 
  455         ((fs)->fs_contigsumsize <= 0 ? 0 : \ 
  456        (fs)->fs_contigsumsize * sizeof(int32_t) + \ 
  457        howmany(fragstoblks(fs, (fs)->fs_fpg), NBBY))) 
  467 #define fs_cs(fs, indx) fs_csp[indx] 
  472 #define CG_MAGIC        0x090255 
  507 #define cg_chkmagic(cgp) ((cgp)->cg_magic == CG_MAGIC) 
  508 #define cg_inosused(cgp) \ 
  509     ((u_int8_t *)((u_int8_t *)(cgp) + (cgp)->cg_iusedoff)) 
  510 #define cg_blksfree(cgp) \ 
  511     ((u_int8_t *)((u_int8_t *)(cgp) + (cgp)->cg_freeoff)) 
  512 #define cg_clustersfree(cgp) \ 
  513     ((u_int8_t *)((u_int8_t *)(cgp) + (cgp)->cg_clusteroff)) 
  514 #define cg_clustersum(cgp) \ 
  515     ((int32_t *)((uintptr_t)(cgp) + (cgp)->cg_clustersumoff)) 
  521 #define fsbtodb(fs, b)  ((daddr_t)(b) << (fs)->fs_fsbtodb) 
  522 #define dbtofsb(fs, b)  ((b) >> (fs)->fs_fsbtodb) 
  528 #define cgbase(fs, c)   (((ufs2_daddr_t)(fs)->fs_fpg) * (c)) 
  529 #define cgdata(fs, c)   (cgdmin(fs, c) + (fs)->fs_metaspace)     
  530 #define cgmeta(fs, c)   (cgdmin(fs, c))                          
  531 #define cgdmin(fs, c)   (cgstart(fs, c) + (fs)->fs_dblkno)       
  532 #define cgimin(fs, c)   (cgstart(fs, c) + (fs)->fs_iblkno)       
  533 #define cgsblock(fs, c) (cgstart(fs, c) + (fs)->fs_sblkno)       
  534 #define cgtod(fs, c)    (cgstart(fs, c) + (fs)->fs_cblkno)       
  535 #define cgstart(fs, c)                                                  \ 
  536        ((fs)->fs_magic == FS_UFS2_MAGIC ? cgbase(fs, c) :               \ 
  537        (cgbase(fs, c) + (fs)->fs_old_cgoffset * ((c) & ~((fs)->fs_old_cgmask)))) 
  545 #define ino_to_cg(fs, x)        (((ino_t)(x)) / (fs)->fs_ipg) 
  546 #define ino_to_fsba(fs, x)                                              \ 
  547         ((ufs2_daddr_t)(cgimin(fs, ino_to_cg(fs, (ino_t)(x))) +         \ 
  548             (blkstofrags((fs), ((((ino_t)(x)) % (fs)->fs_ipg) / INOPB(fs)))))) 
  549 #define ino_to_fsbo(fs, x)      (((ino_t)(x)) % INOPB(fs)) 
  555 #define dtog(fs, d)     ((d) / (fs)->fs_fpg) 
  556 #define dtogd(fs, d)    ((d) % (fs)->fs_fpg) 
  562 #define blkmap(fs, map, loc) \ 
  563     (((map)[(loc) / NBBY] >> ((loc) % NBBY)) & (0xff >> (NBBY - (fs)->fs_frag))) 
  570 #define blkoff(fs, loc)          \ 
  571         ((loc) & (fs)->fs_qbmask) 
  572 #define fragoff(fs, loc)         \ 
  573         ((loc) & (fs)->fs_qfmask) 
  574 #define lfragtosize(fs, frag)    \ 
  575         (((off_t)(frag)) << (fs)->fs_fshift) 
  576 #define lblktosize(fs, blk)      \ 
  577         (((off_t)(blk)) << (fs)->fs_bshift) 
  579 #define smalllblktosize(fs, blk)     \ 
  580         ((blk) << (fs)->fs_bshift) 
  581 #define lblkno(fs, loc)          \ 
  582         ((loc) >> (fs)->fs_bshift) 
  583 #define numfrags(fs, loc)        \ 
  584         ((loc) >> (fs)->fs_fshift) 
  585 #define blkroundup(fs, size)     \ 
  586         (((size) + (fs)->fs_qbmask) & (fs)->fs_bmask) 
  587 #define fragroundup(fs, size)    \ 
  588         (((size) + (fs)->fs_qfmask) & (fs)->fs_fmask) 
  589 #define fragstoblks(fs, frags)   \ 
  590         ((frags) >> (fs)->fs_fragshift) 
  591 #define blkstofrags(fs, blks)    \ 
  592         ((blks) << (fs)->fs_fragshift) 
  593 #define fragnum(fs, fsb)         \ 
  594         ((fsb) & ((fs)->fs_frag - 1)) 
  595 #define blknum(fs, fsb)          \ 
  596         ((fsb) &~ ((fs)->fs_frag - 1)) 
  602 #define freespace(fs, percentreserved) \ 
  603         (blkstofrags((fs), (fs)->fs_cstotal.cs_nbfree) + \ 
  604         (fs)->fs_cstotal.cs_nffree - \ 
  605         (((off_t)((fs)->fs_dsize)) * (percentreserved) / 100)) 
  610 #define blksize(fs, ip, lbn) \ 
  611         (((lbn) >= NDADDR || (ip)->i_size >= smalllblktosize(fs, (lbn) + 1)) \ 
  613             : (fragroundup(fs, blkoff(fs, (ip)->i_size)))) 
  614 #define sblksize(fs, size, lbn) \ 
  615         (((lbn) >= NDADDR || (size) >= ((lbn) + 1) << (fs)->fs_bshift) \ 
  617           : (fragroundup(fs, blkoff(fs, (size))))) 
  622 #define NINDIR(fs)      ((fs)->fs_nindir) 
  651 lbn_offset(
struct fs *
fs, 
int level)
 
  655         for (res = 1; level > 0; level--)
 
  663 #define INOPB(fs)       ((fs)->fs_inopb) 
  664 #define INOPF(fs)       ((fs)->fs_inopb >> (fs)->fs_fragshift) 
  673 #define JOP_FREEBLK     4        
  680 #define SUJ_MIN         (4 * 1024 * 1024)        
  681 #define SUJ_MAX         (32 * 1024 * 1024)       
  682 #define SUJ_FILE        ".sujournal"             
  775 #define UFSSUSPEND      _IOW('U', 1, fsid_t) 
  776 #define UFSRESUME       _IO('U', 2) 
  
 
u_int32_t fs_pendinginodes
int32_t fs_old_interleave
struct csum_total fs_cstotal
int32_t fs_old_postblformat
struct jrefrec rec_jrefrec
struct jtrncrec rec_jtrncrec
int32_t fs_sparecon32[23]
u_int32_t cg_nclusterblks
int64_t fs_sparecon64[14]
u_int32_t cg_clustersumoff
struct csum fs_old_cstotal
struct jblkrec rec_jblkrec
void * fs_ocsp[((128/sizeof(void *)) - 4)]
struct jsegrec rec_jsegrec