[CVS] RPM: rpm-5_4: rpm/rpmio/ rpmeio.c rpmeio.h

2017-07-03 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   04-Jul-2017 05:14:16
  Branch: rpm-5_4  Handle: 2017070403141600

  Modified files:   (Branch: rpm-5_4)
rpm/rpmio   rpmeio.c rpmeio.h

  Log:
- rpmeio: permit building --without-libeio.

  Summary:
RevisionChanges Path
1.1.2.11+282 -154   rpm/rpmio/rpmeio.c
1.1.2.9 +48 -50 rpm/rpmio/rpmeio.h
  

  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmeio.c
  
  $ cvs diff -u -r1.1.2.10 -r1.1.2.11 rpmeio.c
  --- rpm/rpmio/rpmeio.c21 Jun 2017 09:09:37 -  1.1.2.10
  +++ rpm/rpmio/rpmeio.c4 Jul 2017 03:14:16 -   1.1.2.11
  @@ -1,19 +1,140 @@
   #include "system.h"
   
  +#if defined(WITH_LIBEV)
  +
   #if defined(HAVE_EV_H)
   # include 
   #endif
   
  +#else/* WITH_LIBEV */
  +
  +/* XXX stub in enough to include rpmev.h */
  +#define  EV_P_   void * loop,
  +#define  EV_A_   NULL,
  +#define  EV_DEFAULT  ev_default_loop(0)
  +#define  EVFLAG_AUTO 0
  +#define  EVRUN_ONCE  2
  +
  +typedef  struct ev_watcher   ev_idle;
  +typedef  struct ev_watcher   ev_async;
  +
  +struct ev_watcher {
  +int active;
  +int pending;
  +int priority;
  +void * data;
  +void (*cb)(EV_P_ void *w, int revents);
  +};
  +
  +union ev_any_watcher
  +{
  +struct ev_watcher w;
  +struct ev_watcher async;
  +};
  +
  +#define  ev_default_loop(_a) NULL
  +
  +#define  ev_userdata(_x) NULL
  +
  +#define  ev_set_userdata(_x, y)
  +
  +#define  ev_idle_stop(_w)(void)_w
  +#define  ev_async_send(_l, _w)   (void)_w
  +#define  ev_run(_a, _b)
  +#define  ev_loop_destroy(_a)
  +
  +#endif   /* WITH_LIBEV */
  +
  +#if defined(WITH_LIBEIO)
  +
  +#if defined(HAVE_EIO_H)
  +# include 
  +#endif
  +
  +#else/* WITH_LIBEIO */
  +
  +typedef struct eio_req   eio_req;
  +typedef int (*eio_cb)(eio_req *req);
  +
  +typedef struct eio_pwd * eio_wd;
  +typedef double   eio_tstamp;
  +typedef int  eio_uid_t;
  +typedef int  eio_gid_t;
  +typedef ssize_t  eio_ssize_t;
  +
  +/* XXX stub in enough to include rpmeio.h */
  +struct eio_req
  +{
  +eio_req volatile *next;  /* private ETP */
  +eio_wd wd;   /* all applicable requests: working directory 
of pathname, old name; wd_open: return wd */
  +eio_ssize_t result;  /* result of syscall, e.g. result = read (... */
  +off_t offs;  /* read, write, truncate, readahead, 
sync_file_range, fallocate: file offset, mknod: dev_t */
  +size_t size; /* read, write, readahead, sendfile, msync, mlock, 
sync_file_range, fallocate: length */
  +void *ptr1;  /* all applicable requests: pathname, old name; 
readdir: optional eio_dirents */
  +void *ptr2;  /* all applicable requests: new name or memory 
buffer; readdir: name strings */
  +eio_tstamp nv1;  /* utime, futime: atime; busy: sleep time */
  +eio_tstamp nv2;  /* utime, futime: mtime */
  +
  +int int1;/* all applicable requests: file descriptor; 
sendfile: output fd; open, msync, mlockall, readdir: flags */
  +long int2;   /* chown, fchown: uid; sendfile: input fd; 
open, chmod, mkdir, mknod: file mode, seek: whence, sync_file_range, fallocate: 
flags */
  +long int3;   /* chown, fchown: gid; rename, link: working 
directory of new name */
  +int errorno; /* errno value on syscall return */
  +
  +signed char type;/* EIO_xxx constant ETP */
  +
  +unsigned char cancelled; /* ETP */
  +
  +unsigned char flags; /* private */
  +#define  EIO_FLAG_PTR1_FREE  0x01
  +#define  EIO_FLAG_PTR2_FREE  0x02
  +
  +signed char pri; /* the priority */
  +#define  EIO_PRI_MIN -4
  +#define  EIO_PRI_MAX 4
  +#define  EIO_PRI_DEFAULT 0
  +
  +void *data;
  +eio_cb finish;
  +void (*destroy)(eio_req *req); /* called when request no longer needed */
  +void (*feed)(eio_req *req);/* only used for group requests */
  +
  +eio_req *grp, *grp_prev, *grp_next, *grp_first; /* private ETP */
  +};
  +
  +#define  eio_poll()  -1
  +#define  eio_nthreads()  0
  +#define  eio_nready()0
  +#define  eio_nreqs() 0
  +#define  eio_npending()  0
  

[CVS] RPM: rpm-5_4: rpm/rpmio/ rpmeio.c

2017-06-21 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   21-Jun-2017 11:09:37
  Branch: rpm-5_4  Handle: 2017062109093700

  Modified files:   (Branch: rpm-5_4)
rpm/rpmio   rpmeio.c

  Log:
- rpmeio: fix: make sure readlink/realpath buffers are NUL terminated.

  Summary:
RevisionChanges Path
1.1.2.10+8  -1  rpm/rpmio/rpmeio.c
  

  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmeio.c
  
  $ cvs diff -u -r1.1.2.9 -r1.1.2.10 rpmeio.c
  --- rpm/rpmio/rpmeio.c21 Jun 2017 07:42:48 -  1.1.2.9
  +++ rpm/rpmio/rpmeio.c21 Jun 2017 09:09:37 -  1.1.2.10
  @@ -433,9 +433,16 @@
   rpmzLog zlog = (evl ? evl->zlog : NULL);
   ZSPEW("--> %s(%s|%p) res %ld eio %p", __FUNCTION__, REQ_TYPE(req), 
REQ_DATA(req), EIO_RESULT(req), eio);
   
  -if (req->type == EIO_READLINK && req->result >= 0) {
  +if (req->result >= 0)
  +switch (req->type) {
  +case EIO_READLINK:
  +case EIO_REALPATH:
  +{
char * b = (char *) EIO_BUF(req);
b[req->result] = '\0';
  +}   break;
  +default:
  + break;
   }
   
   rpmeioDumpREQ(__FUNCTION__, req, NULL);
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm-5_4: rpm/rpmio/ rpmeio.c rpmeio.h teio.c

2017-06-21 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   21-Jun-2017 09:42:48
  Branch: rpm-5_4  Handle: 2017062107424800

  Modified files:   (Branch: rpm-5_4)
rpm/rpmio   rpmeio.c rpmeio.h teio.c

  Log:
- rpmeio: stub in parameter setting.

  Summary:
RevisionChanges Path
1.1.2.9 +15 -14 rpm/rpmio/rpmeio.c
1.1.2.8 +3  -1  rpm/rpmio/rpmeio.h
1.1.2.14+9  -1  rpm/rpmio/teio.c
  

  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmeio.c
  
  $ cvs diff -u -r1.1.2.8 -r1.1.2.9 rpmeio.c
  --- rpm/rpmio/rpmeio.c21 Jun 2017 07:19:42 -  1.1.2.8
  +++ rpm/rpmio/rpmeio.c21 Jun 2017 07:42:48 -  1.1.2.9
  @@ -256,18 +256,6 @@
   
   #ifdef   TODO
   
  -eio_set_max_poll_time(eio_tstamp nseconds);
  -eio_set_max_poll_reqs(unsigned int nreqs);
  -eio_set_min_parallel(unsigned int nthreads);
  -eio_set_max_parallel(unsigned int nthreads);
  -eio_set_max_idle(unsigned int nthreads);
  -eio_set_idle_timeout (unsigned int seconds);
  -
  -unsigned nreqs = eio_nreqs();
  -unsigned nready = eio_nready();
  -unsigned nthreads = eio_nthreads();
  -unsigned npending = eio_npending();
  -
   #define  EIO_STACKSIZE   4096/* default? */
   
   eio _req *grp = eio_grp(eio_cb cb, void *data);
  @@ -280,7 +268,9 @@
   
   #endif   /* TODO */
   
  -rpmevl rpmeioStart(unsigned flags)
  +rpmevl rpmeioStart(double max_poll_time, unsigned max_poll_reqs,
  + unsigned min_parallel, unsigned max_parallel,
  + unsigned max_idle, unsigned idle_timeout, unsigned flags)
   {
   int rc;
   rpmevl evl = NULL;
  @@ -311,7 +301,18 @@
   
   SPEW("<-- %s() evl %p loop %p", __FUNCTION__, evl, evl->loop);
   }
  -
  +if (max_poll_time > 0.0)
  + eio_set_max_poll_time(max_poll_time);
  +if (max_poll_reqs)
  + eio_set_max_poll_reqs(max_poll_reqs);
  +if (min_parallel)
  + eio_set_min_parallel(min_parallel);
  +if (max_parallel)
  + eio_set_max_parallel(max_parallel);
  +if (max_idle)
  + eio_set_max_idle(max_idle);
  +if (idle_timeout)
  + eio_set_idle_timeout(idle_timeout);
   evl->flags = flags;
   evl->zlog = (_rpmeio_debug || _rpmio_debug) ? rpmzLogNew(NULL) : NULL;
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmeio.h
  
  $ cvs diff -u -r1.1.2.7 -r1.1.2.8 rpmeio.h
  --- rpm/rpmio/rpmeio.h21 Jun 2017 07:19:42 -  1.1.2.7
  +++ rpm/rpmio/rpmeio.h21 Jun 2017 07:42:48 -  1.1.2.8
  @@ -98,7 +98,9 @@
   
   extern void rpmeioDumpREQ(const char *msg, eio_req * req, FILE *fp);
   
  -rpmevl rpmeioStart(unsigned flags);
  +rpmevl rpmeioStart(double max_poll_time, unsigned max_poll_reqs,
  + unsigned min_parallel, unsigned max_parallel,
  + unsigned max_idle, unsigned idle_timeout, unsigned flags);
   #define  RPMEVL_PIPE 0x1
   
   void rpmeioLoop(rpmevl evl);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/teio.c
  
  $ cvs diff -u -r1.1.2.13 -r1.1.2.14 teio.c
  --- rpm/rpmio/teio.c  21 Jun 2017 07:19:42 -  1.1.2.13
  +++ rpm/rpmio/teio.c  21 Jun 2017 07:42:48 -  1.1.2.14
  @@ -158,9 +158,17 @@
   static int doEIO(ARGV_t av, int ac)
   {
   int rc = 0;
  +double max_poll_time = 0.0;
  +unsigned max_poll_reqs = 0;
  +unsigned min_parallel = 0;
  +unsigned max_parallel = 0;
  +unsigned max_idle = 0;
  +unsigned idle_timeout = 0;
   unsigned flags = 0;  /* RPMEVL_PIPE */
   
  -rpmevl evl = rpmeioStart(flags);
  +rpmevl evl = rpmeioStart(max_poll_time, max_poll_reqs,
  + min_parallel, max_parallel,
  + max_idle, idle_timeout, flags);
   
   do {
/* avoid relative paths yourself(!) */
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm-5_4: rpm/rpmio/ rpmeio.c rpmeio.h teio.c

2017-06-21 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   21-Jun-2017 09:19:42
  Branch: rpm-5_4  Handle: 2017062107194200

  Modified files:   (Branch: rpm-5_4)
rpm/rpmio   rpmeio.c rpmeio.h teio.c

  Log:
- rpmeio: run time selection of pipe/libev dispatching.

  Summary:
RevisionChanges Path
1.1.2.8 +54 -68 rpm/rpmio/rpmeio.c
1.1.2.7 +3  -0  rpm/rpmio/rpmeio.h
1.1.2.13+1  -1  rpm/rpmio/teio.c
  

  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmeio.c
  
  $ cvs diff -u -r1.1.2.7 -r1.1.2.8 rpmeio.c
  --- rpm/rpmio/rpmeio.c21 Jun 2017 06:40:28 -  1.1.2.7
  +++ rpm/rpmio/rpmeio.c21 Jun 2017 07:19:42 -  1.1.2.8
  @@ -178,29 +178,23 @@
   
   /*==*/
   
  -#undef   USE_PIPE
  -
   struct rpmevl_s {
  -#if defined(USE_PIPE)
  +unsigned flags;
   int pipefdno[2];
   #define  pipein  evl->pipefdno[0]
   #define  pipeout evl->pipefdno[1]
  -#else
   struct ev_loop *loop;
   rpmev idle_ev;
   rpmev async_ev;
  -#endif
   rpmzLog zlog;/*!< high precision timestamp'd log */
   };
   static struct rpmevl_s _evl;
   
   static rpmevl rpmevlGet(void)
   {
  -#if defined(USE_PIPE)
  -return &_evl;
  -#else
  -   return (rpmevl) ev_userdata(EV_DEFAULT);
  -#endif
  +if (_evl.flags & RPMEVL_PIPE)
  + return &_evl;
  +return (rpmevl) ev_userdata(EV_DEFAULT);
   }
   
   /* idle watcher callback, only used when eio_poll */
  @@ -220,15 +214,12 @@
   static void
   ready (EV_P_ ev_async *w, int revents)
   {
  -#if !defined(USE_PIPE)
   rpmevl evl = (rpmevl) ev_userdata(loop);
   rpmzLog zlog = evl->zlog;
   ZSPEW("--> %s(%p, %p, %d)", __FUNCTION__, loop, w, revents);
   
  -if (eio_poll() == -1) {
  +if (eio_poll() == -1)
evl->idle_ev = rpmevNew(RPMEV_TYPE_IDLE,  NULL);
  -}
  -#endif   /* USE_PIPE */
   }
   
   /* wake up the event loop */
  @@ -238,15 +229,15 @@
   rpmevl evl = rpmevlGet();
   rpmzLog zlog = evl->zlog;
   
  -#if defined(USE_PIPE)
  -char dummy = '\0';
  -ssize_t nw = write(pipeout, , sizeof(dummy));
  +if (evl->flags & RPMEVL_PIPE) {
  + char dummy = '\0';
  + ssize_t nw = write(pipeout, , sizeof(dummy));
   ZSPEW("<-- %s(%d) nw %zd", "write", pipeout, nw);
  -#else
  -ev_async * w = >async_ev->evw.async;
  -ev_async_send(evl->loop, w);
  +} else {
  + ev_async * w = >async_ev->evw.async;
  + ev_async_send(evl->loop, w);
   ZSPEW("<-- %s()", __FUNCTION__);
  -#endif
  +}
   }
   
   static
  @@ -255,13 +246,12 @@
   rpmevl evl = rpmevlGet();
   rpmzLog zlog = evl->zlog;
   
  -#if defined(USE_PIPE)
  -char dummy = '\0';
  -ssize_t nr = read(pipein, , sizeof(dummy));
  -ZSPEW("<-- %s(%d) nr %zd nthreads:%u nreqs:%u nready:%u npending:%u", " 
read", pipein, nr, eio_nthreads(), eio_nreqs(), eio_nready(), eio_npending());
  -#else
  +if (evl->flags & RPMEVL_PIPE) {
  + char dummy = '\0';
  + ssize_t nr = read(pipein, , sizeof(dummy));
  +ZSPEW("<-- %s(%d) nr %zd", " read", pipein, nr);
  +}
   ZSPEW("<-- %s() nthreads:%u nreqs:%u nready:%u npending:%u", __FUNCTION__, 
eio_nthreads(), eio_nreqs(), eio_nready(), eio_npending());
  -#endif   /* USE_PIPE */
   }
   
   #ifdef   TODO
  @@ -293,33 +283,36 @@
   rpmevl rpmeioStart(unsigned flags)
   {
   int rc;
  +rpmevl evl = NULL;
   
  -#if defined(USE_PIPE)
  -rpmevl evl = &_evl;
  -
  -evl->pipefdno[0] = -1;
  -evl->pipefdno[1] = -1;
  -rc = pipe(evl->pipefdno);
  -
  -if (!rc)
  - rc = eio_init(want_poll, done_poll);
  +if (flags & RPMEVL_PIPE) {
  + evl = &_evl;
  + evl->pipefdno[0] = -1;
  + evl->pipefdno[1] = -1;
  + evl->loop = NULL;
  + evl->idle_ev = NULL;
  + evl->async_ev = NULL;
  +
  + rc = pipe(evl->pipefdno);
  + if (!rc)
  + rc = eio_init(want_poll, done_poll);
   
   SPEW("<-- %s() evl %p pipe [%d,%d]", __FUNCTION__, evl, evl->pipefdno[0], 
evl->pipefdno[1]);
  +} else {
  + evl = xcalloc(1, sizeof(*evl));
  + evl->pipefdno[0] = -1;
  + evl->pipefdno[1] = -1;
  +
  + evl->loop = ev_default_loop(EVFLAG_AUTO);
  + ev_set_userdata(evl->loop, evl);
  + evl->async_ev = rpmevNew(RPMEV_TYPE_ASYNC, ready);
   
  -#else/* USE_PIPE */
  -rpmevl evl = xcalloc(1, sizeof(*evl));
  -
  -evl->loop = ev_default_loop(EVFLAG_AUTO);
  -

[CVS] RPM: rpm-5_4: rpm/rpmio/ rpmeio.c

2017-06-16 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   16-Jun-2017 13:00:06
  Branch: rpm-5_4  Handle: 2017061611000600

  Modified files:   (Branch: rpm-5_4)
rpm/rpmio   rpmeio.c

  Log:
- rpmeio: haul out a load of trash.

  Summary:
RevisionChanges Path
1.1.2.4 +36 -188rpm/rpmio/rpmeio.c
  

  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmeio.c
  
  $ cvs diff -u -r1.1.2.3 -r1.1.2.4 rpmeio.c
  --- rpm/rpmio/rpmeio.c16 Jun 2017 06:14:09 -  1.1.2.3
  +++ rpm/rpmio/rpmeio.c16 Jun 2017 11:00:06 -  1.1.2.4
  @@ -91,10 +91,17 @@
if (req->size)
PRINT(zu, size);
   
  +#ifdef   DYING
if (req->ptr1)
PRINT(p, ptr1);
if (req->ptr2)
PRINT(p, ptr2);
  +#else
  + if (req->ptr1)
  + fprintf(fp, "%25s: %p %s\n", "ptr1", req->ptr1, (char *)req->ptr1);
  + if (req->ptr2)
  + fprintf(fp, "%25s: %p %s\n", "ptr2", req->ptr2, (char *)req->ptr2);
  +#endif
   
if (req->nv1 != 0.0)
PRINT(f, nv1);
  @@ -111,7 +118,7 @@
   #ifdef   DYING
PRINT(d, errorno);
   #else
  - if (req->errorno)
  + if (req->result < 0 && req->errorno)
fprintf(fp, "%25s: %d %s\n", "errorno", REQ_ERRNO(req), 
strerror(REQ_ERRNO(req)));
   #endif
   
  @@ -125,8 +132,8 @@
PRINT(hhx, cancelled);
if (req->flags)
PRINT(hhx, flags);
  - if (req->pri)
  - PRINT(hhx, pri);
  + if (!(req->pri == 0 || req->pri == 4))
  + PRINT(hhx, pri);
   
   #ifdef   NOTYET
if (req->data)
  @@ -276,6 +283,26 @@
   {
   rpmeio eio = (rpmeio) (((rpmioItem)req) - 1);
   SPEW("--> %s(%p) eio %p\n", __FUNCTION__, req, eio);
  +
  +/* XXX wipe variables to shorten rpmeioDumpREQ() spewage. */
  +req->next = NULL;
  +req->result = 0;
  +req->errorno = 0;
  +
  +req->pri = 0;
  +req->flags = 0;
  +req->ptr1 = NULL;
  +req->ptr2 = NULL;
  +
  +req->nv1 = 0.0;
  +req->nv2 = 0.0;
  +req->offs = 0;
  +req->size = 0;
  +req->int1 = 0;
  +req->int2 = 0;
  +req->int3 = 0;
  +req->finish = NULL;
  +req->destroy = NULL;
   rpmeioDumpREQ(__FUNCTION__, req, NULL);
   
   do {
  @@ -584,6 +611,8 @@
data = "fchown";
   //   req = eio_fchown(fdno, uid, gid, pri, cb, data);
req->int1 = fdno;
  + req->int2 = uid;
  + req->int3 = gid;
break;
   case EIO_SYNC:
cb = rpmeioCB;
  @@ -704,7 +733,7 @@
   case EIO_READDIR:
path = va_arg(ap, const char *);
flags = va_arg(ap, int);
  - cb = rpmeioCB_open;
  + cb = rpmeioCB_readdir;
data = "readdir";
   //   req = eio_readdir(path, flags, pri, cb, data);
req->flags |= EIO_FLAG_PTR1_FREE;
  @@ -809,6 +838,7 @@
break;
   case EIO_MKDIR:
path = va_arg(ap, const char *);
  + mode = va_arg(ap, mode_t);
cb = rpmeioCB;
data = "mkdir";
   //   req = eio_mkdir(path, mode, pri, cb, data);
  @@ -904,6 +934,8 @@
   //   eio->req.grp_prev = NULL;
   //   eio->req.grp_next = NULL;
   
  +rpmeioDumpREQ(__FUNCTION__, req, NULL);
  +
   exit:
   SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
   
  @@ -926,12 +958,8 @@
   /*==*/
   eio_req *Eio_wd_open   (const char *path, int pri, eio_cb cb, void *data)
   {
  -#ifdef   DYING
  -eio_req * req = eio_wd_open(path, pri, cb, data);
  -#else
   eio_req * req = rpmeioReq(EIO_WD_OPEN, path, pri, cb, data);
   Eio_submit(req);
  -#endif   /* DYING */
   SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
   
   return req;
  @@ -939,540 +967,360 @@
   
   eio_req *Eio_wd_close  (eio_wd wd, int pri, eio_cb cb, void *data)
   {
  -#ifdef   DYING
  -eio_req *req = eio_wd_close(wd, pri, cb, data);
  -#else
   eio_req *req = rpmeioReq(EIO_WD_CLOSE, wd, pri, cb, data);
   Eio_submit(req);
  -#endif   /* DYING */
   SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
   return req;
   }
   
   eio_req *Eio_nop   (int pri, eio_cb cb, void *data)
   {
  -#ifdef   DYING
  -eio_req *req = eio_nop(pri, cb, data);
  -#else
   eio_req *req = rpmeioReq(EIO_NOP, pri, cb, data);
   Eio_submit(req);
  -#endif   /* DYING */
   SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);