freefrag
struct freefrag *freefrag;
freefrag = newadp->ad_freefrag;
oldadp->ad_freefrag = freefrag;
static struct freefrag *
struct freefrag *freefrag;
freefrag = kmalloc(sizeof(struct freefrag), M_FREEFRAG,
freefrag->ff_list.wk_type = D_FREEFRAG;
freefrag->ff_state = ip->i_uid & ~ONWORKLIST; /* XXX - used below */
freefrag->ff_inum = ip->i_number;
freefrag->ff_fs = fs;
freefrag->ff_devvp = ip->i_devvp;
freefrag->ff_blkno = blkno;
freefrag->ff_fragsize = size;
return (freefrag);
handle_workitem_freefrag(struct freefrag *freefrag)
tip.i_fs = freefrag->ff_fs;
tip.i_devvp = freefrag->ff_devvp;
tip.i_dev = freefrag->ff_devvp->v_rdev;
tip.i_number = freefrag->ff_inum;
tip.i_uid = freefrag->ff_state & ~ONWORKLIST; /* XXX - set above */
ffs_blkfree(&tip, freefrag->ff_blkno, freefrag->ff_fragsize);
kfree(freefrag, M_FREEFRAG);
struct freefrag *freefrag;
freefrag = oldaip->ai_freefrag;
aip->ai_freefrag = freefrag;
static void handle_workitem_freefrag(struct freefrag *);
static struct freefrag *newfreefrag(struct inode *, ufs_daddr_t, long);
struct freefrag *freefrag;
if ((freefrag = aip->ai_freefrag) != NULL) {
add_to_worklist(&freefrag->ff_list);
&freefrag->ff_list);
#define WK_FREEFRAG(wk) ((struct freefrag *)(wk))
struct freefrag *ad_freefrag; /* fragment to be freed (if any) */
struct freefrag *ai_freefrag; /* block to be freed when complete */