version 1.1.2.2, 2006/05/20 22:46:22 |
version 1.2, 2005/03/25 20:17:58 |
Line 180 static struct lfs lfs_default = { |
|
Line 180 static struct lfs lfs_default = { |
|
/* dlfs_interleave */ 0, |
/* dlfs_interleave */ 0, |
/* dlfs_ident */ 0, |
/* dlfs_ident */ 0, |
/* dlfs_fsbtodb */ 0, |
/* dlfs_fsbtodb */ 0, |
/* dlfs_resvseg */ 0, |
|
|
|
/* dlfs_pad */ { 0 }, |
/* dlfs_pad */ { 0 }, |
/* dlfs_cksum */ 0 |
/* dlfs_cksum */ 0 |
Line 320 make_dir(void *bufp, struct direct *prot |
|
Line 319 make_dir(void *bufp, struct direct *prot |
|
int |
int |
make_lfs(int devfd, uint secsize, struct partition *partp, int minfree, |
make_lfs(int devfd, uint secsize, struct partition *partp, int minfree, |
int block_size, int frag_size, int seg_size, int minfreeseg, |
int block_size, int frag_size, int seg_size, int minfreeseg, |
int resvseg, int version, daddr_t start, int ibsize, int interleave, |
int version, daddr_t start, int ibsize, int interleave, |
u_int32_t roll_id) |
u_int32_t roll_id) |
{ |
{ |
struct ufs1_dinode *dip; /* Pointer to a disk inode */ |
struct ufs1_dinode *dip; /* Pointer to a disk inode */ |
Line 345 make_lfs(int devfd, uint secsize, struct |
|
Line 344 make_lfs(int devfd, uint secsize, struct |
|
struct ubuf *bp; |
struct ubuf *bp; |
struct uvnode *vp, *save_devvp; |
struct uvnode *vp, *save_devvp; |
int bb, ubb, dmeta, labelskew; |
int bb, ubb, dmeta, labelskew; |
u_int64_t tsepb, tnseg; |
|
|
|
/* |
/* Initialize buffer cache */ |
* Initialize buffer cache. Use a ballpark guess of the length of |
bufinit(); |
* the segment table for the number of hash chains. |
|
*/ |
|
tnseg = partp->p_size / ((seg_size ? seg_size : DFL_LFSSEG) / secsize); |
|
tsepb = (block_size ? block_size : DFL_LFSBLOCK) / sizeof(SEGSUM); |
|
if (tnseg == 0) |
|
fatal("zero size partition"); |
|
bufinit(tnseg / tsepb); |
|
|
|
/* Initialize LFS subsystem with blank superblock and ifile. */ |
/* Initialize LFS subsystem with blank superblock and ifile. */ |
fs = lfs_init(devfd, start, (ufs_daddr_t)0, 1, 1/* XXX debug*/); |
fs = lfs_init(devfd, start, (ufs_daddr_t)0, 1, 1/* XXX debug*/); |
Line 500 make_lfs(int devfd, uint secsize, struct |
|
Line 491 make_lfs(int devfd, uint secsize, struct |
|
|
|
fs->lfs_nclean = fs->lfs_nseg - 1; |
fs->lfs_nclean = fs->lfs_nseg - 1; |
fs->lfs_maxfilesize = maxfilesize(fs->lfs_bshift); |
fs->lfs_maxfilesize = maxfilesize(fs->lfs_bshift); |
|
|
if (minfreeseg == 0) |
if (minfreeseg == 0) |
fs->lfs_minfreeseg = fs->lfs_nseg / DFL_MIN_FREE_SEGS; |
fs->lfs_minfreeseg = fs->lfs_nseg / DFL_MIN_FREE_SEGS; |
else |
else |
Line 508 make_lfs(int devfd, uint secsize, struct |
|
Line 498 make_lfs(int devfd, uint secsize, struct |
|
if (fs->lfs_minfreeseg < MIN_FREE_SEGS) |
if (fs->lfs_minfreeseg < MIN_FREE_SEGS) |
fs->lfs_minfreeseg = MIN_FREE_SEGS; |
fs->lfs_minfreeseg = MIN_FREE_SEGS; |
|
|
if (resvseg == 0) |
|
fs->lfs_resvseg = fs->lfs_minfreeseg / 2 + 1; |
|
else |
|
fs->lfs_resvseg = resvseg; |
|
if (fs->lfs_resvseg < MIN_RESV_SEGS) |
|
fs->lfs_resvseg = MIN_RESV_SEGS; |
|
|
|
if(fs->lfs_nseg < fs->lfs_minfreeseg + 1 |
if(fs->lfs_nseg < fs->lfs_minfreeseg + 1 |
|| fs->lfs_nseg < LFS_MIN_SBINTERVAL + 1) |
|| fs->lfs_nseg < LFS_MIN_SBINTERVAL + 1) |
{ |
{ |