summaryrefslogtreecommitdiffstats
path: root/sys/ufs/ffs
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2014-11-09 09:44:09 +0000
committerkib <kib@FreeBSD.org>2014-11-09 09:44:09 +0000
commit7c9ec90843493356cf3128f211ec4948d839de27 (patch)
treee7c4fd1f12496860ddc6ee08de363a9922210348 /sys/ufs/ffs
parentcdce53b9454fba39d0ec7a81aeb5e12f8a38ee63 (diff)
downloadFreeBSD-src-7c9ec90843493356cf3128f211ec4948d839de27.zip
FreeBSD-src-7c9ec90843493356cf3128f211ec4948d839de27.tar.gz
MFC r273967:
Only trigger a panic when forced operation is done. Convert direct panic() call into KASSERT().
Diffstat (limited to 'sys/ufs/ffs')
-rw-r--r--sys/ufs/ffs/ffs_softdep.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/sys/ufs/ffs/ffs_softdep.c b/sys/ufs/ffs/ffs_softdep.c
index f958f5c..98c35ba 100644
--- a/sys/ufs/ffs/ffs_softdep.c
+++ b/sys/ufs/ffs/ffs_softdep.c
@@ -735,7 +735,7 @@ static struct malloc_type *memtype[] = {
static void check_clear_deps(struct mount *);
static void softdep_error(char *, int);
static int softdep_process_worklist(struct mount *, int);
-static int softdep_waitidle(struct mount *);
+static int softdep_waitidle(struct mount *, int);
static void drain_output(struct vnode *);
static struct buf *getdirtybuf(struct buf *, struct rwlock *, int);
static void clear_remove(struct mount *);
@@ -1911,7 +1911,7 @@ softdep_flushworklist(oldmnt, countp, td)
}
static int
-softdep_waitidle(struct mount *mp)
+softdep_waitidle(struct mount *mp, int flags __unused)
{
struct ufsmount *ump;
int error;
@@ -1921,8 +1921,9 @@ softdep_waitidle(struct mount *mp)
ACQUIRE_LOCK(ump);
for (i = 0; i < 10 && ump->softdep_deps; i++) {
ump->softdep_req = 1;
- if (ump->softdep_on_worklist)
- panic("softdep_waitidle: work added after flush.");
+ KASSERT((flags & FORCECLOSE) == 0 ||
+ ump->softdep_on_worklist == 0,
+ ("softdep_waitidle: work added after flush"));
msleep(&ump->softdep_deps, LOCK_PTR(ump), PVM, "softdeps", 1);
}
ump->softdep_req = 0;
@@ -1990,7 +1991,7 @@ retry_flush:
error = EBUSY;
}
if (!error)
- error = softdep_waitidle(oldmnt);
+ error = softdep_waitidle(oldmnt, flags);
if (!error) {
if (oldmnt->mnt_kern_flag & MNTK_UNMOUNT) {
retry = 0;
OpenPOWER on IntegriCloud