DIRBLKSIZ
if ((incr % DIRBLKSIZ) != 0)
incr = DIRBLKSIZ;
if (space < DIRBLKSIZ) {
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 || dircheck(idesc, bp, dp) != 0) {
idesc->id_loc % DIRBLKSIZ == 0)
size = DIRBLKSIZ - (idesc->id_loc % DIRBLKSIZ);
spaceleft = DIRBLKSIZ - (idesc->id_loc % DIRBLKSIZ);
0, DIRBLKSIZ, DT_UNKNOWN, 0, "",
0, DIRBLKSIZ - 12, DT_DIR, 2, ".."
if (DIP(dp, di_size) % DIRBLKSIZ) {
DIP_SET(dp, di_size, roundup(DIP(dp, di_size), DIRBLKSIZ));
cp += 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) {
(intmax_t)inp->i_isize, DIRBLKSIZ);
(intmax_t)inp->i_isize, DIRBLKSIZ);
inp->i_isize = roundup(inp->i_isize, DIRBLKSIZ);
roundup(inp->i_isize, DIRBLKSIZ));
dpoff = rounddown(doff, DIRBLKSIZ);
return (DIRBLKSIZ);
spcleft = DIRBLKSIZ;
memset(iobuf, 0, DIRBLKSIZ);
i = DIRBLKSIZ - (loc & (DIRBLKSIZ - 1));
char dirbuf[DIRBLKSIZ];
if (dirloc + dp->d_reclen > DIRBLKSIZ) {
DIRBLKSIZ - prev;
if (fwrite(dirbuf, DIRBLKSIZ, 1, df) != 1)
((struct direct *)(dirbuf + prev))->d_reclen = DIRBLKSIZ - prev;
(void) lseek(dirp->dd_fd, base + rounddown2(loc, DIRBLKSIZ), SEEK_SET);
dirp->dd_loc = loc & (DIRBLKSIZ - 1);
dirp->dd_size = read(dirp->dd_fd, dirp->dd_buf, DIRBLKSIZ);
DIRBLKSIZ);
dp->d_reclen > DIRBLKSIZ + 1 - dirp->dd_loc) {
char dd_buf[DIRBLKSIZ];
for (; off < sblock.fs_bsize; off += DIRBLKSIZ) {
dp->d_reclen = DIRBLKSIZ;
dp->d_reclen = DIRBLKSIZ;
dir_clear_block(&block, off + 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)
int DIRBLKSIZ = ip->i_e2fs->e2fs_bsize;
if ((dp->i_size / DIRBLKSIZ) == 1 &&
dp->i_offset == DIRBLKSIZ) {
dirtemplate.dotdot_reclen = htole16(DIRBLKSIZ - 12);
buf = malloc(DIRBLKSIZ, M_TEMP, M_WAITOK | M_ZERO);
ext2_init_dirent_tail(EXT2_DIRENT_TAIL(buf, DIRBLKSIZ));
DIRBLKSIZ, (off_t)0, UIO_SYSSPACE,
if (DIRBLKSIZ > VFSTOEXT2(dvp->v_mount)->um_mountp->mnt_stat.f_bsize)
ip->i_size = DIRBLKSIZ;
0, htole16(DIRBLKSIZ - 12), 2, EXT2_FT_DIR, ".."
0, htole16(DIRBLKSIZ - 12), 2, EXT2_FT_UNKNOWN, ".."
#define NFS_READDIRBLKSIZ DIRBLKSIZ /* Minimal nm_readdirsize */
#define NFS_DIRBLKSIZ (16 * DIRBLKSIZ) /* Must be a multiple of DIRBLKSIZ */
(uiop->uio_resid & (DIRBLKSIZ - 1)) == 0,
readsize = uiop->uio_resid + DIRBLKSIZ;
left = DIRBLKSIZ - blksiz;
if (blksiz == DIRBLKSIZ)
left = DIRBLKSIZ - blksiz;
NFSBZERO(dp, DIRBLKSIZ);
dp->d_reclen = DIRBLKSIZ;
DIRBLKSIZ;
uiop->uio_iov->iov_len -= DIRBLKSIZ;
uiop->uio_resid -= DIRBLKSIZ;
uiop->uio_offset += DIRBLKSIZ;
(uiop->uio_resid & (DIRBLKSIZ - 1)) == 0,
left = DIRBLKSIZ - blksiz;
if (blksiz == DIRBLKSIZ)
left = DIRBLKSIZ - blksiz;
NFSBZERO(dp, DIRBLKSIZ);
dp->d_reclen = DIRBLKSIZ;
DIRBLKSIZ;
uiop->uio_iov->iov_len -= DIRBLKSIZ;
uiop->uio_resid -= DIRBLKSIZ;
uiop->uio_offset += DIRBLKSIZ;
left = uio->uio_resid % DIRBLKSIZ;
(uiop->uio_offset & (DIRBLKSIZ - 1)) == 0 &&
(uiop->uio_resid & (DIRBLKSIZ - 1)) == 0,
(uiop->uio_offset & (DIRBLKSIZ - 1)) == 0 &&
(uiop->uio_resid & (DIRBLKSIZ - 1)) == 0,
siz = ((cnt + DIRBLKSIZ - 1) & ~(DIRBLKSIZ - 1));
siz = ((siz + DIRBLKSIZ - 1) & ~(DIRBLKSIZ - 1));
if (i != DIRBLKSIZ)
block = offset / DIRBLKSIZ;
blkoff = rounddown2(offset, DIRBLKSIZ); /* offset of start of block */
entrypos = offset & (DIRBLKSIZ - 1); /* entry relative to block */
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)) {
static int ufs_mindirhashsize = DIRBLKSIZ * 5;
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,
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)
dirbuf = malloc(DIRBLKSIZ, M_TEMP, M_WAITOK);
auio.uio_resid = DIRBLKSIZ;
aiov.iov_len = DIRBLKSIZ;
edp = (struct dirent *)&dirbuf[DIRBLKSIZ - auio.uio_resid];
(I_OFFSET(dp) & (DIRBLKSIZ - 1)),
rounddown2(I_OFFSET(dp), DIRBLKSIZ));
((I_OFFSET(dp) - I_COUNT(dp)) & (DIRBLKSIZ - 1)),
rounddown2(I_OFFSET(dp), DIRBLKSIZ));
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));
SET_I_OFFSET(dp, roundup2(dp->i_size, DIRBLKSIZ));
if ((I_OFFSET(dp) & (DIRBLKSIZ - 1)) == 0)
SET_I_ENDOFF(dp, roundup2(enduseful, DIRBLKSIZ));
dp->i_diroff = rounddown2(i_offset, DIRBLKSIZ);
if ((I_OFFSET(dp) & (DIRBLKSIZ - 1)) == 0)
ep->d_reclen > DIRBLKSIZ - (entryoffsetinblock & (DIRBLKSIZ - 1)) ||
if (I_OFFSET(dp) & (DIRBLKSIZ - 1))
(vm_ooffset_t)I_OFFSET(dp) + DIRBLKSIZ);
if ((error = UFS_BALLOC(dvp, (off_t)I_OFFSET(dp), DIRBLKSIZ,
dp->i_size = I_OFFSET(dp) + DIRBLKSIZ;
dirp->d_reclen = DIRBLKSIZ;
blkoff += DIRBLKSIZ;
(bp->b_data + blkoff))->d_reclen = DIRBLKSIZ;
blkoff += DIRBLKSIZ;
0, DIRBLKSIZ - 12, DT_DIR, 2, ".."
0, DIRBLKSIZ - 12, 2, ".."
vnode_pager_setsize(tvp, DIRBLKSIZ);
if ((error = UFS_BALLOC(tvp, (off_t)0, DIRBLKSIZ, cnp->cn_cred,
ip->i_size = DIRBLKSIZ;
DIP_SET(ip, i_size, DIRBLKSIZ);
blkoff = DIRBLKSIZ;
(bp->b_data + blkoff))->d_reclen = DIRBLKSIZ;
blkoff += DIRBLKSIZ;
~(size_t)(DIRBLKSIZ - 1);
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); \