Lines Matching refs:fs

69 static int32_t ffs_mapsearch(struct fs *, struct cg *, daddr_t, int);
94 struct fs *fs = ip->i_fs; in ffs_alloc() local
99 if (size > fs->fs_bsize || fragoff(fs, size) != 0) { in ffs_alloc()
101 fs->fs_bsize, size); in ffs_alloc()
103 if (size == fs->fs_bsize && fs->fs_cstotal.cs_nbfree == 0) in ffs_alloc()
105 if (bpref >= fs->fs_size) in ffs_alloc()
108 cg = ino_to_cg(fs, ip->i_number); in ffs_alloc()
110 cg = dtog(fs, bpref); in ffs_alloc()
154 struct fs *fs; in ffs_blkpref_ufs1() local
158 fs = ip->i_fs; in ffs_blkpref_ufs1()
159 if (indx % fs->fs_maxbpg == 0 || bap[indx - 1] == 0) { in ffs_blkpref_ufs1()
160 if (lbn < UFS_NDADDR + NINDIR(fs)) { in ffs_blkpref_ufs1()
161 cg = ino_to_cg(fs, ip->i_number); in ffs_blkpref_ufs1()
162 return (fs->fs_fpg * cg + fs->fs_frag); in ffs_blkpref_ufs1()
170 ino_to_cg(fs, ip->i_number) + lbn / fs->fs_maxbpg; in ffs_blkpref_ufs1()
172 startcg = dtog(fs, in ffs_blkpref_ufs1()
173 ufs_rw32(bap[indx - 1], UFS_FSNEEDSWAP(fs)) + 1); in ffs_blkpref_ufs1()
174 startcg %= fs->fs_ncg; in ffs_blkpref_ufs1()
175 avgbfree = fs->fs_cstotal.cs_nbfree / fs->fs_ncg; in ffs_blkpref_ufs1()
176 for (cg = startcg; cg < fs->fs_ncg; cg++) in ffs_blkpref_ufs1()
177 if (fs->fs_cs(fs, cg).cs_nbfree >= avgbfree) in ffs_blkpref_ufs1()
178 return (fs->fs_fpg * cg + fs->fs_frag); in ffs_blkpref_ufs1()
180 if (fs->fs_cs(fs, cg).cs_nbfree >= avgbfree) in ffs_blkpref_ufs1()
181 return (fs->fs_fpg * cg + fs->fs_frag); in ffs_blkpref_ufs1()
187 return ufs_rw32(bap[indx - 1], UFS_FSNEEDSWAP(fs)) + fs->fs_frag; in ffs_blkpref_ufs1()
193 struct fs *fs; in ffs_blkpref_ufs2() local
197 fs = ip->i_fs; in ffs_blkpref_ufs2()
198 if (indx % fs->fs_maxbpg == 0 || bap[indx - 1] == 0) { in ffs_blkpref_ufs2()
199 if (lbn < UFS_NDADDR + NINDIR(fs)) { in ffs_blkpref_ufs2()
200 cg = ino_to_cg(fs, ip->i_number); in ffs_blkpref_ufs2()
201 return (fs->fs_fpg * cg + fs->fs_frag); in ffs_blkpref_ufs2()
209 ino_to_cg(fs, ip->i_number) + lbn / fs->fs_maxbpg; in ffs_blkpref_ufs2()
211 startcg = dtog(fs, in ffs_blkpref_ufs2()
212 ufs_rw64(bap[indx - 1], UFS_FSNEEDSWAP(fs)) + 1); in ffs_blkpref_ufs2()
213 startcg %= fs->fs_ncg; in ffs_blkpref_ufs2()
214 avgbfree = fs->fs_cstotal.cs_nbfree / fs->fs_ncg; in ffs_blkpref_ufs2()
215 for (cg = startcg; cg < fs->fs_ncg; cg++) in ffs_blkpref_ufs2()
216 if (fs->fs_cs(fs, cg).cs_nbfree >= avgbfree) { in ffs_blkpref_ufs2()
217 return (fs->fs_fpg * cg + fs->fs_frag); in ffs_blkpref_ufs2()
220 if (fs->fs_cs(fs, cg).cs_nbfree >= avgbfree) { in ffs_blkpref_ufs2()
221 return (fs->fs_fpg * cg + fs->fs_frag); in ffs_blkpref_ufs2()
228 return ufs_rw64(bap[indx - 1], UFS_FSNEEDSWAP(fs)) + fs->fs_frag; in ffs_blkpref_ufs2()
246 struct fs *fs; in ffs_hashalloc() local
250 fs = ip->i_fs; in ffs_hashalloc()
260 for (i = 1; i < fs->fs_ncg; i *= 2) { in ffs_hashalloc()
262 if (cg >= fs->fs_ncg) in ffs_hashalloc()
263 cg -= fs->fs_ncg; in ffs_hashalloc()
273 cg = (icg + 2) % fs->fs_ncg; in ffs_hashalloc()
274 for (i = 2; i < fs->fs_ncg; i++) { in ffs_hashalloc()
279 if (cg == fs->fs_ncg) in ffs_hashalloc()
298 struct fs *fs = ip->i_fs; in ffs_alloccg() local
299 const int needswap = UFS_FSNEEDSWAP(fs); in ffs_alloccg()
301 if (fs->fs_cs(fs, cg).cs_nbfree == 0 && size == fs->fs_bsize) in ffs_alloccg()
303 error = bread((void *)ip->i_devvp, fsbtodb(fs, cgtod(fs, cg)), in ffs_alloccg()
304 (int)fs->fs_cgsize, NULL, &bp); in ffs_alloccg()
310 (cgp->cg_cs.cs_nbfree == 0 && size == fs->fs_bsize)) { in ffs_alloccg()
314 if (size == fs->fs_bsize) { in ffs_alloccg()
324 frags = numfrags(fs, size); in ffs_alloccg()
325 for (allocsiz = frags; allocsiz < fs->fs_frag; allocsiz++) in ffs_alloccg()
328 if (allocsiz == fs->fs_frag) { in ffs_alloccg()
338 bpref = dtogd(fs, bno); in ffs_alloccg()
339 for (i = frags; i < fs->fs_frag; i++) in ffs_alloccg()
341 i = fs->fs_frag - frags; in ffs_alloccg()
343 fs->fs_cstotal.cs_nffree += i; in ffs_alloccg()
344 fs->fs_cs(fs, cg).cs_nffree += i; in ffs_alloccg()
345 fs->fs_fmod = 1; in ffs_alloccg()
350 bno = ffs_mapsearch(fs, cgp, bpref, allocsiz); in ffs_alloccg()
354 fs->fs_cstotal.cs_nffree -= frags; in ffs_alloccg()
355 fs->fs_cs(fs, cg).cs_nffree -= frags; in ffs_alloccg()
356 fs->fs_fmod = 1; in ffs_alloccg()
360 blkno = cg * fs->fs_fpg + bno; in ffs_alloccg()
382 struct fs *fs = ip->i_fs; in ffs_alloccgblk() local
383 const int needswap = UFS_FSNEEDSWAP(fs); in ffs_alloccgblk()
388 if (bpref == 0 || (uint32_t)dtog(fs, bpref) != ufs_rw32(cgp->cg_cgx, needswap)) { in ffs_alloccgblk()
391 bpref = blknum(fs, bpref); in ffs_alloccgblk()
392 bno = dtogd(fs, bpref); in ffs_alloccgblk()
396 if (ffs_isblock(fs, blksfree_swap, fragstoblks(fs, bno))) in ffs_alloccgblk()
402 bno = ffs_mapsearch(fs, cgp, bpref, (int)fs->fs_frag); in ffs_alloccgblk()
407 blkno = fragstoblks(fs, bno); in ffs_alloccgblk()
408 ffs_clrblock(fs, blksfree_swap, (long)blkno); in ffs_alloccgblk()
409 ffs_clusteracct(fs, cgp, blkno, -1); in ffs_alloccgblk()
411 fs->fs_cstotal.cs_nbfree--; in ffs_alloccgblk()
412 fs->fs_cs(fs, ufs_rw32(cgp->cg_cgx, needswap)).cs_nbfree--; in ffs_alloccgblk()
413 fs->fs_fmod = 1; in ffs_alloccgblk()
414 blkno = ufs_rw32(cgp->cg_cgx, needswap) * fs->fs_fpg + bno; in ffs_alloccgblk()
432 struct fs *fs = ip->i_fs; in ffs_blkfree() local
433 const int needswap = UFS_FSNEEDSWAP(fs); in ffs_blkfree()
435 if (size > fs->fs_bsize || fragoff(fs, size) != 0 || in ffs_blkfree()
436 fragnum(fs, bno) + numfrags(fs, size) > fs->fs_frag) { in ffs_blkfree()
438 (long long)bno, fs->fs_bsize, size); in ffs_blkfree()
440 cg = dtog(fs, bno); in ffs_blkfree()
441 if (bno >= fs->fs_size) { in ffs_blkfree()
446 error = bread((void *)ip->i_devvp, fsbtodb(fs, cgtod(fs, cg)), in ffs_blkfree()
447 (int)fs->fs_cgsize, NULL, &bp); in ffs_blkfree()
456 cgbno = dtogd(fs, bno); in ffs_blkfree()
457 if (size == fs->fs_bsize) { in ffs_blkfree()
458 fragno = fragstoblks(fs, cgbno); in ffs_blkfree()
459 if (!ffs_isfreeblock(fs, cg_blksfree_swap(cgp, needswap), fragno)) { in ffs_blkfree()
463 ffs_setblock(fs, cg_blksfree_swap(cgp, needswap), fragno); in ffs_blkfree()
464 ffs_clusteracct(fs, cgp, fragno, 1); in ffs_blkfree()
466 fs->fs_cstotal.cs_nbfree++; in ffs_blkfree()
467 fs->fs_cs(fs, cg).cs_nbfree++; in ffs_blkfree()
469 bbase = cgbno - fragnum(fs, cgbno); in ffs_blkfree()
473 blk = blkmap(fs, cg_blksfree_swap(cgp, needswap), bbase); in ffs_blkfree()
474 ffs_fragacct_swap(fs, blk, cgp->cg_frsum, -1, needswap); in ffs_blkfree()
478 frags = numfrags(fs, size); in ffs_blkfree()
487 fs->fs_cstotal.cs_nffree += i; in ffs_blkfree()
488 fs->fs_cs(fs, cg).cs_nffree += i; in ffs_blkfree()
492 blk = blkmap(fs, cg_blksfree_swap(cgp, needswap), bbase); in ffs_blkfree()
493 ffs_fragacct_swap(fs, blk, cgp->cg_frsum, 1, needswap); in ffs_blkfree()
497 fragno = fragstoblks(fs, bbase); in ffs_blkfree()
498 if (ffs_isblock(fs, cg_blksfree_swap(cgp, needswap), fragno)) { in ffs_blkfree()
499 ufs_add32(cgp->cg_cs.cs_nffree, -fs->fs_frag, needswap); in ffs_blkfree()
500 fs->fs_cstotal.cs_nffree -= fs->fs_frag; in ffs_blkfree()
501 fs->fs_cs(fs, cg).cs_nffree -= fs->fs_frag; in ffs_blkfree()
502 ffs_clusteracct(fs, cgp, fragno, 1); in ffs_blkfree()
504 fs->fs_cstotal.cs_nbfree++; in ffs_blkfree()
505 fs->fs_cs(fs, cg).cs_nbfree++; in ffs_blkfree()
508 fs->fs_fmod = 1; in ffs_blkfree()
530 ffs_mapsearch(struct fs *fs, struct cg *cgp, daddr_t bpref, int allocsiz) in ffs_mapsearch() argument
536 const int needswap = UFS_FSNEEDSWAP(fs); in ffs_mapsearch()
543 start = dtogd(fs, bpref) / NBBY; in ffs_mapsearch()
546 len = howmany(fs->fs_fpg, NBBY) - start; in ffs_mapsearch()
551 (const u_char *)fragtbl[fs->fs_frag], in ffs_mapsearch()
552 (1 << (allocsiz - 1 + (fs->fs_frag % NBBY)))); in ffs_mapsearch()
558 (const u_char *)fragtbl[fs->fs_frag], in ffs_mapsearch()
559 (1 << (allocsiz - 1 + (fs->fs_frag % NBBY)))); in ffs_mapsearch()
575 for (i = bno + NBBY; bno < i; bno += fs->fs_frag) { in ffs_mapsearch()
576 blk = blkmap(fs, cg_blksfree_swap(cgp, needswap), bno); in ffs_mapsearch()
580 for (pos = 0; pos <= fs->fs_frag - allocsiz; pos++) { in ffs_mapsearch()
597 ffs_clusteracct(struct fs *fs, struct cg *cgp, int32_t blkno, int cnt) in ffs_clusteracct() argument
603 const int needswap = UFS_FSNEEDSWAP(fs); in ffs_clusteracct()
605 if (fs->fs_contigsumsize <= 0) in ffs_clusteracct()
620 end = start + fs->fs_contigsumsize; in ffs_clusteracct()
641 end = start - fs->fs_contigsumsize; in ffs_clusteracct()
663 if (i > fs->fs_contigsumsize) in ffs_clusteracct()
664 i = fs->fs_contigsumsize; in ffs_clusteracct()
674 lp = &sump[fs->fs_contigsumsize]; in ffs_clusteracct()
675 for (i = fs->fs_contigsumsize; i > 0; i--) in ffs_clusteracct()
678 fs->fs_maxcluster[ufs_rw32(cgp->cg_cgx, needswap)] = i; in ffs_clusteracct()