diff --git a/kmod/src/server.c b/kmod/src/server.c index 46d50b54..2593ef1a 100644 --- a/kmod/src/server.c +++ b/kmod/src/server.c @@ -1966,9 +1966,7 @@ static int server_srch_get_compact(struct super_block *sb, ret = scoutfs_srch_get_compact(sb, &server->alloc, &server->wri, &super->srch_root, rid, sc); mutex_unlock(&server->srch_mutex); - if (ret == 0 && sc->nr == 0) - ret = -ENOENT; - if (ret < 0) + if (ret < 0 || (ret == 0 && sc->nr == 0)) goto apply; mutex_lock(&server->alloc_mutex); diff --git a/kmod/src/srch.c b/kmod/src/srch.c index 36385ad9..49eb27b7 100644 --- a/kmod/src/srch.c +++ b/kmod/src/srch.c @@ -2179,7 +2179,7 @@ out: scoutfs_block_writer_forget_all(sb, &wri); if (!atomic_read(&srinf->shutdown)) { - delay = ret == 0 ? 0 : msecs_to_jiffies(SRCH_COMPACT_DELAY_MS); + delay = (sc->nr > 0 && ret == 0) ? 0 : msecs_to_jiffies(SRCH_COMPACT_DELAY_MS); queue_delayed_work(srinf->workq, &srinf->compact_dwork, delay); }