pagedep
struct pagedep *pagedep;
pagedep_lookup(ip, lbn, DEPALLOC, &pagedep) == 0) {
WORKLIST_INSERT_BP(bp, &pagedep->pd_list);
struct pagedep *pagedep;
pagedep_lookup(ip, lbn, DEPALLOC, &pagedep) == 0)
WORKLIST_INSERT_BP(nbp, &pagedep->pd_list);
static int handle_written_filepage(struct pagedep *, struct buf *);
static void initiate_write_filepage(struct pagedep *, struct buf *);
struct pagedep *pagedep;
struct pagedep **);
pagedep = WK_PAGEDEP(wk);
LIST_FIRST(&pagedep->pd_diraddhd[i])))
while ((dap = LIST_FIRST(&pagedep->pd_pendinghd)) != NULL)
LIST_FOREACH(dirrem, &pagedep->pd_dirremhd, dm_next) {
dirrem->dm_dirinum = pagedep->pd_ino;
WORKLIST_REMOVE(&pagedep->pd_list);
LIST_REMOVE(pagedep, pd_hash);
WORKITEM_FREE(pagedep, D_PAGEDEP);
struct pagedep *pagedep;
if (pagedep_lookup(dp, lbn, DEPALLOC, &pagedep) == 0)
WORKLIST_INSERT_BP(bp, &pagedep->pd_list);
dap->da_pagedep = pagedep;
LIST_INSERT_HEAD(&pagedep->pd_diraddhd[DIRADDHASH(offset)], dap,
struct pagedep *pagedep;
if (pagedep_lookup(dp, lbn, 0, &pagedep) == 0)
LIST_FOREACH(dap, &pagedep->pd_diraddhd[DIRADDHASH(oldoffset)], da_pdlist) {
LIST_INSERT_HEAD(&pagedep->pd_diraddhd[DIRADDHASH(newoffset)],
LIST_FOREACH(dap, &pagedep->pd_pendinghd, da_pdlist) {
struct pagedep *pagedep;
pagedep = dap->da_pagedep;
pagedep = dirrem->dm_pagedep;
dirrem->dm_dirinum = pagedep->pd_ino;
if (inodedep_lookup(VFSTOUFS(pagedep->pd_mnt)->um_fs, dap->da_newinum,
struct pagedep *pagedep;
if (pagedep_lookup(dp, lbn, DEPALLOC, &pagedep) == 0)
WORKLIST_INSERT_BP(bp, &pagedep->pd_list);
dirrem->dm_pagedep = pagedep;
LIST_FOREACH(dap, &pagedep->pd_diraddhd[DIRADDHASH(offset)], da_pdlist)
LIST_FOREACH(dap, &pagedep->pd_pendinghd, da_pdlist)
dap->da_pagedep = pagedep;
struct pagedep *pagedep;
pagedep = dirrem->dm_pagedep;
LIST_INSERT_HEAD(&pagedep->pd_dirremhd, dirrem,
dirrem->dm_dirinum = pagedep->pd_ino;
dap->da_pagedep = pagedep;
dirrem->dm_dirinum = pagedep->pd_ino;
LIST_INSERT_HEAD(&pagedep->pd_pendinghd, dap, da_pdlist);
LIST_INSERT_HEAD(&pagedep->pd_diraddhd[DIRADDHASH(offset)],
initiate_write_filepage(struct pagedep *pagedep, struct buf *bp)
if (pagedep->pd_state & IOSTARTED) {
pagedep->pd_state |= IOSTARTED;
LIST_FOREACH(dap, &pagedep->pd_diraddhd[i], da_pdlist) {
struct pagedep *pagedep;
pagedep = dap->da_previous->dm_pagedep;
pagedep = dap->da_pagedep;
LIST_INSERT_HEAD(&pagedep->pd_pendinghd, dap, da_pdlist);
struct pagedep *pagedep;
pagedep = dap->da_previous->dm_pagedep;
pagedep = dap->da_pagedep;
LIST_INSERT_HEAD(&pagedep->pd_pendinghd, dap, da_pdlist);
handle_written_filepage(struct pagedep *pagedep, struct buf *bp)
if ((pagedep->pd_state & IOSTARTED) == 0) {
pagedep->pd_state &= ~IOSTARTED;
while ((dirrem = LIST_FIRST(&pagedep->pd_dirremhd)) != NULL) {
dirrem->dm_dirinum = pagedep->pd_ino;
while ((dap = LIST_FIRST(&pagedep->pd_pendinghd)) != NULL)
for (dap = LIST_FIRST(&pagedep->pd_diraddhd[i]); dap;
LIST_INSERT_HEAD(&pagedep->pd_pendinghd, dap,
if (LIST_FIRST(&pagedep->pd_pendinghd) == NULL) {
if (LIST_FIRST(&pagedep->pd_diraddhd[i]) != NULL)
LIST_REMOVE(pagedep, pd_hash);
WORKITEM_FREE(pagedep, D_PAGEDEP);
struct pagedep *pagedep;
pagedep = dap->da_previous->dm_pagedep;
pagedep = dap->da_pagedep;
mnt = pagedep->pd_mnt;
parentino = pagedep->pd_ino;
lbn = pagedep->pd_lbn;
struct pagedep *pagedep;
pagedep = WK_PAGEDEP(wk);
if (LIST_FIRST(&pagedep->pd_diraddhd[i]) == NULL)
pagedep->pd_mnt,
&pagedep->pd_diraddhd[i]))) {
struct pagedep *pagedep;
LIST_FOREACH(pagedep, pagedephd, pd_hash) {
if (LIST_FIRST(&pagedep->pd_dirremhd) == NULL)
mp = pagedep->pd_mnt;
ino = pagedep->pd_ino;
struct pagedep *pagedep;
pagedep = WK_PAGEDEP(wk);
LIST_FOREACH(dap, &pagedep->pd_diraddhd[i], da_pdlist) {
LIST_HEAD(pagedep_hashhead, pagedep) *pagedep_hashtbl;
struct pagedep *
struct pagedep *pagedep;
LIST_FOREACH(pagedep, pagedephd, pd_hash) {
if (ino == pagedep->pd_ino &&
lbn == pagedep->pd_lbn &&
mp == pagedep->pd_mnt) {
return (pagedep);
struct pagedep **pagedeppp)
struct pagedep *pagedep;
pagedep = kmalloc(sizeof(struct pagedep), M_PAGEDEP,
kfree(pagedep, M_PAGEDEP);
pagedep->pd_list.wk_type = D_PAGEDEP;
pagedep->pd_mnt = mp;
pagedep->pd_ino = ip->i_number;
pagedep->pd_lbn = lbn;
LIST_INIT(&pagedep->pd_dirremhd);
LIST_INIT(&pagedep->pd_pendinghd);
LIST_INIT(&pagedep->pd_diraddhd[i]);
LIST_INSERT_HEAD(pagedephd, pagedep, pd_hash);
*pagedeppp = pagedep;
#define WK_PAGEDEP(wk) ((struct pagedep *)(wk))
LIST_ENTRY(pagedep) pd_hash; /* hashed lookup */
struct pagedep *dau_pagedep; /* pagedep dependency for addition */
struct pagedep *dmu_pagedep; /* pagedep dependency for remove */