about summary refs log tree commit homepage
path: root/cmogstored.h
diff options
context:
space:
mode:
Diffstat (limited to 'cmogstored.h')
-rw-r--r--cmogstored.h12
1 files changed, 9 insertions, 3 deletions
diff --git a/cmogstored.h b/cmogstored.h
index db87ac0..61a7ffc 100644
--- a/cmogstored.h
+++ b/cmogstored.h
@@ -109,6 +109,10 @@ struct mog_wbuf;
 struct mog_dev {
         dev_t st_dev;
         uint32_t devid;
+        pthread_mutex_t usage_lock; /* protects usage_txt */
+        unsigned usage_len;
+        char *usage_txt;
+        time_t usage_mtime;
         struct mog_ioq ioq; /* normal requests */
         struct mog_ioq fsckq; /* low-priority for MogileFS fsck */
 };
@@ -206,8 +210,9 @@ struct mog_http {
                 unsigned has_range:1;         /* for GET */
                 unsigned bad_range:1;
                 unsigned skip_rbuf_defer:1;
+                unsigned usage_txt:1;
                 enum mog_chunk_state chunk_state:2;
-                unsigned unused_padding:2;
+                unsigned unused_padding:1;
                 uint8_t path_tip;
                 uint8_t path_end;
                 uint16_t line_end;
@@ -374,7 +379,7 @@ void mog_set_maxconns(unsigned long);
 
 /* svc.c */
 struct mog_svc *mog_svc_new(const char *docroot);
-typedef int (*mog_scandev_cb)(const struct mog_dev *, struct mog_svc *);
+typedef int (*mog_scandev_cb)(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);
@@ -385,12 +390,13 @@ bool mog_svc_atfork_child(void *svc_ptr, void *parent);
 
 /* dev.c */
 struct mog_dev *mog_dev_for(struct mog_svc *, uint32_t mog_devid, bool update);
-int mog_dev_mkusage(const struct mog_dev *, struct mog_svc *);
+int mog_dev_mkusage(struct mog_dev *, struct mog_svc *);
 size_t mog_dev_hash(const void *, size_t tablesize);
 bool mog_dev_cmp(const void *a, const void *b);
 void mog_dev_free(void *devptr);
 bool mog_dev_user_rescale_i(void *devp, void *svcp);
 bool mog_dev_requeue_prepare(void *devp, void *ign);
+void mog_dev_usage_update(struct mog_dev *, struct mog_svc *);
 
 /* valid_path.rl */
 int mog_valid_path(const char *buf, size_t len);