diff options
author | Eric Wong <normalperson@yhbt.net> | 2013-06-21 03:34:21 +0000 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2013-06-25 21:27:53 +0000 |
commit | d5a52618ca1f9b5d7f6998716fbfe7714f927112 (patch) | |
tree | 927845365d19c847368b4f678e39697303802bf1 /cmogstored.h | |
parent | 03c2391078e19dc36ea62c75fa6745569b5cbef6 (diff) | |
download | cmogstored-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.h | 15 |
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); |