freeblks
int64_t freeblks;
freeblks = count_freemap(volume);
freebytes = freeblks * HAMMER_BIGBLOCK_SIZE64;
freeblks = initialize_freemap(volume);
root_vol->ondisk->vol0_stat_freebigblocks += freeblks;
root_vol->ondisk->vol0_stat_bigblocks += freeblks;
VNODEOP_DESC_INIT(freeblks);
struct freeblks *freeblks;
freeblks = kmalloc(sizeof(struct freeblks), M_FREEBLKS,
freeblks->fb_list.wk_type = D_FREEBLKS;
freeblks->fb_state = ATTACHED;
freeblks->fb_uid = ip->i_uid;
freeblks->fb_previousinum = ip->i_number;
freeblks->fb_devvp = ip->i_devvp;
freeblks->fb_fs = fs;
freeblks->fb_oldsize = ip->i_size;
static void handle_workitem_freeblocks(struct freeblks *);
freeblks->fb_newsize = length;
freeblks->fb_chkcnt = ip->i_blocks;
freeblks->fb_dblks[i] = ip->i_db[i];
freeblks->fb_iblks[i] = ip->i_ib[i];
WORKLIST_INSERT(&inodedep->id_bufwait, &freeblks->fb_list);
freeblks->fb_state |= DEPCOMPLETE;
if ((freeblks->fb_state & ALLCOMPLETE) == ALLCOMPLETE)
add_to_worklist(&freeblks->fb_list);
handle_workitem_freeblocks(freeblks);
handle_workitem_freeblocks(struct freeblks *freeblks)
tip.i_number = freeblks->fb_previousinum;
tip.i_devvp = freeblks->fb_devvp;
tip.i_dev = freeblks->fb_devvp->v_rdev;
tip.i_fs = freeblks->fb_fs;
tip.i_size = freeblks->fb_oldsize;
tip.i_uid = freeblks->fb_uid;
fs = freeblks->fb_fs;
if ((bn = freeblks->fb_iblks[level]) == 0)
if ((bn = freeblks->fb_dblks[i]) == 0)
if (freeblks->fb_chkcnt != blocksreleased)
WORKITEM_FREE(freeblks, D_FREEBLKS);
#define WK_FREEBLKS(wk) ((struct freeblks *)(wk))