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:
Konstantin Belousov 2008-10-21 09:55:49 +00:00
parent a51ac24407
commit 3ba28ace77
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=184118

View File

@ -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);
}