Changeset View
Changeset View
Standalone View
Standalone View
sys/fs/smbfs/smbfs_io.c
Show First 20 Lines • Show All 644 Lines • ▼ Show 20 Lines | while (np->n_flag & NFLUSHINPROG) { | ||||
np->n_flag |= NFLUSHWANT; | np->n_flag |= NFLUSHWANT; | ||||
error = tsleep(&np->n_flag, PRIBIO + 2, "smfsvinv", 2 * hz); | error = tsleep(&np->n_flag, PRIBIO + 2, "smfsvinv", 2 * hz); | ||||
error = smb_td_intr(td); | error = smb_td_intr(td); | ||||
if (error == EINTR) | if (error == EINTR) | ||||
return EINTR; | return EINTR; | ||||
} | } | ||||
np->n_flag |= NFLUSHINPROG; | np->n_flag |= NFLUSHINPROG; | ||||
if (vp->v_bufobj.bo_object != NULL) { | if (vp->v_object != NULL) { | ||||
VM_OBJECT_WLOCK(vp->v_bufobj.bo_object); | VM_OBJECT_WLOCK(vp->v_object); | ||||
vm_object_page_clean(vp->v_bufobj.bo_object, 0, 0, OBJPC_SYNC); | vm_object_page_clean(vp->v_object, 0, 0, OBJPC_SYNC); | ||||
VM_OBJECT_WUNLOCK(vp->v_bufobj.bo_object); | VM_OBJECT_WUNLOCK(vp->v_object); | ||||
} | } | ||||
error = vinvalbuf(vp, V_SAVE, PCATCH, 0); | error = vinvalbuf(vp, V_SAVE, PCATCH, 0); | ||||
while (error) { | while (error) { | ||||
if (error == ERESTART || error == EINTR) { | if (error == ERESTART || error == EINTR) { | ||||
np->n_flag &= ~NFLUSHINPROG; | np->n_flag &= ~NFLUSHINPROG; | ||||
if (np->n_flag & NFLUSHWANT) { | if (np->n_flag & NFLUSHWANT) { | ||||
np->n_flag &= ~NFLUSHWANT; | np->n_flag &= ~NFLUSHWANT; | ||||
Show All 13 Lines |