diff --git a/Makefile b/Makefile index 11567ec..c856be8 100644 --- a/Makefile +++ b/Makefile @@ -28,6 +28,11 @@ test: lib src scripts/beesd: scripts/beesd.in sed -e's#@LIBEXEC_PREFIX@#$(LIBEXEC_PREFIX)#' -e's#@PREFIX@#$(PREFIX)#' "$<" >"$@" +scripts/beesd@.service: scripts/beesd@.service.in + sed -e's#@LIBEXEC_PREFIX@#$(LIBEXEC_PREFIX)#' -e's#@PREFIX@#$(PREFIX)#' "$<" >"$@" + +scripts: scripts/beesd scripts/beesd@.service + README.html: README.md $(MARKDOWN) README.md > README.html.new mv -f README.html.new README.html @@ -35,10 +40,10 @@ README.html: README.md install: ## Install bees + libs install: lib src test install -Dm644 lib/libcrucible.so $(PREFIX)/usr/lib/libcrucible.so - install -Dm755 bin/bees $(LIBEXEC_PREFIX)/bees + install -Dm755 bin/bees $(LIBEXEC_PREFIX)/bees install_scripts: ## Install scipts -install_scripts: scripts/beesd +install_scripts: install -Dm755 scripts/beesd $(PREFIX)/usr/sbin/beesd install -Dm644 scripts/beesd.conf.sample $(PREFIX)/etc/bees/beesd.conf.sample install -Dm644 scripts/beesd@.service $(PREFIX)/lib/systemd/system/beesd@.service diff --git a/include/crucible/error.h b/include/crucible/error.h index 0b57869..170b5ba 100644 --- a/include/crucible/error.h +++ b/include/crucible/error.h @@ -100,12 +100,6 @@ namespace crucible { } while (0) // macros for checking a constraint -#define CHECK_CONSTRAINT(value, expr) do { \ - if (!(expr)) { \ - THROW_ERROR(out_of_range, #value << " = " << value << " failed constraint check (" << #expr << ")"); \ - } \ -} while(0) - #define THROW_CHECK0(type, expr) do { \ if (!(expr)) { \ THROW_ERROR(type, "failed constraint check (" << #expr << ")"); \ diff --git a/lib/fs.cc b/lib/fs.cc index 366934f..5e49544 100644 --- a/lib/fs.cc +++ b/lib/fs.cc @@ -625,7 +625,7 @@ namespace crucible { void Fiemap::do_ioctl(int fd) { - CHECK_CONSTRAINT(m_min_count, m_min_count <= m_max_count); + THROW_CHECK1(out_of_range, m_min_count, m_min_count <= m_max_count); auto extent_count = m_min_count; vector ioctl_arg = vector_copy_struct(this); diff --git a/scripts/beesd@.service b/scripts/beesd@.service.in similarity index 100% rename from scripts/beesd@.service rename to scripts/beesd@.service.in diff --git a/src/bees-context.cc b/src/bees-context.cc index 4881fa7..0b77535 100644 --- a/src/bees-context.cc +++ b/src/bees-context.cc @@ -425,6 +425,7 @@ BeesContext::scan_one_extent(const BeesFileRange &bfr, const Extent &e) if (found_addr.is_toxic()) { BEESINFO("WORKAROUND: abandoned toxic match for hash " << hash << " addr " << found_addr); // Don't push these back in because we'll never delete them. + // Extents may become non-toxic so give them a chance to expire. // hash_table->push_front_hash_addr(hash, found_addr); BEESCOUNT(scan_toxic_hash); return bfr; @@ -441,12 +442,10 @@ BeesContext::scan_one_extent(const BeesFileRange &bfr, const Extent &e) if (resolved.is_toxic()) { BEESINFO("WORKAROUND: abandoned toxic match at found_addr " << found_addr << " matching bbd " << bbd); BEESCOUNT(scan_toxic_match); -#if 0 - // Don't push these back in because we'll never delete them. - // Make sure we never see this hash again + // Make sure we never see this hash again. + // It has become toxic since it was inserted into the hash table. found_addr.set_toxic(); hash_table->push_front_hash_addr(hash, found_addr); -#endif abandon_extent = true; } else if (!resolved.count()) { BEESCOUNT(scan_resolve_zero);