summaryrefslogtreecommitdiffstats
path: root/sys/kern/vfs_vnops.c
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2014-11-21 10:22:54 +0000
committerkib <kib@FreeBSD.org>2014-11-21 10:22:54 +0000
commit76e2f9a8d7bda9826faa9d78d98ddd4d2248e5c1 (patch)
tree3ff773a42c1807394fb4730205ff176c3d7a5dae /sys/kern/vfs_vnops.c
parente86b237c8dc304ffad8ca1227714c1422163b9be (diff)
downloadFreeBSD-src-76e2f9a8d7bda9826faa9d78d98ddd4d2248e5c1.zip
FreeBSD-src-76e2f9a8d7bda9826faa9d78d98ddd4d2248e5c1.tar.gz
MFC r274501:
In vfs_write_suspend_umnt(), if suspension cannot be established, do not forget to restore write ops count when returning the error.
Diffstat (limited to 'sys/kern/vfs_vnops.c')
-rw-r--r--sys/kern/vfs_vnops.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c
index 8085128..c1b6558 100644
--- a/sys/kern/vfs_vnops.c
+++ b/sys/kern/vfs_vnops.c
@@ -1849,8 +1849,10 @@ vfs_write_suspend_umnt(struct mount *mp)
for (;;) {
vn_finished_write(mp);
error = vfs_write_suspend(mp, 0);
- if (error != 0)
+ if (error != 0) {
+ vn_start_write(NULL, &mp, V_WAIT);
return (error);
+ }
MNT_ILOCK(mp);
if ((mp->mnt_kern_flag & MNTK_SUSPENDED) != 0)
break;
OpenPOWER on IntegriCloud