sys/ufs/ffs/ffs_softdep.c
14329
struct freework *freework;
sys/ufs/ffs/ffs_softdep.c
14379
TAILQ_FOREACH(freework, &indirdep->ir_trunc, fw_next) {
sys/ufs/ffs/ffs_softdep.c
2473
struct freework *freework;
sys/ufs/ffs/ffs_softdep.c
2479
TAILQ_FOREACH(freework, wkhd, fw_next) {
sys/ufs/ffs/ffs_softdep.c
2480
if (freework->fw_blkno != blkno)
sys/ufs/ffs/ffs_softdep.c
2482
indirblk_remove(freework);
sys/ufs/ffs/ffs_softdep.c
2494
indirblk_insert(struct freework *freework)
sys/ufs/ffs/ffs_softdep.c
2500
ump = VFSTOUFS(freework->fw_list.wk_mp);
sys/ufs/ffs/ffs_softdep.c
2506
LIST_INSERT_HEAD(&jseg->js_indirs, freework, fw_segs);
sys/ufs/ffs/ffs_softdep.c
2507
TAILQ_INSERT_HEAD(INDIR_HASH(ump, freework->fw_blkno), freework,
sys/ufs/ffs/ffs_softdep.c
2509
freework->fw_state &= ~DEPCOMPLETE;
sys/ufs/ffs/ffs_softdep.c
2513
indirblk_remove(struct freework *freework)
sys/ufs/ffs/ffs_softdep.c
2517
ump = VFSTOUFS(freework->fw_list.wk_mp);
sys/ufs/ffs/ffs_softdep.c
2518
LIST_REMOVE(freework, fw_segs);
sys/ufs/ffs/ffs_softdep.c
2519
TAILQ_REMOVE(INDIR_HASH(ump, freework->fw_blkno), freework, fw_next);
sys/ufs/ffs/ffs_softdep.c
2520
freework->fw_state |= DEPCOMPLETE;
sys/ufs/ffs/ffs_softdep.c
2521
if ((freework->fw_state & ALLCOMPLETE) == ALLCOMPLETE)
sys/ufs/ffs/ffs_softdep.c
2522
WORKITEM_FREE(freework, D_FREEWORK);
sys/ufs/ffs/ffs_softdep.c
4109
struct freework *freework;
sys/ufs/ffs/ffs_softdep.c
4149
freework = WK_FREEWORK(jnewblk->jn_dep);
sys/ufs/ffs/ffs_softdep.c
4150
freework->fw_jnewblk = NULL;
sys/ufs/ffs/ffs_softdep.c
4151
jwork_insert(&freework->fw_freeblks->fb_jwork, jsegdep);
sys/ufs/ffs/ffs_softdep.c
4361
newfreedep(struct freework *freework)
sys/ufs/ffs/ffs_softdep.c
4366
workitem_alloc(&freedep->fd_list, D_FREEDEP, freework->fw_list.wk_mp);
sys/ufs/ffs/ffs_softdep.c
4367
freedep->fd_freework = freework;
sys/ufs/ffs/ffs_softdep.c
4379
struct freework *freework;
sys/ufs/ffs/ffs_softdep.c
4381
freework = freedep->fd_freework;
sys/ufs/ffs/ffs_softdep.c
4382
freework->fw_freeblks->fb_cgwait--;
sys/ufs/ffs/ffs_softdep.c
4383
if (--freework->fw_ref == 0)
sys/ufs/ffs/ffs_softdep.c
4384
freework_enqueue(freework);
sys/ufs/ffs/ffs_softdep.c
4394
static struct freework *
sys/ufs/ffs/ffs_softdep.c
4397
struct freework *parent,
sys/ufs/ffs/ffs_softdep.c
4404
struct freework *freework;
sys/ufs/ffs/ffs_softdep.c
4406
freework = malloc(sizeof(*freework), M_FREEWORK, M_SOFTDEP_FLAGS);
sys/ufs/ffs/ffs_softdep.c
4407
workitem_alloc(&freework->fw_list, D_FREEWORK, freeblks->fb_list.wk_mp);
sys/ufs/ffs/ffs_softdep.c
4408
freework->fw_state = ATTACHED;
sys/ufs/ffs/ffs_softdep.c
4409
freework->fw_jnewblk = NULL;
sys/ufs/ffs/ffs_softdep.c
4410
freework->fw_freeblks = freeblks;
sys/ufs/ffs/ffs_softdep.c
4411
freework->fw_parent = parent;
sys/ufs/ffs/ffs_softdep.c
4412
freework->fw_lbn = lbn;
sys/ufs/ffs/ffs_softdep.c
4413
freework->fw_blkno = nb;
sys/ufs/ffs/ffs_softdep.c
4414
freework->fw_frags = frags;
sys/ufs/ffs/ffs_softdep.c
4415
freework->fw_indir = NULL;
sys/ufs/ffs/ffs_softdep.c
4416
freework->fw_ref = (MOUNTEDSUJ(UFSTOVFS(ump)) == 0 ||
sys/ufs/ffs/ffs_softdep.c
4418
freework->fw_start = freework->fw_off = off;
sys/ufs/ffs/ffs_softdep.c
4423
WORKLIST_INSERT(&freeblks->fb_freeworkhd, &freework->fw_list);
sys/ufs/ffs/ffs_softdep.c
4428
return (freework);
sys/ufs/ffs/ffs_softdep.c
4746
struct freework *freework;
sys/ufs/ffs/ffs_softdep.c
4752
while ((freework = LIST_FIRST(&jseg->js_indirs)) != NULL)
sys/ufs/ffs/ffs_softdep.c
4753
indirblk_remove(freework);
sys/ufs/ffs/ffs_softdep.c
623
SOFTDEP_TYPE(FREEWORK, freework, "free an inode block");
sys/ufs/ffs/ffs_softdep.c
6477
struct freework *freework;
sys/ufs/ffs/ffs_softdep.c
6489
freework = NULL;
sys/ufs/ffs/ffs_softdep.c
6512
freework = newfreework(ump, freeblks, NULL, lbn, blkno, 0, off + 1, 0);
sys/ufs/ffs/ffs_softdep.c
6522
TAILQ_INSERT_TAIL(&indirdep->ir_trunc, freework, fw_next);
sys/ufs/ffs/ffs_softdep.c
6523
freework->fw_indir = indirdep;
sys/ufs/ffs/ffs_softdep.c
6555
if (freework) {
sys/ufs/ffs/ffs_softdep.c
6575
complete_trunc_indir(struct freework *freework)
sys/ufs/ffs/ffs_softdep.c
6577
struct freework *fwn;
sys/ufs/ffs/ffs_softdep.c
6584
ump = VFSTOUFS(freework->fw_list.wk_mp);
sys/ufs/ffs/ffs_softdep.c
6586
indirdep = freework->fw_indir;
sys/ufs/ffs/ffs_softdep.c
6600
freework->fw_state |= DEPCOMPLETE;
sys/ufs/ffs/ffs_softdep.c
6601
TAILQ_REMOVE(&indirdep->ir_trunc, freework, fw_next);
sys/ufs/ffs/ffs_softdep.c
6609
start *= freework->fw_start;
sys/ufs/ffs/ffs_softdep.c
6645
handle_written_freework(freework);
sys/ufs/ffs/ffs_softdep.c
6648
&freework->fw_list);
sys/ufs/ffs/ffs_softdep.c
6650
freework->fw_indir = (void *)0x0000deadbeef0000;
sys/ufs/ffs/ffs_softdep.c
6660
WORKLIST_INSERT(&bp->b_dep, &freework->fw_list);
sys/ufs/ffs/ffs_softdep.c
754
static void indirblk_insert(struct freework *);
sys/ufs/ffs/ffs_softdep.c
755
static void indirblk_remove(struct freework *);
sys/ufs/ffs/ffs_softdep.c
7588
struct freework *freework;
sys/ufs/ffs/ffs_softdep.c
7594
freework = NULL;
sys/ufs/ffs/ffs_softdep.c
7601
freework = WK_FREEWORK(wk);
sys/ufs/ffs/ffs_softdep.c
7602
if (freework->fw_blkno == newblk->nb_newblkno)
sys/ufs/ffs/ffs_softdep.c
7605
if (freework == NULL)
sys/ufs/ffs/ffs_softdep.c
7611
cancel_jfreeblk(freeblks, freework->fw_blkno);
sys/ufs/ffs/ffs_softdep.c
7620
freework->fw_jnewblk = cancel_newblk(newblk, &freework->fw_list,
sys/ufs/ffs/ffs_softdep.c
790
static void complete_trunc_indir(struct freework *);
sys/ufs/ffs/ffs_softdep.c
7968
freework_freeblock(struct freework *freework, uint64_t key)
sys/ufs/ffs/ffs_softdep.c
7978
ump = VFSTOUFS(freework->fw_list.wk_mp);
sys/ufs/ffs/ffs_softdep.c
7983
if (freework->fw_indir) {
sys/ufs/ffs/ffs_softdep.c
7984
complete_trunc_indir(freework);
sys/ufs/ffs/ffs_softdep.c
7987
freeblks = freework->fw_freeblks;
sys/ufs/ffs/ffs_softdep.c
7990
bsize = lfragtosize(fs, freework->fw_frags);
sys/ufs/ffs/ffs_softdep.c
7996
freework->fw_state |= DEPCOMPLETE;
sys/ufs/ffs/ffs_softdep.c
8002
if (needj && freework->fw_lbn <= -UFS_NDADDR)
sys/ufs/ffs/ffs_softdep.c
8003
indirblk_insert(freework);
sys/ufs/ffs/ffs_softdep.c
8010
jnewblk = freework->fw_jnewblk;
sys/ufs/ffs/ffs_softdep.c
8015
freework->fw_state |= DELAYEDFREE;
sys/ufs/ffs/ffs_softdep.c
8017
WORKLIST_INSERT(&wkhd, &freework->fw_list);
sys/ufs/ffs/ffs_softdep.c
8023
freeblks->fb_inum, freework->fw_blkno, freework->fw_lbn, bsize);
sys/ufs/ffs/ffs_softdep.c
8024
ffs_blkfree(ump, fs, freeblks->fb_devvp, freework->fw_blkno, bsize,
sys/ufs/ffs/ffs_softdep.c
8032
handle_written_freework(freework);
sys/ufs/ffs/ffs_softdep.c
8041
freework_enqueue(struct freework *freework)
sys/ufs/ffs/ffs_softdep.c
8045
freeblks = freework->fw_freeblks;
sys/ufs/ffs/ffs_softdep.c
8046
if ((freework->fw_state & INPROGRESS) == 0)
sys/ufs/ffs/ffs_softdep.c
8047
WORKLIST_INSERT(&freeblks->fb_freeworkhd, &freework->fw_list);
sys/ufs/ffs/ffs_softdep.c
8062
handle_workitem_indirblk(struct freework *freework)
sys/ufs/ffs/ffs_softdep.c
8068
freeblks = freework->fw_freeblks;
sys/ufs/ffs/ffs_softdep.c
8071
if (freework->fw_state & DEPCOMPLETE) {
sys/ufs/ffs/ffs_softdep.c
8072
handle_written_freework(freework);
sys/ufs/ffs/ffs_softdep.c
8075
if (freework->fw_off == NINDIR(fs)) {
sys/ufs/ffs/ffs_softdep.c
8076
freework_freeblock(freework, SINGLETON_KEY);
sys/ufs/ffs/ffs_softdep.c
8079
freework->fw_state |= INPROGRESS;
sys/ufs/ffs/ffs_softdep.c
8081
indir_trunc(freework, fsbtodb(fs, freework->fw_blkno),
sys/ufs/ffs/ffs_softdep.c
8082
freework->fw_lbn);
sys/ufs/ffs/ffs_softdep.c
8092
handle_written_freework(struct freework *freework)
sys/ufs/ffs/ffs_softdep.c
8095
struct freework *parent;
sys/ufs/ffs/ffs_softdep.c
8097
freeblks = freework->fw_freeblks;
sys/ufs/ffs/ffs_softdep.c
8098
parent = freework->fw_parent;
sys/ufs/ffs/ffs_softdep.c
8099
if (freework->fw_state & DELAYEDFREE)
sys/ufs/ffs/ffs_softdep.c
8101
freework->fw_state |= COMPLETE;
sys/ufs/ffs/ffs_softdep.c
8102
if ((freework->fw_state & ALLCOMPLETE) == ALLCOMPLETE)
sys/ufs/ffs/ffs_softdep.c
8103
WORKITEM_FREE(freework, D_FREEWORK);
sys/ufs/ffs/ffs_softdep.c
8127
struct freework *freework;
sys/ufs/ffs/ffs_softdep.c
8153
freework = NULL;
sys/ufs/ffs/ffs_softdep.c
8156
freework = newfreework(ump, freeblks, NULL,
sys/ufs/ffs/ffs_softdep.c
8163
freework->fw_jnewblk = newblk->nb_jnewblk;
sys/ufs/ffs/ffs_softdep.c
8164
newblk->nb_jnewblk->jn_dep = &freework->fw_list;
sys/ufs/ffs/ffs_softdep.c
8171
freework = WK_FREEWORK(wk);
sys/ufs/ffs/ffs_softdep.c
8172
if (freework->fw_lbn <= -UFS_NDADDR)
sys/ufs/ffs/ffs_softdep.c
8173
handle_workitem_indirblk(freework);
sys/ufs/ffs/ffs_softdep.c
8175
freework_freeblock(freework, key);
sys/ufs/ffs/ffs_softdep.c
818
static void indir_trunc(struct freework *, ufs2_daddr_t, ufs_lbn_t);
sys/ufs/ffs/ffs_softdep.c
8305
indir_trunc(struct freework *freework,
sys/ufs/ffs/ffs_softdep.c
8309
struct freework *nfreework;
sys/ufs/ffs/ffs_softdep.c
832
static void freework_freeblock(struct freework *, uint64_t);
sys/ufs/ffs/ffs_softdep.c
8324
freeblks = freework->fw_freeblks;
sys/ufs/ffs/ffs_softdep.c
833
static void freework_enqueue(struct freework *);
sys/ufs/ffs/ffs_softdep.c
8344
if (freework->fw_indir != NULL) {
sys/ufs/ffs/ffs_softdep.c
8346
indirdep = freework->fw_indir;
sys/ufs/ffs/ffs_softdep.c
836
static void handle_workitem_indirblk(struct freework *);
sys/ufs/ffs/ffs_softdep.c
8368
freework->fw_state &= ~INPROGRESS;
sys/ufs/ffs/ffs_softdep.c
837
static void handle_written_freework(struct freework *);
sys/ufs/ffs/ffs_softdep.c
8374
if (freework != TAILQ_FIRST(&indirdep->ir_trunc) &&
sys/ufs/ffs/ffs_softdep.c
8380
if (freework->fw_indir == NULL)
sys/ufs/ffs/ffs_softdep.c
8382
freework, fw_next);
sys/ufs/ffs/ffs_softdep.c
8402
nb = bap1[freework->fw_off];
sys/ufs/ffs/ffs_softdep.c
8407
nb = bap2[freework->fw_off];
sys/ufs/ffs/ffs_softdep.c
8415
nfreework = freework;
sys/ufs/ffs/ffs_softdep.c
8424
for (i = freework->fw_off; i < NINDIR(fs); i++, nb = nnb) {
sys/ufs/ffs/ffs_softdep.c
8441
nfreework = newfreework(ump, freeblks, freework,
sys/ufs/ffs/ffs_softdep.c
8456
freedep = newfreedep(freework);
sys/ufs/ffs/ffs_softdep.c
8486
freework->fw_off = i;
sys/ufs/ffs/ffs_softdep.c
8487
freework->fw_ref += freedeps;
sys/ufs/ffs/ffs_softdep.c
8488
freework->fw_ref -= NINDIR(fs) + 1;
sys/ufs/ffs/ffs_softdep.c
8491
if (freework->fw_ref == 0)
sys/ufs/ffs/ffs_softdep.c
8492
freework_freeblock(freework, SINGLETON_KEY);
sys/ufs/ffs/ffs_softdep.c
8506
if (freework->fw_blkno == dbn) {
sys/ufs/ffs/ffs_softdep.c
8507
freework->fw_state |= ALLCOMPLETE;
sys/ufs/ffs/ffs_softdep.c
8509
handle_written_freework(freework);
sys/ufs/ffs/ffs_softdep.c
910
static struct freework *newfreework(struct ufsmount *, struct freeblks *,
sys/ufs/ffs/ffs_softdep.c
911
struct freework *, ufs_lbn_t, ufs2_daddr_t, int, int, int);
sys/ufs/ffs/softdep.h
1036
TAILQ_HEAD(indir_hashhead, freework);
sys/ufs/ffs/softdep.h
229
#define WK_FREEWORK(wk) ((struct freework *)(wk))
sys/ufs/ffs/softdep.h
264
LIST_HEAD(freeworkhd, freework);
sys/ufs/ffs/softdep.h
265
TAILQ_HEAD(freeworklst, freework);
sys/ufs/ffs/softdep.h
500
TAILQ_HEAD(, freework) ir_trunc; /* List of truncations. */
sys/ufs/ffs/softdep.h
608
LIST_ENTRY(freework) fw_segs; /* Seg list. */
sys/ufs/ffs/softdep.h
609
TAILQ_ENTRY(freework) fw_next; /* Hash/Trunc list. */
sys/ufs/ffs/softdep.h
612
struct freework *fw_parent; /* Parent indirect. */
sys/ufs/ffs/softdep.h
631
struct freework *fd_freework; /* Parent freework. */
sys/ufs/ffs/softdep.h
975
LIST_HEAD(, freework) js_indirs;/* List of indirects in this seg. */