sys/ufs/ffs/ffs_softdep.c
10809
struct indirdep *indirdep,
sys/ufs/ffs/ffs_softdep.c
10829
if (indirdep->ir_state & GOINGAWAY)
sys/ufs/ffs/ffs_softdep.c
10831
if ((indirdep->ir_state & DEPCOMPLETE) == 0) {
sys/ufs/ffs/ffs_softdep.c
10832
indirdep->ir_state |= DEPCOMPLETE;
sys/ufs/ffs/ffs_softdep.c
10833
LIST_REMOVE(indirdep, ir_next);
sys/ufs/ffs/ffs_softdep.c
10835
indirdep->ir_state |= GOINGAWAY;
sys/ufs/ffs/ffs_softdep.c
10840
while ((aip = LIST_FIRST(&indirdep->ir_deplisthd)) != NULL)
sys/ufs/ffs/ffs_softdep.c
10842
while ((aip = LIST_FIRST(&indirdep->ir_donehd)) != NULL)
sys/ufs/ffs/ffs_softdep.c
10844
while ((aip = LIST_FIRST(&indirdep->ir_writehd)) != NULL)
sys/ufs/ffs/ffs_softdep.c
10846
while ((aip = LIST_FIRST(&indirdep->ir_completehd)) != NULL)
sys/ufs/ffs/ffs_softdep.c
10854
if (TAILQ_EMPTY(&indirdep->ir_trunc))
sys/ufs/ffs/ffs_softdep.c
10855
bcopy(bp->b_data, indirdep->ir_savebp->b_data, bp->b_bcount);
sys/ufs/ffs/ffs_softdep.c
10857
bcopy(bp->b_data, indirdep->ir_saveddata, bp->b_bcount);
sys/ufs/ffs/ffs_softdep.c
10858
WORKLIST_REMOVE(&indirdep->ir_list);
sys/ufs/ffs/ffs_softdep.c
10859
WORKLIST_INSERT(&indirdep->ir_savebp->b_dep, &indirdep->ir_list);
sys/ufs/ffs/ffs_softdep.c
10860
indirdep->ir_bp = NULL;
sys/ufs/ffs/ffs_softdep.c
10861
indirdep->ir_freeblks = freeblks;
sys/ufs/ffs/ffs_softdep.c
10868
free_indirdep(struct indirdep *indirdep)
sys/ufs/ffs/ffs_softdep.c
10871
KASSERT(TAILQ_EMPTY(&indirdep->ir_trunc),
sys/ufs/ffs/ffs_softdep.c
10873
KASSERT(LIST_EMPTY(&indirdep->ir_completehd),
sys/ufs/ffs/ffs_softdep.c
10875
KASSERT(LIST_EMPTY(&indirdep->ir_writehd),
sys/ufs/ffs/ffs_softdep.c
10877
KASSERT(LIST_EMPTY(&indirdep->ir_donehd),
sys/ufs/ffs/ffs_softdep.c
10879
KASSERT(LIST_EMPTY(&indirdep->ir_deplisthd),
sys/ufs/ffs/ffs_softdep.c
10881
KASSERT((indirdep->ir_state & DEPCOMPLETE),
sys/ufs/ffs/ffs_softdep.c
10882
("free_indirdep: %p still on newblk list.", indirdep));
sys/ufs/ffs/ffs_softdep.c
10883
KASSERT(indirdep->ir_saveddata == NULL,
sys/ufs/ffs/ffs_softdep.c
10884
("free_indirdep: %p still has saved data.", indirdep));
sys/ufs/ffs/ffs_softdep.c
10885
KASSERT(indirdep->ir_savebp == NULL,
sys/ufs/ffs/ffs_softdep.c
10886
("free_indirdep: %p still has savebp buffer.", indirdep));
sys/ufs/ffs/ffs_softdep.c
10887
if (indirdep->ir_state & ONWORKLIST)
sys/ufs/ffs/ffs_softdep.c
10888
WORKLIST_REMOVE(&indirdep->ir_list);
sys/ufs/ffs/ffs_softdep.c
10889
WORKITEM_FREE(indirdep, D_INDIRDEP);
sys/ufs/ffs/ffs_softdep.c
10898
initiate_write_indirdep(struct indirdep *indirdep, struct buf *bp)
sys/ufs/ffs/ffs_softdep.c
10902
indirdep->ir_state |= IOSTARTED;
sys/ufs/ffs/ffs_softdep.c
10903
if (indirdep->ir_state & GOINGAWAY)
sys/ufs/ffs/ffs_softdep.c
10909
if (LIST_EMPTY(&indirdep->ir_deplisthd) &&
sys/ufs/ffs/ffs_softdep.c
10910
TAILQ_EMPTY(&indirdep->ir_trunc))
sys/ufs/ffs/ffs_softdep.c
10915
if (indirdep->ir_saveddata == NULL) {
sys/ufs/ffs/ffs_softdep.c
10916
ump = VFSTOUFS(indirdep->ir_list.wk_mp);
sys/ufs/ffs/ffs_softdep.c
10919
indirdep->ir_saveddata = malloc(bp->b_bcount, M_INDIRDEP,
sys/ufs/ffs/ffs_softdep.c
10923
indirdep->ir_state &= ~ATTACHED;
sys/ufs/ffs/ffs_softdep.c
10924
indirdep->ir_state |= UNDONE;
sys/ufs/ffs/ffs_softdep.c
10925
bcopy(bp->b_data, indirdep->ir_saveddata, bp->b_bcount);
sys/ufs/ffs/ffs_softdep.c
10926
bcopy(indirdep->ir_savebp->b_data, bp->b_data,
sys/ufs/ffs/ffs_softdep.c
11504
struct indirdep *indirdep;
sys/ufs/ffs/ffs_softdep.c
11508
indirdep = aip->ai_indirdep;
sys/ufs/ffs/ffs_softdep.c
11514
if (indirdep->ir_state & UNDONE || !TAILQ_EMPTY(&indirdep->ir_trunc)) {
sys/ufs/ffs/ffs_softdep.c
11515
LIST_INSERT_HEAD(&indirdep->ir_donehd, aip, ai_next);
sys/ufs/ffs/ffs_softdep.c
11518
if (indirdep->ir_state & UFS1FMT)
sys/ufs/ffs/ffs_softdep.c
11519
((ufs1_daddr_t *)indirdep->ir_savebp->b_data)[aip->ai_offset] =
sys/ufs/ffs/ffs_softdep.c
11522
((ufs2_daddr_t *)indirdep->ir_savebp->b_data)[aip->ai_offset] =
sys/ufs/ffs/ffs_softdep.c
11527
LIST_INSERT_HEAD(&indirdep->ir_writehd, aip, ai_next);
sys/ufs/ffs/ffs_softdep.c
11939
struct indirdep *indirdep,
sys/ufs/ffs/ffs_softdep.c
11948
if (indirdep->ir_state & GOINGAWAY)
sys/ufs/ffs/ffs_softdep.c
11950
if ((indirdep->ir_state & IOSTARTED) == 0)
sys/ufs/ffs/ffs_softdep.c
11956
if (indirdep->ir_saveddata) {
sys/ufs/ffs/ffs_softdep.c
11957
bcopy(indirdep->ir_saveddata, bp->b_data, bp->b_bcount);
sys/ufs/ffs/ffs_softdep.c
11958
if (TAILQ_EMPTY(&indirdep->ir_trunc)) {
sys/ufs/ffs/ffs_softdep.c
11959
free(indirdep->ir_saveddata, M_INDIRDEP);
sys/ufs/ffs/ffs_softdep.c
11960
indirdep->ir_saveddata = NULL;
sys/ufs/ffs/ffs_softdep.c
11964
indirdep->ir_state &= ~(UNDONE | IOSTARTED);
sys/ufs/ffs/ffs_softdep.c
11965
indirdep->ir_state |= ATTACHED;
sys/ufs/ffs/ffs_softdep.c
11981
while ((aip = LIST_FIRST(&indirdep->ir_writehd)) != NULL) {
sys/ufs/ffs/ffs_softdep.c
11983
if ((indirdep->ir_state & DEPCOMPLETE) == 0) {
sys/ufs/ffs/ffs_softdep.c
11984
LIST_INSERT_HEAD(&indirdep->ir_completehd, aip,
sys/ufs/ffs/ffs_softdep.c
11995
if (TAILQ_EMPTY(&indirdep->ir_trunc)) {
sys/ufs/ffs/ffs_softdep.c
11996
while ((aip = LIST_FIRST(&indirdep->ir_donehd)) != NULL) {
sys/ufs/ffs/ffs_softdep.c
11998
if (aip == LIST_FIRST(&indirdep->ir_donehd))
sys/ufs/ffs/ffs_softdep.c
12017
sbp = indirdep->ir_savebp;
sys/ufs/ffs/ffs_softdep.c
12019
indirdep->ir_savebp = NULL;
sys/ufs/ffs/ffs_softdep.c
12020
indirdep->ir_bp = NULL;
sys/ufs/ffs/ffs_softdep.c
12027
if (indirdep->ir_state & DEPCOMPLETE)
sys/ufs/ffs/ffs_softdep.c
12028
free_indirdep(indirdep);
sys/ufs/ffs/ffs_softdep.c
12964
struct indirdep *indirdep;
sys/ufs/ffs/ffs_softdep.c
13019
indirdep = WK_INDIRDEP(wk);
sys/ufs/ffs/ffs_softdep.c
13021
if (!TAILQ_EMPTY(&indirdep->ir_trunc) ||
sys/ufs/ffs/ffs_softdep.c
13022
!LIST_EMPTY(&indirdep->ir_deplisthd)) {
sys/ufs/ffs/ffs_softdep.c
13027
if (!TAILQ_EMPTY(&indirdep->ir_trunc))
sys/ufs/ffs/ffs_softdep.c
13030
LIST_FOREACH(aip, &indirdep->ir_deplisthd, ai_next) {
sys/ufs/ffs/ffs_softdep.c
14331
struct indirdep *indirdep;
sys/ufs/ffs/ffs_softdep.c
14377
indirdep = WK_INDIRDEP(wk);
sys/ufs/ffs/ffs_softdep.c
14379
TAILQ_FOREACH(freework, &indirdep->ir_trunc, fw_next) {
sys/ufs/ffs/ffs_softdep.c
14386
LIST_FOREACH(aip, &indirdep->ir_deplisthd, ai_next) {
sys/ufs/ffs/ffs_softdep.c
14557
struct indirdep *indirdep;
sys/ufs/ffs/ffs_softdep.c
14646
indirdep = WK_INDIRDEP(wk);
sys/ufs/ffs/ffs_softdep.c
14647
if ((indirdep->ir_state & (GOINGAWAY | DEPCOMPLETE)) !=
sys/ufs/ffs/ffs_softdep.c
14649
!TAILQ_EMPTY(&indirdep->ir_trunc) ||
sys/ufs/ffs/ffs_softdep.c
14650
!LIST_EMPTY(&indirdep->ir_completehd) ||
sys/ufs/ffs/ffs_softdep.c
14651
!LIST_EMPTY(&indirdep->ir_writehd) ||
sys/ufs/ffs/ffs_softdep.c
14652
!LIST_EMPTY(&indirdep->ir_donehd) ||
sys/ufs/ffs/ffs_softdep.c
14653
!LIST_EMPTY(&indirdep->ir_deplisthd) ||
sys/ufs/ffs/ffs_softdep.c
14654
indirdep->ir_saveddata != NULL ||
sys/ufs/ffs/ffs_softdep.c
14655
indirdep->ir_savebp == NULL) {
sys/ufs/ffs/ffs_softdep.c
14657
__FUNCTION__, indirdep);
sys/ufs/ffs/ffs_softdep.c
14661
__FUNCTION__, indirdep);
sys/ufs/ffs/ffs_softdep.c
14662
bp = indirdep->ir_savebp;
sys/ufs/ffs/ffs_softdep.c
14663
indirdep->ir_savebp = NULL;
sys/ufs/ffs/ffs_softdep.c
14664
free_indirdep(indirdep);
sys/ufs/ffs/ffs_softdep.c
614
SOFTDEP_TYPE(INDIRDEP, indirdep, "Indirect block dependencies");
sys/ufs/ffs/ffs_softdep.c
6152
indirdep_complete(struct indirdep *indirdep)
sys/ufs/ffs/ffs_softdep.c
6156
LIST_REMOVE(indirdep, ir_next);
sys/ufs/ffs/ffs_softdep.c
6157
indirdep->ir_state |= DEPCOMPLETE;
sys/ufs/ffs/ffs_softdep.c
6159
while ((aip = LIST_FIRST(&indirdep->ir_completehd)) != NULL) {
sys/ufs/ffs/ffs_softdep.c
6168
if ((indirdep->ir_state & ONWORKLIST) == 0)
sys/ufs/ffs/ffs_softdep.c
6169
free_indirdep(indirdep);
sys/ufs/ffs/ffs_softdep.c
6172
static struct indirdep *
sys/ufs/ffs/ffs_softdep.c
6177
struct indirdep *indirdep, *newindirdep;
sys/ufs/ffs/ffs_softdep.c
6186
indirdep = NULL;
sys/ufs/ffs/ffs_softdep.c
6193
indirdep = WK_INDIRDEP(wk);
sys/ufs/ffs/ffs_softdep.c
6197
if (indirdep != NULL && newindirdep == NULL)
sys/ufs/ffs/ffs_softdep.c
6198
return (indirdep);
sys/ufs/ffs/ffs_softdep.c
6199
if (indirdep != NULL && newindirdep != NULL)
sys/ufs/ffs/ffs_softdep.c
6202
if (indirdep == NULL && newindirdep != NULL)
sys/ufs/ffs/ffs_softdep.c
6206
newindirdep = malloc(sizeof(struct indirdep),
sys/ufs/ffs/ffs_softdep.c
6231
indirdep = newindirdep;
sys/ufs/ffs/ffs_softdep.c
6232
WORKLIST_INSERT(&bp->b_dep, &indirdep->ir_list);
sys/ufs/ffs/ffs_softdep.c
6240
LIST_INSERT_HEAD(&newblk->nb_indirdeps, indirdep, ir_next);
sys/ufs/ffs/ffs_softdep.c
6242
indirdep->ir_state |= DEPCOMPLETE;
sys/ufs/ffs/ffs_softdep.c
6243
return (indirdep);
sys/ufs/ffs/ffs_softdep.c
6259
struct indirdep *indirdep;
sys/ufs/ffs/ffs_softdep.c
6273
indirdep = indirdep_lookup(mp, ip, bp);
sys/ufs/ffs/ffs_softdep.c
6274
KASSERT(indirdep->ir_savebp != NULL,
sys/ufs/ffs/ffs_softdep.c
6276
aip->ai_indirdep = indirdep;
sys/ufs/ffs/ffs_softdep.c
6284
LIST_FOREACH(oldaip, &indirdep->ir_deplisthd, ai_next) {
sys/ufs/ffs/ffs_softdep.c
6290
LIST_FOREACH(oldaip, &indirdep->ir_donehd, ai_next) {
sys/ufs/ffs/ffs_softdep.c
6298
LIST_INSERT_HEAD(&indirdep->ir_deplisthd, aip, ai_next);
sys/ufs/ffs/ffs_softdep.c
6434
struct indirdep *indirdep,
sys/ufs/ffs/ffs_softdep.c
6444
LIST_FOREACH_SAFE(aip, &indirdep->ir_deplisthd, ai_next, aipn)
sys/ufs/ffs/ffs_softdep.c
6447
LIST_FOREACH_SAFE(aip, &indirdep->ir_donehd, ai_next, aipn)
sys/ufs/ffs/ffs_softdep.c
6453
LIST_FOREACH_SAFE(aip, &indirdep->ir_writehd, ai_next, aipn)
sys/ufs/ffs/ffs_softdep.c
6456
LIST_FOREACH_SAFE(aip, &indirdep->ir_completehd, ai_next, aipn)
sys/ufs/ffs/ffs_softdep.c
6475
struct indirdep *indirdep;
sys/ufs/ffs/ffs_softdep.c
6476
struct indirdep *indirn;
sys/ufs/ffs/ffs_softdep.c
6519
indirdep = indirdep_lookup(mp, ip, bp);
sys/ufs/ffs/ffs_softdep.c
6520
if (indirdep->ir_freeblks)
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
6529
if ((indirdep->ir_state & DEPCOMPLETE) == 0) {
sys/ufs/ffs/ffs_softdep.c
6536
trunc_indirdep(indirdep, freeblks, bp, off);
sys/ufs/ffs/ffs_softdep.c
6543
if (indirdep->ir_saveddata == NULL)
sys/ufs/ffs/ffs_softdep.c
6544
indirdep->ir_saveddata = malloc(bp->b_bcount, M_INDIRDEP,
sys/ufs/ffs/ffs_softdep.c
6578
struct indirdep *indirdep;
sys/ufs/ffs/ffs_softdep.c
6586
indirdep = freework->fw_indir;
sys/ufs/ffs/ffs_softdep.c
6588
bp = indirdep->ir_bp;
sys/ufs/ffs/ffs_softdep.c
6601
TAILQ_REMOVE(&indirdep->ir_trunc, freework, fw_next);
sys/ufs/ffs/ffs_softdep.c
6605
if (indirdep->ir_state & UFS1FMT)
sys/ufs/ffs/ffs_softdep.c
6610
count = indirdep->ir_savebp->b_bcount - start;
sys/ufs/ffs/ffs_softdep.c
6611
start += (uintptr_t)indirdep->ir_savebp->b_data;
sys/ufs/ffs/ffs_softdep.c
6617
fwn = TAILQ_FIRST(&indirdep->ir_trunc);
sys/ufs/ffs/ffs_softdep.c
6619
if (fwn->fw_freeblks == indirdep->ir_freeblks)
sys/ufs/ffs/ffs_softdep.c
6620
TAILQ_REMOVE(&indirdep->ir_trunc, fwn, fw_next);
sys/ufs/ffs/ffs_softdep.c
6629
if (TAILQ_EMPTY(&indirdep->ir_trunc)) {
sys/ufs/ffs/ffs_softdep.c
6631
bcopy(indirdep->ir_saveddata,
sys/ufs/ffs/ffs_softdep.c
6632
indirdep->ir_savebp->b_data,
sys/ufs/ffs/ffs_softdep.c
6633
indirdep->ir_savebp->b_bcount);
sys/ufs/ffs/ffs_softdep.c
6634
free(indirdep->ir_saveddata, M_INDIRDEP);
sys/ufs/ffs/ffs_softdep.c
6635
indirdep->ir_saveddata = NULL;
sys/ufs/ffs/ffs_softdep.c
6644
if (LIST_EMPTY(&indirdep->ir_freeblks->fb_jblkdephd))
sys/ufs/ffs/ffs_softdep.c
6647
WORKLIST_INSERT(&indirdep->ir_freeblks->fb_freeworkhd,
sys/ufs/ffs/ffs_softdep.c
6651
bp = indirdep->ir_savebp;
sys/ufs/ffs/ffs_softdep.c
6652
indirdep->ir_savebp = NULL;
sys/ufs/ffs/ffs_softdep.c
6653
free_indirdep(indirdep);
sys/ufs/ffs/ffs_softdep.c
723
static int handle_written_indirdep(struct indirdep *, struct buf *,
sys/ufs/ffs/ffs_softdep.c
7503
struct indirdep *indirdep;
sys/ufs/ffs/ffs_softdep.c
7515
indirdep = WK_INDIRDEP(wk);
sys/ufs/ffs/ffs_softdep.c
7517
bp->b_blkno != indirdep->ir_savebp->b_lblkno)
sys/ufs/ffs/ffs_softdep.c
7519
cancel_indirdep(indirdep, bp, freeblks);
sys/ufs/ffs/ffs_softdep.c
752
static void indirdep_complete(struct indirdep *);
sys/ufs/ffs/ffs_softdep.c
758
static void initiate_write_indirdep(struct indirdep*, struct buf *);
sys/ufs/ffs/ffs_softdep.c
769
static struct indirdep *indirdep_lookup(struct mount *, struct inode *,
sys/ufs/ffs/ffs_softdep.c
7709
struct indirdep *indirdep;
sys/ufs/ffs/ffs_softdep.c
771
static void cancel_indirdep(struct indirdep *, struct buf *,
sys/ufs/ffs/ffs_softdep.c
7727
while ((indirdep = LIST_FIRST(&newblk->nb_indirdeps)) != NULL)
sys/ufs/ffs/ffs_softdep.c
7728
indirdep_complete(indirdep);
sys/ufs/ffs/ffs_softdep.c
773
static void free_indirdep(struct indirdep *);
sys/ufs/ffs/ffs_softdep.c
791
static void trunc_indirdep(struct indirdep *, struct freeblks *, struct buf *,
sys/ufs/ffs/ffs_softdep.c
8314
struct indirdep *indirdep;
sys/ufs/ffs/ffs_softdep.c
8343
indirdep = NULL;
sys/ufs/ffs/ffs_softdep.c
8346
indirdep = freework->fw_indir;
sys/ufs/ffs/ffs_softdep.c
8347
bp = indirdep->ir_savebp;
sys/ufs/ffs/ffs_softdep.c
8356
indirdep = WK_INDIRDEP(LIST_FIRST(&bp->b_dep));
sys/ufs/ffs/ffs_softdep.c
8357
if (indirdep == NULL || (indirdep->ir_state & GOINGAWAY) == 0)
sys/ufs/ffs/ffs_softdep.c
8359
indirdep, bp);
sys/ufs/ffs/ffs_softdep.c
8373
if (indirdep) {
sys/ufs/ffs/ffs_softdep.c
8374
if (freework != TAILQ_FIRST(&indirdep->ir_trunc) &&
sys/ufs/ffs/ffs_softdep.c
8375
!TAILQ_EMPTY(&indirdep->ir_trunc)) {
sys/ufs/ffs/ffs_softdep.c
8381
TAILQ_INSERT_TAIL(&indirdep->ir_trunc,
sys/ufs/ffs/ffs_softdep.c
8391
KASSERT(indirdep->ir_savebp == bp,
sys/ufs/ffs/ffs_softdep.c
8393
indirdep->ir_savebp));
sys/ufs/ffs/ffs_softdep.c
8394
indirdep->ir_savebp = NULL;
sys/ufs/ffs/ffs_softdep.c
8395
free_indirdep(indirdep);
sys/ufs/ffs/ffs_softdep.c
8527
struct indirdep *indirdep;
sys/ufs/ffs/ffs_softdep.c
8543
indirdep = aip->ai_indirdep;
sys/ufs/ffs/ffs_softdep.c
8544
if (indirdep->ir_state & UFS1FMT)
sys/ufs/ffs/softdep.h
225
#define WK_INDIRDEP(wk) ((struct indirdep *)(wk))
sys/ufs/ffs/softdep.h
258
LIST_HEAD(indirdephd, indirdep);
sys/ufs/ffs/softdep.h
499
LIST_ENTRY(indirdep) ir_next; /* alloc{direct,indir} list */
sys/ufs/ffs/softdep.h
528
struct indirdep *ai_indirdep; /* address of associated indirdep */
sys/ufs/ffs/softdep.h
613
struct indirdep *fw_indir; /* indirect block. */