diff options
author | Eric Wong <e@80x24.org> | 2016-12-24 08:50:34 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2016-12-24 08:50:34 +0000 |
commit | 1333a3de16d7a9192286195da241ef195dbc556a (patch) | |
tree | ca8f4e452d6df07a5233b6b703b7a0ba17c72220 | |
parent | eb41c7abde797e03dd51c0bc945f0298d0fe235c (diff) | |
download | cmogstored-1333a3de16d7a9192286195da241ef195dbc556a.tar.gz |
Let's not forget about this queue, it is a useful design.
-rw-r--r-- | cmogstored.h | 10 | ||||
-rw-r--r-- | ioq.c | 4 |
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 { @@ -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 |