about summary refs log tree commit homepage
path: root/svc_dev.c
diff options
context:
space:
mode:
Diffstat (limited to 'svc_dev.c')
-rw-r--r--svc_dev.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/svc_dev.c b/svc_dev.c
index 47a67da..8786a50 100644
--- a/svc_dev.c
+++ b/svc_dev.c
@@ -4,6 +4,7 @@
  */
 #include "cmogstored.h"
 #include "compat_memstream.h"
+static size_t ndev;
 
 /*
  * maps multiple "devXXX" directories to the device.
@@ -135,7 +136,9 @@ static int svc_scandev(struct mog_svc *svc, size_t *nr, mog_scandev_cb cb)
                 devlist = svc_devlist(svc, dev->st_dev);
                 devhash = devlist->by_mogdevid;
 
-                if (cb) rc |= cb(dev, svc); /* mog_dev_mkusage */
+                if (cb)
+                        rc |= cb(dev, svc); /* mog_dev_mkusage */
+
                 switch (hash_insert_if_absent(devhash, dev, NULL)) {
                 case 0:
                         free(dev);
@@ -291,11 +294,15 @@ static bool svc_mkusage_each(void *svc, void *nr)
         return true;
 }
 
-size_t mog_mkusage_all(void)
+size_t mog_mkusage_all(struct mog_queue *q)
 {
-        size_t nr = 0;
+        size_t ndev_new = 0;
+
+        mog_svc_each(svc_mkusage_each, &ndev_new);
 
-        mog_svc_each(svc_mkusage_each, &nr);
+        if (q && ndev_new != ndev)
+                mog_thrpool_update(q, ndev, ndev_new);
+        ndev = ndev_new;
 
-        return nr;
+        return ndev;
 }