aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2021-06-15 10:23:44 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2021-06-23 20:47:05 +0000
commit2126f103e0434db6ca34f0a5167bf5f03d4f02ad (patch)
tree45b570a1ac781696997f36977f252169b6c2acd7
parent64b494a1050ae2cf2412edc19b57dc80f49eeda1 (diff)
downloadsrc-2126f103e0434db6ca34f0a5167bf5f03d4f02ad.tar.gz
src-2126f103e0434db6ca34f0a5167bf5f03d4f02ad.zip
ffs_softdep.c: add journal_check_space() helper
Reviewed by: mckusick Discussed with: markj Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 2 weeks Differential revision: https://reviews.freebsd.org/D30041
-rw-r--r--sys/ufs/ffs/ffs_softdep.c31
1 files changed, 16 insertions, 15 deletions
diff --git a/sys/ufs/ffs/ffs_softdep.c b/sys/ufs/ffs/ffs_softdep.c
index d274e0898dfb..efb63d94af31 100644
--- a/sys/ufs/ffs/ffs_softdep.c
+++ b/sys/ufs/ffs/ffs_softdep.c
@@ -3222,6 +3222,19 @@ journal_unsuspend(struct ufsmount *ump)
return (0);
}
+static void
+journal_check_space(ump)
+ struct ufsmount *ump;
+{
+ LOCK_OWNED(ump);
+
+ if (journal_space(ump, 0) == 0) {
+ softdep_speedup(ump);
+ if (journal_space(ump, 1) == 0)
+ journal_suspend(ump);
+ }
+}
+
/*
* Called before any allocation function to be certain that there is
* sufficient space in the journal prior to creating any new records.
@@ -3272,11 +3285,7 @@ softdep_prealloc(vp, waitok)
ACQUIRE_LOCK(ump);
process_removes(vp);
process_truncates(vp);
- if (journal_space(ump, 0) == 0) {
- softdep_speedup(ump);
- if (journal_space(ump, 1) == 0)
- journal_suspend(ump);
- }
+ journal_check_space(ump);
FREE_LOCK(ump);
return (0);
@@ -3363,11 +3372,7 @@ softdep_prerename(fdvp, fvp, tdvp, tvp)
ACQUIRE_LOCK(ump);
softdep_speedup(ump);
process_worklist_item(UFSTOVFS(ump), 2, LK_NOWAIT);
- if (journal_space(ump, 0) == 0) {
- softdep_speedup(ump);
- if (journal_space(ump, 1) == 0)
- journal_suspend(ump);
- }
+ journal_check_space(ump);
FREE_LOCK(ump);
return (ERELOOKUP);
}
@@ -3460,11 +3465,7 @@ softdep_prelink(dvp, vp, cnp)
softdep_speedup(ump);
process_worklist_item(UFSTOVFS(ump), 2, LK_NOWAIT);
- if (journal_space(ump, 0) == 0) {
- softdep_speedup(ump);
- if (journal_space(ump, 1) == 0)
- journal_suspend(ump);
- }
+ journal_check_space(ump);
FREE_LOCK(ump);
vn_lock_pair(dvp, false, vp, false);