DIRBLKSIZ
incr = DIRBLKSIZ * 16;
if ((incr % DIRBLKSIZ) != 0)
incr = DIRBLKSIZ;
char dbuf[DIRBLKSIZ];
(idesc->id_filesize & (DIRBLKSIZ - 1)) != 0)
idesc->id_filesize = roundup(idesc->id_filesize, DIRBLKSIZ);
if (idesc->id_loc % DIRBLKSIZ == 0 && idesc->id_filesize > 0 &&
dp->d_reclen = DIRBLKSIZ;
idesc->id_loc += DIRBLKSIZ;
idesc->id_filesize -= DIRBLKSIZ;
if ((idesc->id_loc % DIRBLKSIZ) == 0)
size = DIRBLKSIZ - (idesc->id_loc % DIRBLKSIZ);
spaceleft = DIRBLKSIZ - (idesc->id_loc % DIRBLKSIZ);
struct dirtemplate emptydir = { 0, DIRBLKSIZ };
0, DIRBLKSIZ - 12, DT_DIR, 2, ".."
if (dp->di_size % DIRBLKSIZ) {
dp->di_size = roundup(dp->di_size, DIRBLKSIZ);
0, DIRBLKSIZ - 12, 2, ".."
char *cp, firstblk[DIRBLKSIZ];
memmove(firstblk, bp->b_un.b_buf, DIRBLKSIZ);
memmove(bp->b_un.b_buf, firstblk, DIRBLKSIZ);
for (cp = &bp->b_un.b_buf[DIRBLKSIZ];
cp += DIRBLKSIZ)
for (cp = &bp->b_un.b_buf[DIRBLKSIZ];
cp += DIRBLKSIZ)
inp->i_isize = roundup(MINDIRSIZE, DIRBLKSIZ);
} else if ((inp->i_isize & (DIRBLKSIZ - 1)) != 0) {
DIRBLKSIZ);
DIRBLKSIZ);
inp->i_isize = roundup(inp->i_isize, DIRBLKSIZ);
dp->di_size = roundup(inp->i_isize, DIRBLKSIZ);
#ifdef DIRBLKSIZ
spcleft = DIRBLKSIZ;
return (DIRBLKSIZ);
{ 0, DIRBLKSIZ, 0, 0, 0 },
{ 0, DIRBLKSIZ, 0, 0 },
for (i = DIRBLKSIZ; i < sblock.fs_bsize; i += DIRBLKSIZ)
for (i = DIRBLKSIZ; i < sblock.fs_bsize; i += DIRBLKSIZ)
i = DIRBLKSIZ - (loc & (DIRBLKSIZ - 1));
char dirbuf[DIRBLKSIZ];
if (dirloc + dp->d_reclen > DIRBLKSIZ) {
DIRBLKSIZ - prev;
fwrite(dirbuf, 1, DIRBLKSIZ, df);
((struct direct *)(dirbuf + prev))->d_reclen = DIRBLKSIZ - prev;
lseek(dirpl->dd_fd, base + rounddown2(loc, DIRBLKSIZ), SEEK_SET);
dirpl->dd_loc = loc & (DIRBLKSIZ - 1);
dirpl->dd_size = read(dirpl->dd_fd, dirpl->dd_buf, DIRBLKSIZ);
DIRBLKSIZ);
dp->d_reclen > DIRBLKSIZ + 1 - dirpl->dd_loc) {
char dd_buf[DIRBLKSIZ];
int DIRBLKSIZ = VTOI(ap->a_vp)->i_e2fs->e2fs_bsize;
~(size_t)(DIRBLKSIZ - 1);
int DIRBLKSIZ = VTOI(vdp)->i_e2fs->e2fs_bsize;
i_offset = roundup2(dp->i_size, DIRBLKSIZ);
endsearch = roundup2(dp->i_size, DIRBLKSIZ);
dp->i_offset = roundup2(dp->i_size, DIRBLKSIZ);
dp->i_endoff = roundup2(enduseful, DIRBLKSIZ);
dp->i_diroff = rounddown2(i_offset, DIRBLKSIZ);
if ((dp->i_offset & (DIRBLKSIZ - 1)) == 0)
if ((dp->i_size / DIRBLKSIZ) == 1 &&
dp->i_offset == DIRBLKSIZ) {
0, htole16(DIRBLKSIZ - 12), 2, EXT2_FT_DIR, ".."
dirtemplate.dotdot_reclen = htole16(DIRBLKSIZ - 12);
buf = malloc(DIRBLKSIZ, M_TEMP, M_WAITOK | M_ZERO);
ext2_init_dirent_tail(EXT2_DIRENT_TAIL(buf, DIRBLKSIZ));
0, htole16(DIRBLKSIZ - 12), 2, EXT2_FT_UNKNOWN, ".."
DIRBLKSIZ, (off_t)0, UIO_SYSSPACE,
if (DIRBLKSIZ > VFSTOEXT2(dvp->v_mount)->um_mountp->mnt_stat.f_bsize)
ip->i_size = DIRBLKSIZ;
siz = roundup2(cnt, DIRBLKSIZ);
siz = roundup2(siz, DIRBLKSIZ);
if (uiop->uio_iovcnt != 1 || (uiop->uio_offset & (DIRBLKSIZ - 1)) ||
(uiop->uio_resid & (DIRBLKSIZ - 1)))
left = DIRBLKSIZ - blksiz;
if (blksiz == DIRBLKSIZ)
left = DIRBLKSIZ - blksiz;
if (uiop->uio_iovcnt != 1 || (uiop->uio_offset & (DIRBLKSIZ - 1)) ||
(uiop->uio_resid & (DIRBLKSIZ - 1)))
left = DIRBLKSIZ - blksiz;
if (blksiz == DIRBLKSIZ)
left = DIRBLKSIZ - blksiz;
KASSERT(ip->i_size >= DIRBLKSIZ, ("ufsdirhash_build size"));
dirblocks = howmany(ip->i_size, DIRBLKSIZ);
dh->dh_blkfree[i] = DIRBLKSIZ / DIRALIGN;
DIRBLKSIZ - (pos & (DIRBLKSIZ - 1))) {
DIRBLKSIZ - (offset & (DIRBLKSIZ - 1))) {
if (offset & (DIRBLKSIZ - 1)) {
pos = dirblock * DIRBLKSIZ;
for (i = 0; i < DIRBLKSIZ; ) {
if (i > DIRBLKSIZ) {
while (i < DIRBLKSIZ && freebytes < slotneeded) {
if (i > DIRBLKSIZ) {
if (dh->dh_blkfree[dh->dh_dirblks - 1] != DIRBLKSIZ / DIRALIGN) {
if (dh->dh_blkfree[i] != DIRBLKSIZ / DIRALIGN)
return ((doff_t)(i + 1) * DIRBLKSIZ);
KASSERT(offset < dh->dh_dirblks * DIRBLKSIZ,
KASSERT(offset < dh->dh_dirblks * DIRBLKSIZ,
KASSERT(oldoff < dh->dh_dirblks * DIRBLKSIZ &&
newoff < dh->dh_dirblks * DIRBLKSIZ,
static int ufs_mindirhashsize = DIRBLKSIZ * 5;
KASSERT(offset == dh->dh_dirblks * DIRBLKSIZ,
block = offset / DIRBLKSIZ;
dh->dh_blkfree[block] = DIRBLKSIZ / DIRALIGN;
KASSERT(offset <= dh->dh_dirblks * DIRBLKSIZ,
block = howmany(offset, DIRBLKSIZ);
if (dh->dh_blkfree[i] != DIRBLKSIZ / DIRALIGN)
block = offset / DIRBLKSIZ;
if ((offset & (DIRBLKSIZ - 1)) != 0 || block >= dh->dh_dirblks)
for (i = 0; i < DIRBLKSIZ; i += dp->d_reclen) {
if (dp->d_reclen == 0 || i + dp->d_reclen > DIRBLKSIZ)
if (i != DIRBLKSIZ)
block = offset / DIRBLKSIZ;
blkoff = rounddown2(offset, DIRBLKSIZ); /* offset of start of block */
entrypos = offset & (DIRBLKSIZ - 1); /* entry relative to block */
dp->i_offset = roundup2(dp->i_size, DIRBLKSIZ);
endsearch = roundup2(dp->i_size, DIRBLKSIZ);
(entryoffsetinblock & (DIRBLKSIZ - 1)) == 0) {
DIRBLKSIZ - (entryoffsetinblock & (DIRBLKSIZ - 1)) ||
i = DIRBLKSIZ - (entryoffsetinblock & (DIRBLKSIZ - 1));
dp->i_offset = roundup2(dp->i_size, DIRBLKSIZ);
if ((dp->i_offset & (DIRBLKSIZ - 1)) == 0)
dp->i_endoff = roundup2(enduseful, DIRBLKSIZ);
dp->i_diroff = rounddown2(dp->i_offset, DIRBLKSIZ);
if ((dp->i_offset & (DIRBLKSIZ - 1)) == 0)
ep->d_reclen > DIRBLKSIZ - (entryoffsetinblock & (DIRBLKSIZ - 1)) ||
if (dp->i_offset & (DIRBLKSIZ - 1))
nvnode_pager_setsize(dvp, dp->i_offset + DIRBLKSIZ,
DIRBLKSIZ, -1);
if ((error = VOP_BALLOC(dvp, (off_t)dp->i_offset, DIRBLKSIZ,
dp->i_size = dp->i_offset + DIRBLKSIZ;
dirp->d_reclen = DIRBLKSIZ;
blkoff += DIRBLKSIZ;
(bp->b_data + blkoff))->d_reclen = DIRBLKSIZ;
blkoff += DIRBLKSIZ;
(dp->i_offset & (DIRBLKSIZ - 1)),
rounddown2(dp->i_offset, DIRBLKSIZ));
((dp->i_offset - dp->i_count) & (DIRBLKSIZ - 1)),
rounddown2(dp->i_offset, DIRBLKSIZ));
0, DIRBLKSIZ - 12, DT_DIR, 2, ".."
0, DIRBLKSIZ - 12, 2, ".."
vinitvmio(tvp, DIRBLKSIZ, DIRBLKSIZ, -1);
nvnode_pager_setsize(tvp, DIRBLKSIZ, DIRBLKSIZ, -1);
error = VOP_BALLOC(tvp, 0LL, DIRBLKSIZ, cnp->cn_cred, B_CLRBUF, &bp);
ip->i_size = DIRBLKSIZ;
blkoff = DIRBLKSIZ;
(bp->b_data + blkoff))->d_reclen = DIRBLKSIZ;
blkoff += DIRBLKSIZ;
if (reclen + dbuf->cur + llen > roundup(dbuf->size, DIRBLKSIZ)) {
dbuf->size + DIRBLKSIZ);
newbuf = erealloc(dbuf->buf, dbuf->size + DIRBLKSIZ);
dbuf->size += DIRBLKSIZ;
memset(dbuf->buf + dbuf->size - DIRBLKSIZ, 0, DIRBLKSIZ);
dbuf->cur = dbuf->size - DIRBLKSIZ;
if (this + curdirsize > roundup(curdirsize, DIRBLKSIZ)) \
curdirsize = roundup(curdirsize, DIRBLKSIZ); \