about summary refs log tree commit homepage
path: root/cmogstored.h
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2013-06-21 03:34:21 +0000
committerEric Wong <normalperson@yhbt.net>2013-06-25 21:27:53 +0000
commitd5a52618ca1f9b5d7f6998716fbfe7714f927112 (patch)
tree927845365d19c847368b4f678e39697303802bf1 /cmogstored.h
parent03c2391078e19dc36ea62c75fa6745569b5cbef6 (diff)
downloadcmogstored-d5a52618ca1f9b5d7f6998716fbfe7714f927112.tar.gz
We're using per-svc-based thread pools, so different MogileFS
instances we serve no longer affect each other.  This means
changing the aio_threads count only affects the svc of the
sidechannel port which triggered the change.
Diffstat (limited to 'cmogstored.h')
-rw-r--r--cmogstored.h15
1 files changed, 12 insertions, 3 deletions
diff --git a/cmogstored.h b/cmogstored.h
index 0b5a7bf..fd10e6d 100644
--- a/cmogstored.h
+++ b/cmogstored.h
@@ -139,6 +139,7 @@ struct mog_svc {
         int docroot_fd;
         const char *docroot;
         size_t nmogdev;
+        size_t user_set_aio_threads; /* only touched by main/notify thread */
 
         /* private */
         DIR *dir;
@@ -332,6 +333,10 @@ struct mog_svc *mog_svc_new(const char *docroot);
 typedef int (*mog_scandev_cb)(const struct mog_dev *, struct mog_svc *);
 size_t mog_svc_each(Hash_processor processor, void *data);
 void mog_svc_upgrade_prepare(void);
+bool mog_svc_start_each(void *svc_ptr, void *have_mgmt_ptr);
+void mog_svc_thrpool_rescale(struct mog_svc *, size_t ndev_new);
+void mog_svc_aio_threads_enqueue(struct mog_svc *, size_t nr);
+void mog_svc_aio_threads_handler(void);
 
 /* dev.c */
 struct mog_dev * mog_dev_for(struct mog_svc *, uint32_t mog_devid);
@@ -392,10 +397,8 @@ char *mog_canonpath_die(const char *path, enum canonicalize_mode_t canon_mode);
 void mog_thrpool_start(struct mog_thrpool *, size_t n,
                        void *(*start_fn)(void *), void *arg);
 void mog_thrpool_quit(struct mog_thrpool *, struct mog_queue *);
-void mog_thrpool_set_n_threads(struct mog_queue *q, size_t size);
 void mog_thrpool_process_queue(void);
-void mog_thrpool_update(struct mog_queue *, size_t ndev_old, size_t ndev_new);
-extern size_t mog_user_set_aio_threads;
+void mog_thrpool_set_size(struct mog_thrpool *, size_t size);
 
 /* mgmt.c */
 void mog_mgmt_writev(struct mog_mgmt *, struct iovec *, int iovcnt);
@@ -530,6 +533,12 @@ void mog_iou_active(dev_t);
 #  define MOG_TCP_NOPUSH (0)
 #endif
 
+/* publically visible attributes of the current process */
+struct mog_main {
+        unsigned long worker_processes;
+        bool have_mgmt;
+};
+
 /* cmogstored.c */
 void cmogstored_quit(void);