Change vn_start_write() to clear *mpp on all failures when non-NULL vp
is supplied, since vm_pageout_scan() expects it to be cleared on error. Submitted by: tegge PR: 123768 MFC after: 1 week
This commit is contained in:
parent
a51ac24407
commit
3ba28ace77
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=184118
@ -967,12 +967,17 @@ vn_start_write(vp, mpp, flags)
|
||||
while ((mp->mnt_kern_flag & MNTK_SUSPEND) != 0) {
|
||||
if (flags & V_NOWAIT) {
|
||||
error = EWOULDBLOCK;
|
||||
if (vp != NULL)
|
||||
*mpp = NULL;
|
||||
goto unlock;
|
||||
}
|
||||
error = msleep(&mp->mnt_flag, MNT_MTX(mp),
|
||||
(PUSER - 1) | (flags & PCATCH), "suspfs", 0);
|
||||
if (error)
|
||||
if (error) {
|
||||
if (vp != NULL)
|
||||
*mpp = NULL;
|
||||
goto unlock;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (flags & V_XSLEEP)
|
||||
@ -1028,6 +1033,8 @@ vn_start_secondary_write(vp, mpp, flags)
|
||||
if (flags & V_NOWAIT) {
|
||||
MNT_REL(mp);
|
||||
MNT_IUNLOCK(mp);
|
||||
if (vp != NULL)
|
||||
*mpp = NULL;
|
||||
return (EWOULDBLOCK);
|
||||
}
|
||||
/*
|
||||
@ -1038,6 +1045,8 @@ vn_start_secondary_write(vp, mpp, flags)
|
||||
vfs_rel(mp);
|
||||
if (error == 0)
|
||||
goto retry;
|
||||
if (vp != NULL)
|
||||
*mpp = NULL;
|
||||
return (error);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user