about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2016-12-24 08:50:34 +0000
committerEric Wong <e@80x24.org>2016-12-24 08:50:34 +0000
commit1333a3de16d7a9192286195da241ef195dbc556a (patch)
treeca8f4e452d6df07a5233b6b703b7a0ba17c72220
parenteb41c7abde797e03dd51c0bc945f0298d0fe235c (diff)
downloadcmogstored-1333a3de16d7a9192286195da241ef195dbc556a.tar.gz
Let's not forget about this queue, it is a useful design.
-rw-r--r--cmogstored.h10
-rw-r--r--ioq.c4
2 files changed, 7 insertions, 7 deletions
diff --git a/cmogstored.h b/cmogstored.h
index f5c682e..db87ac0 100644
--- a/cmogstored.h
+++ b/cmogstored.h
@@ -99,18 +99,18 @@ enum mog_next {
 struct mog_ioq {
         unsigned cur;
         unsigned max;
-        pthread_mutex_t mtx;
+        pthread_mutex_t mtx; /* protects cur, max, ioq_head */
         SIMPLEQ_HEAD(ioq_head, mog_fd) ioq_head;
-        bool contended;
-        struct mog_svc *svc;
+        bool contended; /* hint, not protected */
+        struct mog_svc *svc; /* initialized once at creation */
 };
 
 struct mog_wbuf;
 struct mog_dev {
         dev_t st_dev;
         uint32_t devid;
-        struct mog_ioq ioq;
-        struct mog_ioq fsckq;
+        struct mog_ioq ioq; /* normal requests */
+        struct mog_ioq fsckq; /* low-priority for MogileFS fsck */
 };
 
 struct mog_rbuf {
diff --git a/ioq.c b/ioq.c
index c515a8b..9408786 100644
--- a/ioq.c
+++ b/ioq.c
@@ -37,7 +37,7 @@
  *                                 |                   /
  *                                 `---------<---------'
  *
- * mog_ioq_next is automatically called when releases a regular file.
+ * mog_ioq_next is automatically called when a thread releases a regular file.
  */
 __thread struct mog_ioq *mog_ioq_current;
 
@@ -140,7 +140,7 @@ void mog_ioq_next(struct mog_ioq *check_ioq)
                 mog_activeq_push(mog_ioq_current->svc->queue, mfd);
         }
         /*
-         * We may not touch or use client_mfd here anymore.  Another
+         * We may not touch mfd after mog_activeq_push.  Another
          * thread may already have it.  In the worst case, it's been
          * closed due to epoll/kqueue running out-of-space and another
          * system call (open/accept) may have already reused the FD