Page MenuHomeFreeBSD

D31450.diff
No OneTemporary

D31450.diff

diff --git a/sys/kern/vfs_mount.c b/sys/kern/vfs_mount.c
--- a/sys/kern/vfs_mount.c
+++ b/sys/kern/vfs_mount.c
@@ -2084,10 +2084,15 @@
* just re-enqueue on the end of the taskqueue.
*/
if ((flags & MNT_DEFERRED) == 0) {
- while (!TAILQ_EMPTY(&mp->mnt_uppers)) {
+ while (error == 0 && !TAILQ_EMPTY(&mp->mnt_uppers)) {
mp->mnt_kern_flag |= MNTK_TASKQUEUE_WAITER;
- msleep(&mp->mnt_taskqueue_link, MNT_MTX(mp), 0,
- "umntqw", 0);
+ error = msleep(&mp->mnt_taskqueue_link,
+ MNT_MTX(mp), PCATCH, "umntqw", 0);
+ }
+ if (error != 0) {
+ MNT_REL(mp);
+ MNT_IUNLOCK(mp);
+ return (error);
}
} else if (!TAILQ_EMPTY(&mp->mnt_uppers)) {
MNT_IUNLOCK(mp);

File Metadata

Mime Type
text/plain
Expires
Thu, Jan 16, 10:15 AM (20 h, 4 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15823875
Default Alt Text
D31450.diff (711 B)

Event Timeline