sys/ufs/ffs/ffs_softdep.c
10010
if (dirrem->dm_state & ONWORKLIST)
sys/ufs/ffs/ffs_softdep.c
10012
dirrem);
sys/ufs/ffs/ffs_softdep.c
10013
oldinum = dirrem->dm_oldinum;
sys/ufs/ffs/ffs_softdep.c
10014
mp = dirrem->dm_list.wk_mp;
sys/ufs/ffs/ffs_softdep.c
10025
if (dirrem->dm_state & ONDEPLIST)
sys/ufs/ffs/ffs_softdep.c
10026
LIST_REMOVE(dirrem, dm_inonext);
sys/ufs/ffs/ffs_softdep.c
10027
KASSERT(LIST_EMPTY(&dirrem->dm_jremrefhd),
sys/ufs/ffs/ffs_softdep.c
10043
while ((wk = LIST_FIRST(&dirrem->dm_jwork)) != NULL) {
sys/ufs/ffs/ffs_softdep.c
10045
if ((dirrem->dm_state & DIRCHG) == 0 &&
sys/ufs/ffs/ffs_softdep.c
10053
LIST_SWAP(&dirrem->dm_jwork, &dotdotwk, worklist, wk_list);
sys/ufs/ffs/ffs_softdep.c
10057
if ((dirrem->dm_state & RMDIR) == 0) {
sys/ufs/ffs/ffs_softdep.c
10069
KASSERT(LIST_EMPTY(&dirrem->dm_jwork),
sys/ufs/ffs/ffs_softdep.c
10071
TYPENAME(LIST_FIRST(&dirrem->dm_jwork)->wk_type)));
sys/ufs/ffs/ffs_softdep.c
10072
WORKITEM_FREE(dirrem, D_DIRREM);
sys/ufs/ffs/ffs_softdep.c
10097
if (dirrem->dm_state & DIRCHG) {
sys/ufs/ffs/ffs_softdep.c
10098
KASSERT(LIST_EMPTY(&dirrem->dm_jwork),
sys/ufs/ffs/ffs_softdep.c
10100
WORKITEM_FREE(dirrem, D_DIRREM);
sys/ufs/ffs/ffs_softdep.c
10104
dirrem->dm_state = ONDEPLIST;
sys/ufs/ffs/ffs_softdep.c
10105
dirrem->dm_oldinum = dirrem->dm_dirinum;
sys/ufs/ffs/ffs_softdep.c
10109
if (inodedep_lookup(mp, dirrem->dm_oldinum, 0, &inodedep) == 0)
sys/ufs/ffs/ffs_softdep.c
10111
LIST_INSERT_HEAD(&inodedep->id_dirremhd, dirrem, dm_inonext);
sys/ufs/ffs/ffs_softdep.c
10124
return handle_workitem_remove(dirrem, flags);
sys/ufs/ffs/ffs_softdep.c
10126
WORKLIST_INSERT(&inodedep->id_inowait, &dirrem->dm_list);
sys/ufs/ffs/ffs_softdep.c
10343
struct dirrem *dirrem;
sys/ufs/ffs/ffs_softdep.c
10365
LIST_FOREACH(dirrem, &pagedep->pd_dirremhd, dm_next)
sys/ufs/ffs/ffs_softdep.c
10366
while ((jremref = LIST_FIRST(&dirrem->dm_jremrefhd)) != NULL)
sys/ufs/ffs/ffs_softdep.c
12343
struct dirrem *dirrem;
sys/ufs/ffs/ffs_softdep.c
12356
while ((dirrem = LIST_FIRST(&pagedep->pd_dirremhd)) != NULL) {
sys/ufs/ffs/ffs_softdep.c
12357
LIST_REMOVE(dirrem, dm_next);
sys/ufs/ffs/ffs_softdep.c
12358
dirrem->dm_state |= COMPLETE;
sys/ufs/ffs/ffs_softdep.c
12359
dirrem->dm_dirinum = pagedep->pd_ino;
sys/ufs/ffs/ffs_softdep.c
12360
KASSERT(LIST_EMPTY(&dirrem->dm_jremrefhd),
sys/ufs/ffs/ffs_softdep.c
12362
add_to_worklist(&dirrem->dm_list, 0);
sys/ufs/ffs/ffs_softdep.c
14335
struct dirrem *dirrem;
sys/ufs/ffs/ffs_softdep.c
14396
LIST_FOREACH(dirrem, &pagedep->pd_dirremhd, dm_next) {
sys/ufs/ffs/ffs_softdep.c
14397
if (LIST_FIRST(&dirrem->dm_jremrefhd)) {
sys/ufs/ffs/ffs_softdep.c
1772
struct dirrem *dirrem;
sys/ufs/ffs/ffs_softdep.c
1785
LIST_FOREACH(dirrem, &inodedep->id_dirremhd, dm_inonext) {
sys/ufs/ffs/ffs_softdep.c
1791
if (dirrem->dm_state & INPROGRESS) {
sys/ufs/ffs/ffs_softdep.c
1792
wait_worklist(&dirrem->dm_list, "pwrwait");
sys/ufs/ffs/ffs_softdep.c
1795
if ((dirrem->dm_state & (COMPLETE | ONWORKLIST)) ==
sys/ufs/ffs/ffs_softdep.c
1799
if (dirrem == NULL)
sys/ufs/ffs/ffs_softdep.c
1801
remove_from_worklist(&dirrem->dm_list);
sys/ufs/ffs/ffs_softdep.c
1805
handle_workitem_remove(dirrem, 0);
sys/ufs/ffs/ffs_softdep.c
4011
struct dirrem *dirrem;
sys/ufs/ffs/ffs_softdep.c
4025
dirrem = jremref->jr_dirrem;
sys/ufs/ffs/ffs_softdep.c
4029
jwork_insert(&dirrem->dm_jwork, jsegdep);
sys/ufs/ffs/ffs_softdep.c
4030
if (LIST_EMPTY(&dirrem->dm_jremrefhd) &&
sys/ufs/ffs/ffs_softdep.c
4031
(dirrem->dm_state & COMPLETE) != 0)
sys/ufs/ffs/ffs_softdep.c
4032
add_to_worklist(&dirrem->dm_list, 0);
sys/ufs/ffs/ffs_softdep.c
4294
newjremref(struct dirrem *dirrem,
sys/ufs/ffs/ffs_softdep.c
4307
jremref->jr_dirrem = dirrem;
sys/ufs/ffs/ffs_softdep.c
621
SOFTDEP_TYPE(DIRREM, dirrem, "Directory entry deleted");
sys/ufs/ffs/ffs_softdep.c
7423
struct dirrem *dirrem, *tmp;
sys/ufs/ffs/ffs_softdep.c
7432
LIST_FOREACH_SAFE(dirrem, &pagedep->pd_dirremhd, dm_next, tmp) {
sys/ufs/ffs/ffs_softdep.c
7434
if (dirrem->dm_offset < blkoff)
sys/ufs/ffs/ffs_softdep.c
7441
while ((jremref = LIST_FIRST(&dirrem->dm_jremrefhd)) != NULL) {
sys/ufs/ffs/ffs_softdep.c
7445
LIST_REMOVE(dirrem, dm_next);
sys/ufs/ffs/ffs_softdep.c
7446
dirrem->dm_dirinum = pagedep->pd_ino;
sys/ufs/ffs/ffs_softdep.c
7447
WORKLIST_INSERT(&freeblks->fb_freeworkhd, &dirrem->dm_list);
sys/ufs/ffs/ffs_softdep.c
766
static int handle_workitem_remove(struct dirrem *, int);
sys/ufs/ffs/ffs_softdep.c
767
static struct dirrem *newdirrem(struct buf *, struct inode *,
sys/ufs/ffs/ffs_softdep.c
768
struct inode *, bool, struct dirrem **);
sys/ufs/ffs/ffs_softdep.c
778
static struct jremref *cancel_diradd_dotdot(struct inode *, struct dirrem *,
sys/ufs/ffs/ffs_softdep.c
780
static struct jremref *cancel_mkdir_dotdot(struct inode *, struct dirrem *,
sys/ufs/ffs/ffs_softdep.c
782
static void cancel_diradd(struct diradd *, struct dirrem *, struct jremref *,
sys/ufs/ffs/ffs_softdep.c
784
static void dirrem_journal(struct dirrem *, struct jremref *, struct jremref *,
sys/ufs/ffs/ffs_softdep.c
805
static void journal_jremref(struct dirrem *, struct jremref *,
sys/ufs/ffs/ffs_softdep.c
894
static struct jremref *newjremref(struct dirrem *, struct inode *,
sys/ufs/ffs/ffs_softdep.c
9012
struct dirrem *dirrem,
sys/ufs/ffs/ffs_softdep.c
9045
&dirrem->dm_jwork) == 0) {
sys/ufs/ffs/ffs_softdep.c
9066
&dirrem->dm_jwork) == 0) {
sys/ufs/ffs/ffs_softdep.c
9072
&dirrem->dm_jwork) == 0) {
sys/ufs/ffs/ffs_softdep.c
9081
journal_jremref(dirrem, jremref, inodedep);
sys/ufs/ffs/ffs_softdep.c
9083
journal_jremref(dirrem, dotremref, inodedep);
sys/ufs/ffs/ffs_softdep.c
9085
journal_jremref(dirrem, dotdotremref, NULL);
sys/ufs/ffs/ffs_softdep.c
9086
jwork_move(&dirrem->dm_jwork, &dap->da_jwork);
sys/ufs/ffs/ffs_softdep.c
9087
free_diradd(dap, &dirrem->dm_jwork);
sys/ufs/ffs/ffs_softdep.c
9096
struct dirrem *dirrem;
sys/ufs/ffs/ffs_softdep.c
9110
dirrem = dap->da_previous;
sys/ufs/ffs/ffs_softdep.c
9111
pagedep = dirrem->dm_pagedep;
sys/ufs/ffs/ffs_softdep.c
9112
dirrem->dm_dirinum = pagedep->pd_ino;
sys/ufs/ffs/ffs_softdep.c
9113
dirrem->dm_state |= COMPLETE;
sys/ufs/ffs/ffs_softdep.c
9114
if (LIST_EMPTY(&dirrem->dm_jremrefhd))
sys/ufs/ffs/ffs_softdep.c
9115
add_to_worklist(&dirrem->dm_list, 0);
sys/ufs/ffs/ffs_softdep.c
9174
struct dirrem *dirrem, *prevdirrem;
sys/ufs/ffs/ffs_softdep.c
9187
dirrem = newdirrem(bp, dp, ip, isrmdir, &prevdirrem);
sys/ufs/ffs/ffs_softdep.c
9195
dirrem->dm_state |= ONDEPLIST;
sys/ufs/ffs/ffs_softdep.c
9196
LIST_INSERT_HEAD(&inodedep->id_dirremhd, dirrem, dm_inonext);
sys/ufs/ffs/ffs_softdep.c
9209
if ((dirrem->dm_state & COMPLETE) == 0) {
sys/ufs/ffs/ffs_softdep.c
9210
LIST_INSERT_HEAD(&dirrem->dm_pagedep->pd_dirremhd, dirrem,
sys/ufs/ffs/ffs_softdep.c
9215
LIST_INSERT_HEAD(&dirrem->dm_pagedep->pd_dirremhd,
sys/ufs/ffs/ffs_softdep.c
9217
dirrem->dm_dirinum = dirrem->dm_pagedep->pd_ino;
sys/ufs/ffs/ffs_softdep.c
9218
direct = LIST_EMPTY(&dirrem->dm_jremrefhd);
sys/ufs/ffs/ffs_softdep.c
9221
handle_workitem_remove(dirrem, 0);
sys/ufs/ffs/ffs_softdep.c
9251
struct dirrem *dirrem,
sys/ufs/ffs/ffs_softdep.c
9263
cancel_diradd(dap, dirrem, jremref, NULL, NULL);
sys/ufs/ffs/ffs_softdep.c
9268
LIST_FOREACH(wk, &dirrem->dm_jwork, wk_list)
sys/ufs/ffs/ffs_softdep.c
9281
struct dirrem *dirrem,
sys/ufs/ffs/ffs_softdep.c
9309
if (cancel_jaddref(jaddref, inodedep, &dirrem->dm_jwork)) {
sys/ufs/ffs/ffs_softdep.c
9310
journal_jremref(dirrem, jremref, inodedep);
sys/ufs/ffs/ffs_softdep.c
9322
journal_jremref(struct dirrem *dirrem,
sys/ufs/ffs/ffs_softdep.c
9331
LIST_INSERT_HEAD(&dirrem->dm_jremrefhd, jremref, jr_deps);
sys/ufs/ffs/ffs_softdep.c
9338
struct dirrem *dirrem,
sys/ufs/ffs/ffs_softdep.c
9348
journal_jremref(dirrem, jremref, inodedep);
sys/ufs/ffs/ffs_softdep.c
9350
journal_jremref(dirrem, dotremref, inodedep);
sys/ufs/ffs/ffs_softdep.c
9352
journal_jremref(dirrem, dotdotremref, NULL);
sys/ufs/ffs/ffs_softdep.c
9359
static struct dirrem *
sys/ufs/ffs/ffs_softdep.c
9365
struct dirrem **prevdirremp) /* previously referenced inode, if any */
sys/ufs/ffs/ffs_softdep.c
9370
struct dirrem *dirrem;
sys/ufs/ffs/ffs_softdep.c
9398
dirrem = malloc(sizeof(struct dirrem), M_DIRREM, M_SOFTDEP_FLAGS |
sys/ufs/ffs/ffs_softdep.c
9400
workitem_alloc(&dirrem->dm_list, D_DIRREM, dvp->v_mount);
sys/ufs/ffs/ffs_softdep.c
9401
LIST_INIT(&dirrem->dm_jremrefhd);
sys/ufs/ffs/ffs_softdep.c
9402
LIST_INIT(&dirrem->dm_jwork);
sys/ufs/ffs/ffs_softdep.c
9403
dirrem->dm_state = isrmdir ? RMDIR : 0;
sys/ufs/ffs/ffs_softdep.c
9404
dirrem->dm_oldinum = ip->i_number;
sys/ufs/ffs/ffs_softdep.c
9416
jremref = newjremref(dirrem, dp, ip, I_OFFSET(dp),
sys/ufs/ffs/ffs_softdep.c
9418
dotremref = newjremref(dirrem, ip, ip, DOT_OFFSET,
sys/ufs/ffs/ffs_softdep.c
9420
dotdotremref = newjremref(dirrem, ip, dp, DOTDOT_OFFSET,
sys/ufs/ffs/ffs_softdep.c
9424
jremref = newjremref(dirrem, dp, ip, I_OFFSET(dp),
sys/ufs/ffs/ffs_softdep.c
9432
dirrem->dm_pagedep = pagedep;
sys/ufs/ffs/ffs_softdep.c
9433
dirrem->dm_offset = offset;
sys/ufs/ffs/ffs_softdep.c
9443
jremref = cancel_mkdir_dotdot(dp, dirrem, jremref);
sys/ufs/ffs/ffs_softdep.c
9451
dotdotremref = cancel_diradd_dotdot(ip, dirrem, dotdotremref);
sys/ufs/ffs/ffs_softdep.c
9464
dirrem_journal(dirrem, jremref, dotremref,
sys/ufs/ffs/ffs_softdep.c
9466
return (dirrem);
sys/ufs/ffs/ffs_softdep.c
9490
dirrem->dm_state |= COMPLETE;
sys/ufs/ffs/ffs_softdep.c
9491
cancel_diradd(dap, dirrem, jremref, dotremref, dotdotremref);
sys/ufs/ffs/ffs_softdep.c
9496
LIST_FOREACH(wk, &dirrem->dm_jwork, wk_list)
sys/ufs/ffs/ffs_softdep.c
9502
return (dirrem);
sys/ufs/ffs/ffs_softdep.c
9532
struct dirrem *dirrem, *prevdirrem;
sys/ufs/ffs/ffs_softdep.c
9561
dirrem = newdirrem(bp, dp, ip, newparent != 0, &prevdirrem);
sys/ufs/ffs/ffs_softdep.c
9562
pagedep = dirrem->dm_pagedep;
sys/ufs/ffs/ffs_softdep.c
9576
dirrem->dm_state |= DIRCHG;
sys/ufs/ffs/ffs_softdep.c
9583
if ((dirrem->dm_state & COMPLETE) == 0) {
sys/ufs/ffs/ffs_softdep.c
9584
LIST_INSERT_HEAD(&pagedep->pd_dirremhd, dirrem,
sys/ufs/ffs/ffs_softdep.c
9587
dirrem->dm_dirinum = pagedep->pd_ino;
sys/ufs/ffs/ffs_softdep.c
9588
if (LIST_EMPTY(&dirrem->dm_jremrefhd))
sys/ufs/ffs/ffs_softdep.c
9589
add_to_worklist(&dirrem->dm_list, 0);
sys/ufs/ffs/ffs_softdep.c
9601
dirrem->dm_state |= ONDEPLIST;
sys/ufs/ffs/ffs_softdep.c
9602
LIST_INSERT_HEAD(&inodedep->id_dirremhd, dirrem, dm_inonext);
sys/ufs/ffs/ffs_softdep.c
9617
if ((dirrem->dm_state & COMPLETE) == 0) {
sys/ufs/ffs/ffs_softdep.c
9618
dap->da_previous = dirrem;
sys/ufs/ffs/ffs_softdep.c
9626
dirrem->dm_dirinum = pagedep->pd_ino;
sys/ufs/ffs/ffs_softdep.c
9627
if (LIST_EMPTY(&dirrem->dm_jremrefhd))
sys/ufs/ffs/ffs_softdep.c
9628
add_to_worklist(&dirrem->dm_list, 0);
sys/ufs/ffs/ffs_softdep.c
9999
handle_workitem_remove(struct dirrem *dirrem, int flags)
sys/ufs/ffs/softdep.h
233
#define WK_DIRREM(wk) ((struct dirrem *)(wk))
sys/ufs/ffs/softdep.h
251
LIST_HEAD(dirremhd, dirrem);
sys/ufs/ffs/softdep.h
691
struct dirrem *dau_previous; /* entry being replaced in dir change */
sys/ufs/ffs/softdep.h
742
LIST_ENTRY(dirrem) dm_next; /* pagedep's list of dirrem's */
sys/ufs/ffs/softdep.h
743
LIST_ENTRY(dirrem) dm_inonext; /* inodedep's list of dirrem's */
sys/ufs/ffs/softdep.h
843
struct dirrem *jr_dirrem; /* Back pointer to dirrem. */