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 08:14:09 Branch: rpm-5_4 Handle: 2017061606140900 Modified files: (Branch: rpm-5_4) rpm/rpmio librpmio.vers rpmeio.c rpmeio.h Log: - rpmeio: switch to the low-levl API. Summary: Revision Changes Path 2.199.2.93 +3 -2 rpm/rpmio/librpmio.vers 1.1.2.3 +577 -125 rpm/rpmio/rpmeio.c 1.1.2.3 +4 -5 rpm/rpmio/rpmeio.h ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/rpmio/librpmio.vers ============================================================================ $ cvs diff -u -r2.199.2.92 -r2.199.2.93 librpmio.vers --- rpm/rpmio/librpmio.vers 15 Jun 2017 07:16:18 -0000 2.199.2.92 +++ rpm/rpmio/librpmio.vers 16 Jun 2017 06:14:09 -0000 2.199.2.93 @@ -474,7 +474,6 @@ rpmMCExpand; rpmMCExpandNumeric; _rpmeio_debug; - rpmeioCancel; rpmeioDumpREQ; rpmeioLoop; rpmeioNew; @@ -483,7 +482,9 @@ rpmeioPollWant; rpmeioPollDone; rpmeioStart; - rpmeioSubmit; + Eio_cancel; + Eio_destroy; + Eio_submit; rpmeioCB; rpmeioCB_readdir; rpmeioCB_stat; @@ . patch -p0 <<'@@ .' Index: rpm/rpmio/rpmeio.c ============================================================================ $ cvs diff -u -r1.1.2.2 -r1.1.2.3 rpmeio.c --- rpm/rpmio/rpmeio.c 15 Jun 2017 07:16:18 -0000 1.1.2.2 +++ rpm/rpmio/rpmeio.c 16 Jun 2017 06:14:09 -0000 1.1.2.3 @@ -121,14 +121,21 @@ fprintf(fp, "%25s: %d %s data %s\n", "type", req->type, REQ_TYPE(req), (char *)REQ_DATA(req)); #endif -#ifdef NOTYET - PRINT(hhx, cancelled); - PRINT(hhx, flags); + if (req->cancelled) + PRINT(hhx, cancelled); + if (req->flags) + PRINT(hhx, flags); + if (req->pri) PRINT(hhx, pri); - PRINT(p, data); - PRINT(p, finish); - PRINT(p, destroy); +#ifdef NOTYET + if (req->data) + PRINT(p, data); +#endif + if (req->finish) + PRINT(p, finish); + if (req->destroy) + PRINT(p, destroy); if (req->feed) PRINT(p, feed); @@ -140,7 +147,6 @@ PRINT(p, grp_next); if (req->grp_first) PRINT(p, grp_first); -#endif /* NOTYET */ #undef PRINT } @@ -259,22 +265,41 @@ SPEW("<== %s() polled %d\n", __FUNCTION__, polled); } -void rpmeioSubmot(eio_req * req) +void Eio_cancel(eio_req * req) { -SPEW("--> %s(%p)\n", __FUNCTION__, req); - eio_submit(req); + rpmeio eio = (rpmeio) (((rpmioItem)req) - 1); +SPEW("--> %s(%p) eio %p\n", __FUNCTION__, req, eio); + eio_cancel(req); } -void rpmeioCancel(eio_req * req) +void Eio_destroy(eio_req * req) { -SPEW("--> %s(%p)\n", __FUNCTION__, req); - eio_cancel(req); + rpmeio eio = (rpmeio) (((rpmioItem)req) - 1); +SPEW("--> %s(%p) eio %p\n", __FUNCTION__, req, eio); +rpmeioDumpREQ(__FUNCTION__, req, NULL); + + do { + eio = rpmeioFree(eio); + } while (0); + +} + +void Eio_submit(eio_req * req) +{ + rpmeio eio = (rpmeio) (((rpmioItem)req) - 1); +SPEW("--> %s(%p) eio %p\n", __FUNCTION__, req, eio); +#ifdef NOTYET + eio = rpmeioLink(eio); +#endif + eio_submit(&eio->req); } /*==============================================================*/ int rpmeioCB(eio_req * req) { -SPEW("--> %s(%s|%p) res %ld\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), EIO_RESULT(req)); + rpmeio eio = (rpmeio) (((rpmioItem)req) - 1); +SPEW("--> %s(%s|%p) res %ld eio %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), EIO_RESULT(req), eio); + rpmeioDumpREQ(__FUNCTION__, req, NULL); if (EIO_RESULT(req) < 0) { @@ -282,14 +307,19 @@ perror(REQ_TYPE(req)); } +#ifdef NOTYET + eio = rpmeioFree(eio); +#endif + return 0; } int rpmeioCB_readdir(eio_req * req) { + rpmeio eio = (rpmeio) (((rpmioItem)req) - 1); char *buf = (char *) EIO_BUF(req); -SPEW("--> %s(%s|%p) res %ld\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), EIO_RESULT(req)); +SPEW("--> %s(%s|%p) res %ld eio %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), EIO_RESULT(req), eio); rpmeioDumpREQ(__FUNCTION__, req, NULL); if (EIO_RESULT(req) < 0) @@ -300,14 +330,19 @@ buf += strlen(buf) + 1; } +#ifdef NOTYET + eio = rpmeioFree(eio); +#endif + return 0; } int rpmeioCB_stat(eio_req * req) { + rpmeio eio = (rpmeio) (((rpmioItem)req) - 1); struct stat *buf = EIO_STAT_BUF(req); -SPEW("--> %s(%s|%p) res %ld\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), EIO_RESULT(req)); +SPEW("--> %s(%s|%p) res %ld eio %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), EIO_RESULT(req), eio); rpmeioDumpREQ(__FUNCTION__, req, NULL); if (req->type == EIO_FSTAT) { SPEW("\tfstat = %ld\n", EIO_RESULT(req)); @@ -319,18 +354,27 @@ SPEW("\tstat size %ld perm 0%o\n", buf->st_size, buf->st_mode & 0777); +#ifdef NOTYET + eio = rpmeioFree(eio); +#endif + return 0; } int rpmeioCB_read(eio_req * req) { + rpmeio eio = (rpmeio) (((rpmioItem)req) - 1); unsigned char *buf = (unsigned char *) EIO_BUF(req); -SPEW("--> %s(%s|%p) res %ld (%02x%02x%02x%02x %02x%02x%02x%02x)\n", - __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), EIO_RESULT(req), - buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6], buf[7]); +SPEW("--> %s(%s|%p) res %ld eio %p (%02x%02x%02x%02x %02x%02x%02x%02x)\n", + __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), EIO_RESULT(req), eio, + buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6], buf[7]); rpmeioDumpREQ(__FUNCTION__, req, NULL); +#ifdef NOTYET + eio = rpmeioFree(eio); +#endif + return 0; } @@ -338,19 +382,26 @@ int rpmeioCB_open(eio_req * req) { -SPEW("--> %s(%s|%p) res %ld\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), EIO_RESULT(req)); + rpmeio eio = (rpmeio) (((rpmioItem)req) - 1); +SPEW("--> %s(%s|%p) res %ld eio %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), EIO_RESULT(req), eio); rpmeioDumpREQ(__FUNCTION__, req, NULL); rpmeioLastFdno = EIO_RESULT(req); +#ifdef NOTYET + eio = rpmeioFree(eio); +#endif + return 0; } /*==============================================================*/ static eio_req * rpmeioReq(int reqtype, ...) { + rpmeio eio = NULL; eio_req * req = NULL; + eio_wd wd = NULL; const char * path = NULL; const char * npath = NULL; void (*execute) (eio_req *req); @@ -360,6 +411,7 @@ int whence = 0; void *buf = NULL; size_t length = 0; + size_t nbytes = 0; eio_tstamp atime = 0.0; eio_tstamp mtime = 0.0; uid_t uid = -1; @@ -374,13 +426,13 @@ eio_cb cb = rpmeioCB; void * data = NULL; - const char * fmt = NULL; -(void *)fmt; - va_list ap; - if (reqtype >= EIO_REQ_TYPE_NUM) goto exit; + eio = rpmeioNew(reqtype); + req = &eio->req; + + va_list ap; va_start(ap, reqtype); switch (reqtype) { @@ -388,36 +440,39 @@ execute = va_arg(ap, void (*) (eio_req *)); cb = rpmeioCB; /* XXX */ data = "custom"; - req = eio_custom(execute, pri, cb, data); +// req = eio_custom(execute, pri, cb, data); + req->feed = execute; break; -#ifdef NOTYET case EIO_WD_OPEN: path = va_arg(ap, const char *); cb = rpmeioCB; /* XXX */ data = "wd_open"; - req = eio_wd_open(path, pri, cb, data); +// req = eio_wd_open(path, pri, cb, data); + req->flags |= EIO_FLAG_PTR1_FREE; + req->ptr1 = xstrdup(path); break; case EIO_WD_CLOSE: + wd = va_arg(ap, eio_wd); cb = rpmeioCB; /* XXX */ data = "wd_close"; - fmt = "%p | %d, %p, %p"; - req = eio_wd_close(wd, pri, cb, data); +// req = eio_wd_close(wd, pri, cb, data); + req->wd = wd; break; -#endif /* NOTYET */ case EIO_CLOSE: fdno = va_arg(ap, int); cb = rpmeioCB; data = "close"; - fmt = "%d | %d, %p, %p"; - req = eio_close(fdno, pri, cb, data); +// req = eio_close(fdno, pri, cb, data); + req->int1 = fdno; break; case EIO_DUP2: fdno = va_arg(ap, int); fdno2 = va_arg(ap, int); cb = rpmeioCB; data = "dup2"; - fmt = "%d, %d | %d, %p, %p"; - req = eio_dup2(fdno, fdno2, pri, cb, data); +// req = eio_dup2(fdno, fdno2, pri, cb, data); + req->int1 = fdno; + req->int2 = fdno2; break; case EIO_SEEK: fdno = va_arg(ap, int); @@ -425,8 +480,10 @@ whence = va_arg(ap, int); cb = rpmeioCB; /* XXX */ data = "seek"; - fmt = "%d, %ld, %d | %d, %p, %p"; - req = eio_seek(fdno, offset, whence, pri, cb, data); +// req = eio_seek(fdno, offset, whence, pri, cb, data); + req->int1 = fdno; + req->offs = offset; + req->int2 = whence; break; case EIO_READ: fdno = va_arg(ap, int); @@ -435,8 +492,11 @@ offset = va_arg(ap, off_t); cb = rpmeioCB_read; data = "read"; - fmt = "%d, %p, %zu | %d, %p, %p"; - req = eio_read(fdno, buf, length, offset, pri, cb, data); +// req = eio_read(fdno, buf, length, offset, pri, cb, data); + req->int1 = fdno; + req->ptr2 = buf; + req->size = length; + req->offs = offset; break; case EIO_WRITE: fdno = va_arg(ap, int); @@ -445,8 +505,11 @@ offset = va_arg(ap, off_t); cb = rpmeioCB; data = "write"; - fmt = "%d, %p, %zu | %d, %p, %p"; - req = eio_write(fdno, buf, length, offset, pri, cb, data); +// req = eio_write(fdno, buf, length, offset, pri, cb, data); + req->int1 = fdno; + req->ptr2 = buf; + req->size = length; + req->offs = offset; break; case EIO_READAHEAD: fdno = va_arg(ap, int); @@ -454,40 +517,46 @@ length = va_arg(ap, size_t); cb = rpmeioCB; data = "readahead"; - fmt = "%d, %lld, %zu | %d, %p, %p"; - req = eio_readahead(fdno, offset, length, pri, cb, data); +// req = eio_readahead(fdno, offset, length, pri, cb, data); + req->int1 = fdno; + req->offs = offset; + req->size = length; break; case EIO_SENDFILE: - fdno2 = va_arg(ap, int); fdno = va_arg(ap, int); + fdno2 = va_arg(ap, int); offset = va_arg(ap, off_t); length = va_arg(ap, size_t); cb = rpmeioCB; data = "sendfile"; - fmt = "%d, %d, %p, %zu | %d, %p, %p"; - req = eio_sendfile(fdno2, fdno, offset, length, pri, cb, data); +// req = eio_sendfile(fdno, fdno2, offset, length, pri, cb, data); + req->int1 = fdno; + req->int2 = fdno2; + req->offs = offset; + req->size = length; break; case EIO_FSTAT: fdno = va_arg(ap, int); cb = rpmeioCB_stat; data = "fstat"; - fmt = "%d | %d, %p, %p"; - req = eio_fstat(fdno, pri, cb, data); +// req = eio_fstat(fdno, pri, cb, data); + req->int1 = fdno; break; case EIO_FSTATVFS: fdno = va_arg(ap, int); cb = rpmeioCB; /* XXX */ data = "statvfs"; - fmt = "%d | %d, %p, %p"; - req = eio_fstatvfs(fdno, pri, cb, data); +// req = eio_fstatvfs(fdno, pri, cb, data); + req->int1 = fdno; break; case EIO_FTRUNCATE: fdno = va_arg(ap, int); offset = va_arg(ap, off_t); cb = rpmeioCB; data = "ftruncate"; - fmt = "%d, %ld | %d, %p, %p"; - req = eio_ftruncate(fdno, offset, pri, cb, data); +// req = eio_ftruncate(fdno, offset, pri, cb, data); + req->int1 = fdno; + req->offs = offset; break; case EIO_FUTIME: fdno = va_arg(ap, int); @@ -495,16 +564,17 @@ mtime = va_arg(ap, eio_tstamp); cb = rpmeioCB; data = "futime"; - fmt = "%d, %f, %f | %d, %p, %p"; - req = eio_futime(fdno, atime, mtime, pri, cb, data); +// req = eio_futime(fdno, atime, mtime, pri, cb, data); + req->int1 = fdno; break; case EIO_FCHMOD: fdno = va_arg(ap, int); mode = va_arg(ap, mode_t); cb = rpmeioCB; data = "fchmod"; - fmt = "%d, %hd | %d, %p, %p"; - req = eio_fchmod(fdno, mode, pri, cb, data); +// req = eio_fchmod(fdno, mode, pri, cb, data); + req->int1 = fdno; + req->int2 = (long)mode; break; case EIO_FCHOWN: fdno = va_arg(ap, int); @@ -512,35 +582,34 @@ gid = va_arg(ap, gid_t); cb = rpmeioCB; data = "fchown"; - fmt = "%d, %d, %d | %d, %p, %p"; - req = eio_fchown(fdno, uid, gid, pri, cb, data); +// req = eio_fchown(fdno, uid, gid, pri, cb, data); + req->int1 = fdno; break; case EIO_SYNC: cb = rpmeioCB; data = "sync"; - fmt = "| %d, %p, %p"; - req = eio_sync(pri, cb, data); +// req = eio_sync(pri, cb, data); break; case EIO_FSYNC: fdno = va_arg(ap, int); cb = rpmeioCB; data = "fsync"; - fmt = "%d | %d, %p, %p"; - req = eio_fsync(fdno, pri, cb, data); +// req = eio_fsync(fdno, pri, cb, data); + req->int1 = fdno; break; case EIO_FDATASYNC: fdno = va_arg(ap, int); cb = rpmeioCB; data = "fdatasync"; - fmt = "%d | %d, %p, %p"; - req = eio_fdatasync(fdno, pri, cb, data); +// req = eio_fdatasync(fdno, pri, cb, data); + req->int1 = fdno; break; case EIO_SYNCFS: fdno = va_arg(ap, int); cb = rpmeioCB; /* XXX */ data = "syncfs"; - fmt = "%d | %d, %p, %p"; - req = eio_syncfs(fdno, pri, cb, data); +// req = eio_syncfs(fdno, pri, cb, data); + req->int1 = fdno; break; case EIO_MSYNC: addr = va_arg(ap, void *); @@ -548,8 +617,10 @@ flags = va_arg(ap, int); cb = rpmeioCB; /* XXX */ data = "msync"; - fmt = "%p, %zu, %d | %d, %p, %p"; - req = eio_msync(addr, length, flags, pri, cb, data); +// req = eio_msync(addr, length, flags, pri, cb, data); + req->ptr2 = addr; + req->size = length; + req->int1 = flags; break; case EIO_MTOUCH: addr = va_arg(ap, void *); @@ -557,18 +628,23 @@ flags = va_arg(ap, int); cb = rpmeioCB; /* XXX */ data = "mtouch"; - fmt = "%p, %zu, %d | %d, %p, %p"; - req = eio_mtouch(addr, length, flags, pri, cb, data); +// req = eio_mtouch(addr, length, flags, pri, cb, data); + req->ptr2 = addr; + req->size = length; + req->int1 = flags; break; case EIO_SYNC_FILE_RANGE: fdno = va_arg(ap, int); offset = va_arg(ap, off_t); - length = va_arg(ap, size_t); + nbytes = va_arg(ap, size_t); flags = va_arg(ap, int); cb = rpmeioCB; /* XXX */ data = "sync_file_range"; - fmt = "%p, %lld, %lld, %u | %d, %p, %p"; - req = eio_sync_file_range(fdno, offset, length, flags, pri, cb, data); +// req = eio_sync_file_range(fdno, offset, nbytes, flags, pri, cb, data); + req->int1 = fdno; + req->offs = offset; + req->size = nbytes; + req->int2 = flags; break; case EIO_FALLOCATE: fdno = va_arg(ap, int); @@ -577,58 +653,63 @@ length = va_arg(ap, size_t); cb = rpmeioCB; /* XXX */ data = "fallocate"; - fmt = "%p, %d, %ld, %ld | %d, %p, %p"; - req = eio_fallocate (fdno, mode, offset, length, pri, cb, data); +// req = eio_fallocate (fdno, mode, offset, length, pri, cb, data); + req->int1 = fdno; + req->int2 = (long)mode; + req->offs = offset; + req->size = length; break; case EIO_MLOCK: addr = va_arg(ap, void *); length = va_arg(ap, size_t); cb = rpmeioCB; /* XXX */ data = "mlock"; - fmt = "%p, %zu | %d, %p, %p"; - req = eio_mlock(addr, length, pri, cb, data); +// req = eio_mlock(addr, length, pri, cb, data); + req->ptr2 = addr; + req->size = length; break; case EIO_MLOCKALL: fdno = va_arg(ap, int); cb = rpmeioCB; /* XXX */ data = "mlockall"; - fmt = "%d | %d, %p, %p"; - req = eio_mlockall(flags, pri, cb, data); +// req = eio_mlockall(flags, pri, cb, data); + req->int1 = fdno; break; case EIO_GROUP: cb = rpmeioCB; /* XXX */ data = "group"; pri = EIO_PRI_MAX; /* XXX */ - fmt = "| %p, %p"; - req = eio_grp(cb, data); +// req = eio_grp(cb, data); break; case EIO_NOP: cb = rpmeioCB; data = "nop"; - fmt = "| %d, %p, %p"; - req = eio_nop(pri,cb, data); +// req = eio_nop(pri,cb, data); break; case EIO_BUSY: delay = va_arg(ap, eio_tstamp); cb = rpmeioCB; data = "busy"; - fmt = "%f | %d, %p, %p"; - req = eio_busy(delay, pri, cb, data); +// req = eio_busy(delay, pri, cb, data); + req->nv1 = delay; break; case EIO_REALPATH: path = va_arg(ap, const char *); cb = rpmeioCB; /* XXX */ data = "realpath"; - fmt = "%s | %d, %p, %p"; - req = eio_realpath(path, pri, cb, data); +// req = eio_realpath(path, pri, cb, data); + req->flags |= EIO_FLAG_PTR1_FREE; + req->ptr1 = xstrdup(path); break; case EIO_READDIR: path = va_arg(ap, const char *); flags = va_arg(ap, int); cb = rpmeioCB_open; data = "readdir"; - fmt = "%s, %d | %d, %p, %p"; - req = eio_readdir(path, flags, pri, cb, data); +// req = eio_readdir(path, flags, pri, cb, data); + req->flags |= EIO_FLAG_PTR1_FREE; + req->ptr1 = xstrdup(path); + req->int1 = flags; break; case EIO_OPEN: path = va_arg(ap, const char *); @@ -636,37 +717,45 @@ mode = va_arg(ap, mode_t); cb = rpmeioCB_open; data = "open"; - fmt = "%s, %d, %d | %d, %p, %p"; - req = eio_open(path, flags, mode, pri, cb, data); +// req = eio_open(path, flags, mode, pri, cb, data); + req->flags |= EIO_FLAG_PTR1_FREE; + req->ptr1 = xstrdup(path); + req->int1 = flags; + req->int2 = (long)mode;; break; case EIO_STAT: path = va_arg(ap, const char *); cb = rpmeioCB_stat; data = "stat"; - fmt = "%s | %d, %p, %p"; - req = eio_stat(path, pri, cb, data); +// req = eio_stat(path, pri, cb, data); + req->flags |= EIO_FLAG_PTR1_FREE; + req->ptr1 = xstrdup(path); break; case EIO_LSTAT: path = va_arg(ap, const char *); cb = rpmeioCB_stat; data = "lstat"; - fmt = "%s | %d, %p, %p"; - req = eio_lstat(path, pri, cb, data); +// req = eio_lstat(path, pri, cb, data); + req->flags |= EIO_FLAG_PTR1_FREE; + req->ptr1 = xstrdup(path); break; case EIO_STATVFS: path = va_arg(ap, const char *); cb = rpmeioCB; /* XXX */ data = "statvfs"; - fmt = "%s | %d, %p, %p"; - req = eio_statvfs(path, pri, cb, data); +// req = eio_statvfs(path, pri, cb, data); + req->flags |= EIO_FLAG_PTR1_FREE; + req->ptr1 = xstrdup(path); break; case EIO_TRUNCATE: path = va_arg(ap, const char *); offset = va_arg(ap, off_t); cb = rpmeioCB; data = "truncate"; - fmt = "%s, %ld | %d, %p, %p"; - req = eio_truncate(path, offset, pri, cb, data); +// req = eio_truncate(path, offset, pri, cb, data); + req->flags |= EIO_FLAG_PTR1_FREE; + req->ptr1 = xstrdup(path); + req->offs = offset; break; case EIO_UTIME: path = va_arg(ap, const char *); @@ -674,16 +763,21 @@ mtime = va_arg(ap, eio_tstamp); cb = rpmeioCB; data = "utime"; - fmt = "%s, %p, %p | %d, %p, %p"; - req = eio_utime(path, atime, mtime, pri, cb, data); +// req = eio_utime(path, atime, mtime, pri, cb, data); + req->flags |= EIO_FLAG_PTR1_FREE; + req->ptr1 = xstrdup(path); + req->nv1 = atime; + req->nv2 = mtime; break; case EIO_CHMOD: path = va_arg(ap, const char *); mode = va_arg(ap, mode_t); cb = rpmeioCB; /* XXX */ data = "chmod"; - fmt = "%s, %d | %d, %p, %p"; - req = eio_chmod(path, mode, pri, cb, data); +// req = eio_chmod(path, mode, pri, cb, data); + req->flags |= EIO_FLAG_PTR1_FREE; + req->ptr1 = xstrdup(path); + req->int2 = (long)mode; break; case EIO_CHOWN: path = va_arg(ap, const char *); @@ -691,37 +785,47 @@ gid = va_arg(ap, gid_t); cb = rpmeioCB; data = "chown"; - fmt = "%s, %d, %d | %d, %p, %p"; - req = eio_chown(path, uid, gid, pri, cb, data); +// req = eio_chown(path, uid, gid, pri, cb, data); + req->flags |= EIO_FLAG_PTR1_FREE; + req->ptr1 = xstrdup(path); + req->int2 = (long)uid; + req->int3 = (long)gid; break; case EIO_UNLINK: - cb = rpmeioCB; path = va_arg(ap, const char *); + cb = rpmeioCB; data = "unlink"; - fmt = "%s | %d, %p, %p"; - req = eio_unlink(path, pri, cb, data); +// req = eio_unlink(path, pri, cb, data); + req->flags |= EIO_FLAG_PTR1_FREE; + req->ptr1 = xstrdup(path); break; case EIO_RMDIR: path = va_arg(ap, const char *); cb = rpmeioCB; data = "rmdir"; - fmt = "%s | %d, %p, %p"; - req = eio_rmdir(path, pri, cb, data); +// req = eio_rmdir(path, pri, cb, data); + req->flags |= EIO_FLAG_PTR1_FREE; + req->ptr1 = xstrdup(path); break; case EIO_MKDIR: path = va_arg(ap, const char *); cb = rpmeioCB; data = "mkdir"; - fmt = "%s, %d | %d, %p, %p"; - req = eio_mkdir(path, mode, pri, cb, data); +// req = eio_mkdir(path, mode, pri, cb, data); + req->flags |= EIO_FLAG_PTR1_FREE; + req->ptr1 = xstrdup(path); + req->int2 = (long)mode; break; case EIO_RENAME: path = va_arg(ap, const char *); npath = va_arg(ap, const char *); cb = rpmeioCB; data = "rename"; - fmt = "%s, %s | %d, %p, %p"; - req = eio_rename(path, npath, pri, cb, data); +// req = eio_rename(path, npath, pri, cb, data); + req->flags |= EIO_FLAG_PTR1_FREE; + req->ptr1 = xstrdup(path); + req->flags |= EIO_FLAG_PTR2_FREE; + req->ptr2 = xstrdup(npath); break; case EIO_MKNOD: path = va_arg(ap, const char *); @@ -729,31 +833,41 @@ dev = va_arg(ap, dev_t); cb = rpmeioCB; data = "mknod"; - fmt = "%s, %d, %ld | %d, %p, %p"; - req = eio_mknod(path, mode, dev, pri, cb, data); +// req = eio_mknod(path, mode, dev, pri, cb, data); + req->flags |= EIO_FLAG_PTR1_FREE; + req->ptr1 = xstrdup(path); + req->int2 = (long)mode; + req->offs = (off_t)dev; break; case EIO_LINK: path = va_arg(ap, const char *); npath = va_arg(ap, const char *); cb = rpmeioCB; data = "link"; - fmt = "%s, %s | %d, %p, %p"; - req = eio_link(path, npath, pri, cb, data); +// req = eio_link(path, npath, pri, cb, data); + req->flags |= EIO_FLAG_PTR1_FREE; + req->ptr1 = xstrdup(path); + req->flags |= EIO_FLAG_PTR2_FREE; + req->ptr2 = xstrdup(npath); break; case EIO_SYMLINK: path = va_arg(ap, const char *); npath = va_arg(ap, const char *); cb = rpmeioCB; data = "symlink"; - fmt = "%s, %s | %d, %p, %p"; - req = eio_symlink(path, npath, pri, cb, data); +// req = eio_symlink(path, npath, pri, cb, data); + req->flags |= EIO_FLAG_PTR1_FREE; + req->ptr1 = xstrdup(path); + req->flags |= EIO_FLAG_PTR2_FREE; + req->ptr2 = xstrdup(npath); break; case EIO_READLINK: path = va_arg(ap, const char *); cb = rpmeioCB; data = "readlink"; - fmt = "%s | %d, %p, %p"; - req = eio_readlink(path, pri, cb, data); +// req = eio_readlink(path, pri, cb, data); + req->flags |= EIO_FLAG_PTR1_FREE; + req->ptr1 = xstrdup(path); break; default: assert(0); @@ -762,330 +876,603 @@ va_end(ap); +// eio->req.next = NULL; +// eio->req.wd = NULL; +// eio->req.result = 0; +// eio->req.offs = 0; +// eio->req.size = 0; +// eio->req.ptr1 = NULL; +// eio->req.ptr2 = NULL; +// eio->req.nv1 = 0.0; +// eio->req.nv2 = 0.0; +// eio->req.int1 = 0; +// eio->req.int2 = 0; +// eio->req.int3 = 0; +// eio->req.errorno = 0; + +// eio->req.type = reqtype; +// eio->req.cancelled = 0; +// eio->req.flags = 0; + eio->req.pri = pri; + + eio->req.data = data; + eio->req.finish = cb; +// eio->req.destroy = Eio_destroy; + +// eio->req.feed = NULL; +// eio->req.grp = NULL; +// eio->req.grp_prev = NULL; +// eio->req.grp_next = NULL; + exit: +SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), req); + return req; } +static int rpmeioReqCompare(eio_req * Areq, eio_req * Breq) +{ + int rc = 0; +#ifdef NOTYET +rpmeioDumpREQ(__FUNCTION__, Areq, NULL); +rpmeioDumpREQ(__FUNCTION__, Breq, NULL); + + Eio_destroy(Areq); +#endif + + return rc; +} /*==============================================================*/ 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; } 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) { - eio_req *req = eio_nop(pri,cb, 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); return req; } eio_req *Eio_busy (eio_tstamp delay, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_busy(delay, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_BUSY, delay, 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_sync (int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_sync(pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_SYNC, 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_fsync (int fd, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_fsync(fd, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_FSYNC, fd, 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_fdatasync (int fd, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_fdatasync(fd, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_FDATASYNC, fd, 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_syncfs (int fd, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_syncfs(fd, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_SYNC, fd, 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_msync (void *addr, size_t length, int flags, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_msync(addr, length, flags, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_MSYNC, addr, length, flags, 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_mtouch (void *addr, size_t length, int flags, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_mtouch(addr, length, flags, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_MTOUCH, addr, length, flags, 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_mlock (void *addr, size_t length, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_mlock(addr, length, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_MLOCK, addr, length, 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_mlockall (int flags, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_mlockall(flags, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_MLOCKALL, flags, 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_sync_file_range (int fd, off_t offset, size_t nbytes, unsigned int flags, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_sync_file_range(fd, offset, nbytes, flags, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_SYNC_FILE_RANGE, fd, offset, nbytes, flags, 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_fallocate (int fd, int mode, off_t offset, size_t len, int pri, eio_cb cb, void *data) { - eio_req *req = eio_fallocate (fd, mode, offset, len, pri, cb, data); +#ifdef DYING + eio_req *req = eio_fallocate(fd, mode, offset, len, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_FALLOCATE, fd, mode, offset, len, 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_close (int fd, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_close(fd, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_CLOSE, fd, 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_readahead (int fd, off_t offset, size_t length, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_readahead(fd, offset, length, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_READAHEAD, fd, offset, length, 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_seek (int fd, off_t offset, int whence, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_seek(fd, offset, whence, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_SEEK, fd, offset, whence, 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_read (int fd, void *buf, size_t length, off_t offset, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_read(fd, buf, length, offset, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_READ, fd, buf, length, offset, 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_write (int fd, void *buf, size_t length, off_t offset, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_write(fd, buf, length, offset, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_WRITE, fd, buf, length, offset, 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_fstat (int fd, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_fstat(fd, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_FSTAT, fd, 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_fstatvfs (int fd, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_fstatvfs(fd, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_FSTATVFS, fd, 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_futime (int fd, eio_tstamp atime, eio_tstamp mtime, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_futime(fd, atime, mtime, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_FUTIME, fd, atime, mtime, 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_ftruncate (int fd, off_t offset, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_ftruncate(fd, offset, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_FTRUNCATE, fd, offset, 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_fchmod (int fd, mode_t mode, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_fchmod(fd, mode, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_FCHMOD, fd, mode, 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_fchown (int fd, eio_uid_t uid, eio_gid_t gid, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_fchown(fd, uid, gid, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_FCHOWN, fd, uid, gid, 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_dup2 (int fd, int fd2, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_dup2(fd, fd2, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_DUP2, fd, fd2, 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_sendfile (int out_fd, int in_fd, off_t in_offset, size_t length, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_sendfile(out_fd, in_fd, in_offset, length, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_SENDFILE, out_fd, in_fd, in_offset, length, 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_open (const char *path, int flags, mode_t mode, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_open(path, flags, mode, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_OPEN, path, flags, mode, 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_utime (const char *path, eio_tstamp atime, eio_tstamp mtime, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_utime(path, atime, mtime, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_UTIME, path, atime, mtime, 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_truncate (const char *path, off_t offset, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_truncate(path, offset, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_TRUNCATE, path, offset, 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_chown (const char *path, eio_uid_t uid, eio_gid_t gid, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_chown(path, uid, gid, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_CHOWN, path, uid, gid, 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_chmod (const char *path, mode_t mode, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_chmod(path, mode, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_CHMOD, path, mode, 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_mkdir (const char *path, mode_t mode, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_mkdir(path, mode, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_MKDIR, path, mode, 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_readdir (const char *path, int flags, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_readdir(path, flags, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_READDIR, path, flags, 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_rmdir (const char *path, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_rmdir(path, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_RMDIR, 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; } eio_req *Eio_unlink (const char *path, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_unlink(path, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_UNLINK, 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; } eio_req *Eio_readlink (const char *path, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_readlink(path, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_READLINK, 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; } eio_req *Eio_realpath (const char *path, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_realpath(path, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_REALPATH, 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; } eio_req *Eio_stat (const char *path, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_stat(path, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_STAT, 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; } eio_req *Eio_lstat (const char *path, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_lstat(path, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_LSTAT, 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; } eio_req *Eio_statvfs (const char *path, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_statvfs(path, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_STATVFS, 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; } eio_req *Eio_mknod (const char *path, mode_t mode, dev_t dev, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_mknod(path, mode, dev, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_MKNOD, path, mode, dev, 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_link (const char *path, const char *new_path, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_link(path, new_path, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_LINK, path, new_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; } eio_req *Eio_symlink (const char *path, const char *new_path, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_symlink(path, new_path, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_SYMLINK, path, new_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; } eio_req *Eio_rename (const char *path, const char *new_path, int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_rename(path, new_path, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_RENAME, path, new_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; } eio_req *Eio_custom (void (*execute)(eio_req *), int pri, eio_cb cb, void *data) { +#ifdef DYING eio_req *req = eio_custom(execute, pri, cb, data); +#else + eio_req *req = rpmeioReq(EIO_CUSTOM, execute, 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; } @@ -1095,7 +1482,45 @@ { rpmeio eio = (rpmeio) _eio; if (eio) { - eio->reqtype = 0; + +#ifdef NOTYET + if (eio->req.flags & EIO_FLAG_PTR1_FREE) + eio->req.ptr1 = _free(eio->req.ptr1); + if (eio->req.flags & EIO_FLAG_PTR2_FREE) + eio->req.ptr2 = _free(eio->req.ptr2); +#endif + eio->req.ptr1 = NULL; + eio->req.ptr2 = NULL; + + eio->req.next = NULL; + eio->req.wd = NULL; + eio->req.result = 0; + eio->req.offs = 0; + eio->req.size = 0; + eio->req.ptr1 = NULL; + eio->req.ptr2 = NULL; + eio->req.nv1 = 0.0; + eio->req.nv2 = 0.0; + eio->req.int1 = 0; + eio->req.int2 = 0; + eio->req.int3 = 0; + eio->req.errorno = 0; + + eio->req.type = 0; + eio->req.cancelled = 0; + eio->req.flags = 0; + eio->req.pri = 0; + + eio->req.data = NULL; + eio->req.finish = NULL; + eio->req.destroy = NULL; + + eio->req.feed = NULL; + eio->req.grp = NULL; + eio->req.grp_prev = NULL; + eio->req.grp_next = NULL; + eio->req.grp_first = NULL; + } } @@ -1107,7 +1532,34 @@ { rpmeio eio = rpmeioGetPool(_rpmeioPool); - eio->reqtype = reqtype; + eio->req.next = NULL; + eio->req.wd = NULL; + eio->req.result = 0; + eio->req.offs = 0; + eio->req.size = 0; + eio->req.ptr1 = NULL; + eio->req.ptr2 = NULL; + eio->req.nv1 = 0.0; + eio->req.nv2 = 0.0; + eio->req.int1 = 0; + eio->req.int2 = 0; + eio->req.int3 = 0; + eio->req.errorno = 0; + + eio->req.type = reqtype; + eio->req.cancelled = 0; + eio->req.flags = 0; + eio->req.pri = 0; + + eio->req.data = NULL; + eio->req.finish = NULL; + eio->req.destroy = Eio_destroy; + + eio->req.feed = NULL; + eio->req.grp = NULL; + eio->req.grp_prev = NULL; + eio->req.grp_next = NULL; + eio->req.grp_first = NULL; return rpmeioLink(eio); } @@ . patch -p0 <<'@@ .' Index: rpm/rpmio/rpmeio.h ============================================================================ $ cvs diff -u -r1.1.2.2 -r1.1.2.3 rpmeio.h --- rpm/rpmio/rpmeio.h 15 Jun 2017 07:16:18 -0000 1.1.2.2 +++ rpm/rpmio/rpmeio.h 16 Jun 2017 06:14:09 -0000 1.1.2.3 @@ -85,9 +85,7 @@ struct rpmeio_s { struct rpmioItem_s _item; /*!< usage mutex and pool identifier. */ - eio_req *req; - eio_req _req; - rpmeioType reqtype; + eio_req req; }; RPM_GNUC_CONST @@ -104,8 +102,9 @@ void rpmeioLoop(void); -void rpmeioCancel(eio_req * req); -void rpmeioCancel(eio_req * req); +void Eio_cancel(eio_req * req); +void Eio_destroy(eio_req * req); +void Eio_submit(eio_req * req); int rpmeioCB(eio_req * req); int rpmeioCB_readdir(eio_req * req); @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository rpm-cvs@rpm5.org