From: Luke M. <lu...@us...> - 2005-08-15 06:56:31
|
Update of /cvsroot/ipbench/ipbench2/src/tests/nfs_latency/libnfs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18694/src/tests/nfs_latency/libnfs Modified Files: nfs.c rpc.c rpc.h test.c Log Message: nfs updates Index: rpc.c =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/tests/nfs_latency/libnfs/rpc.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** rpc.c 4 Aug 2005 05:09:03 -0000 1.3 --- rpc.c 15 Aug 2005 06:56:23 -0000 1.4 *************** *** 50,54 **** int ! rpc_send(struct pbuf *pbuf, int fd, struct callback c) { int xid, r; --- 50,54 ---- int ! rpc_send(struct pbuf *pbuf, int fd, struct callback *c) { int xid, r; *************** *** 56,63 **** assert(pbuf && pbuf->pos >=0 && pbuf->pos <= PBUF_SIZE); /* we always add the callback */ /* anything after here is just packet loss */ ! xid = extract_xid(pbuf->buf); ! callback_add(xid, c); if(pbuf->pos==0) --- 56,67 ---- assert(pbuf && pbuf->pos >=0 && pbuf->pos <= PBUF_SIZE); + printf("rpc_send() called\n"); + /* we always add the callback */ /* anything after here is just packet loss */ ! if(c!=NULL){ ! xid = extract_xid(pbuf->buf); ! callback_add(xid, *c); ! } if(pbuf->pos==0) *************** *** 79,94 **** } int ! rpc_recv(struct pbuf *pbuf, int fd, int block) { int x, xid; struct callback c; ! if(block){ ! #ifndef INFTIM ! #define INFTIM -1 ! #endif struct pollfd p = {fd, POLLIN, 0}; ! assert(poll(&p, 1, INFTIM)==1); } --- 83,102 ---- } + /* returns 0 on success, -1 on error */ int ! rpc_recv(struct pbuf *pbuf, int fd, int timeout) { int x, xid; struct callback c; ! printf("rpc_recv() called\n"); ! ! if(timeout!=0){ ! int r; struct pollfd p = {fd, POLLIN, 0}; ! r = poll(&p, 1, timeout); ! if(poll<=0){ ! return -1; ! } } *************** *** 139,143 **** rpc_call(struct pbuf *snd, struct pbuf *rcv, int fd) { ! struct callback c; int notify = 0; struct pbuf *result; --- 147,151 ---- rpc_call(struct pbuf *snd, struct pbuf *rcv, int fd) { ! struct callback c, *tx; int notify = 0; struct pbuf *result; *************** *** 146,154 **** c.param.call.notify = ¬ify; c.param.call.result = &result; ! assert(rpc_send(snd, fd, c)==snd->pos); ! while(notify==0){ ! rpc_recv(rcv, fd, 1); } --- 154,164 ---- c.param.call.notify = ¬ify; c.param.call.result = &result; + tx = &c; ! /* retransmit every 100ms until success */ while(notify==0){ ! assert(rpc_send(snd, fd, tx)==snd->pos); ! tx = NULL; ! rpc_recv(rcv, fd, 100); } Index: rpc.h =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/tests/nfs_latency/libnfs/rpc.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** rpc.h 21 Jun 2005 02:57:38 -0000 1.1 --- rpc.h 15 Aug 2005 06:56:23 -0000 1.2 *************** *** 33,38 **** }; ! int rpc_send(struct pbuf *pbuf, int fd, struct callback c); ! int rpc_recv(struct pbuf *pbuf, int fd, int block); int rpc_call(struct pbuf *snd, struct pbuf *rcv, int fd); --- 33,38 ---- }; ! int rpc_send(struct pbuf *pbuf, int fd, struct callback *c); ! int rpc_recv(struct pbuf *pbuf, int fd, int timeout); int rpc_call(struct pbuf *snd, struct pbuf *rcv, int fd); Index: test.c =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/tests/nfs_latency/libnfs/test.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** test.c 4 Aug 2005 05:09:03 -0000 1.2 --- test.c 15 Aug 2005 06:56:23 -0000 1.3 *************** *** 131,135 **** printf("receive loop\n"); ! rpc_recv(&buf, nfs_fd, 1); } --- 131,135 ---- printf("receive loop\n"); ! rpc_recv(&buf, nfs_fd, -1); } Index: nfs.c =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/tests/nfs_latency/libnfs/nfs.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** nfs.c 21 Jun 2005 02:57:38 -0000 1.1 --- nfs.c 15 Aug 2005 06:56:23 -0000 1.2 *************** *** 106,109 **** --- 106,110 ---- { struct pbuf pbuf; + struct callback c; /* now the user data struct is setup, do some call stuff! */ *************** *** 114,119 **** /* send it! */ ! return rpc_send(&pbuf, nfs_fd, ! create_nfs_callback(nfs_getattr_cb, func, token)); } --- 115,120 ---- /* send it! */ ! c = create_nfs_callback(nfs_getattr_cb, func, token); ! return rpc_send(&pbuf, nfs_fd, &c); } *************** *** 157,160 **** --- 158,162 ---- { struct pbuf pbuf; + struct callback c; /* now the user data struct is setup, do some call stuff! */ *************** *** 168,173 **** /* send it! */ ! return rpc_send(&pbuf, nfs_fd, ! create_nfs_callback(nfs_lookup_cb, func, token)); } --- 170,175 ---- /* send it! */ ! c = create_nfs_callback(nfs_lookup_cb, func, token); ! return rpc_send(&pbuf, nfs_fd, &c); } *************** *** 217,220 **** --- 219,223 ---- struct pbuf pbuf; + struct callback c; readargs_t args; *************** *** 233,238 **** addtobuf(&pbuf, (char *)&args, sizeof(args), 1); ! return rpc_send(&pbuf, nfs_fd, ! create_nfs_callback(nfs_read_cb, func, token)); } --- 236,241 ---- addtobuf(&pbuf, (char *)&args, sizeof(args), 1); ! c = create_nfs_callback(nfs_read_cb, func, token); ! return rpc_send(&pbuf, nfs_fd, &c); } *************** *** 272,275 **** --- 275,279 ---- { struct pbuf pbuf; + struct callback c; writeargs_t args; *************** *** 290,295 **** adddata(&pbuf, data, count, 0); ! return rpc_send(&pbuf, nfs_fd, ! create_nfs_callback(nfs_write_cb, func, token)); } --- 294,299 ---- adddata(&pbuf, data, count, 0); ! c = create_nfs_callback(nfs_write_cb, func, token); ! return rpc_send(&pbuf, nfs_fd, &c); } *************** *** 336,339 **** --- 340,344 ---- { struct pbuf pbuf; + struct callback c; /* now the user data struct is setup, do some call stuff! */ *************** *** 347,352 **** addtobuf(&pbuf, (char *)sat, sizeof(sattr_t), 1); ! return rpc_send(&pbuf, nfs_fd, ! create_nfs_callback(nfs_create_cb, func, token)); } --- 352,357 ---- addtobuf(&pbuf, (char *)sat, sizeof(sattr_t), 1); ! c = create_nfs_callback(nfs_create_cb, func, token); ! return rpc_send(&pbuf, nfs_fd, &c); } *************** *** 455,458 **** --- 460,464 ---- { struct pbuf pbuf; + struct callback c; readdirargs_t args; *************** *** 471,476 **** /* make the call! */ ! return rpc_send(&pbuf, nfs_fd, ! create_nfs_callback(nfs_readdir_cb, func, token)); } --- 477,482 ---- /* make the call! */ ! c = create_nfs_callback(nfs_readdir_cb, func, token); ! return rpc_send(&pbuf, nfs_fd, &c); } |