Re: [patch tabled 1/8] Shuffle fields of storage nodes

2010-12-07 Thread Jeff Garzik

On 11/28/2010 08:39 PM, Pete Zaitcev wrote:

This helps copy-paste safer later, mostly.

Signed-off-by: Pete Zaitcevzait...@redhat.com

---
  server/object.c  |2 -
  server/storage.c |   79 ++---
  server/tabled.h  |   12 +++---
  3 files changed, 53 insertions(+), 40 deletions(-)


applied 1-5

Gonna give the file backend a cursory test, and swift backend a 
slightly-more-than-cursory test, then merge those.


Well done!  Pluggable storage backends make tabled more interesting.


--
To unsubscribe from this list: send the line unsubscribe hail-devel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[patch tabled 1/8] Shuffle fields of storage nodes

2010-11-28 Thread Pete Zaitcev
This helps copy-paste safer later, mostly.

Signed-off-by: Pete Zaitcev zait...@redhat.com

---
 server/object.c  |2 -
 server/storage.c |   79 ++---
 server/tabled.h  |   12 +++---
 3 files changed, 53 insertions(+), 40 deletions(-)

commit 2d0645834468ea056223bee52d679c983945ce65
Author: Pete Zaitcev zait...@yahoo.com
Date:   Thu Nov 11 11:24:00 2010 -0700

Field rearrangements. Layering violation improvement.

diff --git a/server/object.c b/server/object.c
index 71d5377..2920811 100644
--- a/server/object.c
+++ b/server/object.c
@@ -1008,7 +1008,7 @@ static bool object_get_poke(struct client *cli)
ssize_t bytes;
 
/* The checks for in_len in caller should protect us, but let's see. */
-   if (!cli-in_ce.stc) {
+   if (!cli-in_ce.key) {
applog(LOG_ERR, read on closed chunk, in_len %ld,
   (long) cli-in_len);
return false;
diff --git a/server/storage.c b/server/storage.c
index fc232ba..c472961 100644
--- a/server/storage.c
+++ b/server/storage.c
@@ -91,8 +91,8 @@ static void stor_read_event(int fd, short events, void 
*userdata)
struct open_chunk *cep = userdata;
 
cep-r_armed = false;   /* no EV_PERSIST */
-   if (cep-rcb)
-   (*cep-rcb)(cep);
+   if (cep-ocb)
+   (*cep-ocb)(cep);
 }
 
 static void stor_write_event(int fd, short events, void *userdata)
@@ -100,8 +100,8 @@ static void stor_write_event(int fd, short events, void 
*userdata)
struct open_chunk *cep = userdata;
 
cep-w_armed = false;   /* no EV_PERSIST */
-   if (cep-wcb)
-   (*cep-wcb)(cep);
+   if (cep-ocb)
+   (*cep-ocb)(cep);
 }
 
 /*
@@ -131,6 +131,8 @@ int stor_put_start(struct open_chunk *cep, void 
(*cb)(struct open_chunk *),
 {
char stckey[STOR_KEY_SLEN+1];
 
+   if (cep-key)
+   return -EBUSY;
if (!cep-stc)
return -EINVAL;
 
@@ -145,9 +147,10 @@ int stor_put_start(struct open_chunk *cep, void 
(*cb)(struct open_chunk *),
   cep-node-id, stckey, (long long) size);
return -EIO;
}
-   cep-wtogo = size;
-   cep-wkey = key;
-   cep-wcb = cb;
+   cep-size = size;
+   cep-done = 0;
+   cep-key = key;
+   cep-ocb = cb;
event_set(cep-wevt, cep-wfd, EV_WRITE, stor_write_event, cep);
event_base_set(cep-evbase, cep-wevt);
 
@@ -167,13 +170,15 @@ int stor_open_read(struct open_chunk *cep, void 
(*cb)(struct open_chunk *),
char stckey[STOR_KEY_SLEN+1];
uint64_t size;
 
+   if (cep-key)
+   return -EBUSY;
if (!cep-stc)
return -EINVAL;
 
-   if (cep-rsize  cep-roff != cep-rsize) {
+   if (cep-size  cep-done != cep-size) {
applog(LOG_ERR, Unfinished Get (%ld,%ld),
-  (long)cep-roff, (long)cep-rsize);
-   cep-rsize = 0;
+  (long)cep-done, (long)cep-size);
+   cep-size = 0;
}
 
sprintf(stckey, stor_key_fmt, (unsigned long long) key);
@@ -184,9 +189,10 @@ int stor_open_read(struct open_chunk *cep, void 
(*cb)(struct open_chunk *),
return -EIO;
}
*psize = size;
-   cep-rsize = size;
-   cep-roff = 0;
-   cep-rcb = cb;
+   cep-size = size;
+   cep-done = 0;
+   cep-key = key;
+   cep-ocb = cb;
event_set(cep-revt, cep-rfd, EV_READ, stor_read_event, cep);
event_base_set(cep-evbase, cep-revt);
 
@@ -213,12 +219,14 @@ void stor_close(struct open_chunk *cep)
event_del(cep-revt);
cep-r_armed = false;
}
-   cep-rsize = 0;
+   cep-size = 0;
 
if (cep-w_armed) {
event_del(cep-wevt);
cep-w_armed = false;
}
+
+   cep-key = 0;
 }
 
 /*
@@ -251,40 +259,44 @@ void stor_abort(struct open_chunk *cep)
if (debugging)
applog(LOG_INFO, Failed to reopen Chunk nid %u (%d),
   cep-node-id, rc);
+
+   cep-size = 0;
+   cep-done = 0;
+   cep-key = 0;
return;
}
 
-   if (cep-wtogo) {
-   sprintf(stckey, stor_key_fmt, (unsigned long long) cep-wkey);
+   if (cep-done != cep-size) {
+   sprintf(stckey, stor_key_fmt, (unsigned long long) cep-key);
stc_delz(cep-stc, stckey);
-   cep-wtogo = 0;
}
 
if (cep-r_armed) {
event_del(cep-revt);
cep-r_armed = false;
}
-   cep-rsize = 0;
 
if (cep-w_armed) {
event_del(cep-wevt);
cep-w_armed = false;
}
+
+   cep-size = 0;
+   cep-done = 0;
+
+   cep-key = 0;
 }
 
 ssize_t stor_put_buf(struct open_chunk *cep, void *data, size_t len)
 {