Rusty Russell <[EMAIL PROTECTED]> writes:

> I recently tried to use libaio (0.3.106), and discovered it didn't have
> eventfd support.  Or preadv/pwritev support.  And the testsuite didn't
> compile.  Or work.

> Anyway, it's shipped by the distros, so I figure it's worth patching.
> I'm cc'ing Ben in the hope he's still maintaining it.  If not I'll
> find a home somewhere for it.

Thanks for doing this, Rusty.  I have a few comments below.

> diff -ur libaio-0.3.106/ChangeLog libaio-0.3.106-aio_abi/ChangeLog
> --- libaio-0.3.106/ChangeLog  2002-10-01 08:09:56.000000000 +1000
> +++ libaio-0.3.106-aio_abi/ChangeLog  2008-01-03 17:48:48.000000000 +1100
> @@ -1,3 +1,14 @@
> +rusty-v1
> +     - Make tests compile again on modern systems (warnings + -Werror)
> +     - Add 'make partcheck' and don't require manual setup for testing.
> +     - Change test harness to compile against this dir, not global install
> +     - Fix 5.t for archs where PROT_WRITE mappings are readable.
> +     - Allow sending of SIGXFSZ on aio over limits
> +     - Explicitly specify bash for runtests.sh
> +     - Remove (never-merged?) io_prep_poll

Well, I believe this was supported in Red Hat AS2.1 and RHEL 3.

> +     - Add io_prep_preadv and io_prep_pwritev
> +     - Add eventfd support (io_set_eventfd).
> +
>  0.4.0
>       - remove libredhat-kernel
>       - add rough outline for man pages
> diff -ur libaio-0.3.106/harness/cases/5.t 
> libaio-0.3.106-aio_abi/harness/cases/5.t
> --- libaio-0.3.106/harness/cases/5.t  2002-04-20 10:26:22.000000000 +1000
> +++ libaio-0.3.106-aio_abi/harness/cases/5.t  2008-01-03 16:29:37.000000000 
> +1100
> @@ -3,6 +3,7 @@
>  */
>  #include "aio_setup.h"
>  #include <sys/mman.h>
> +#include <errno.h>
>  
>  int test_main(void)
>  {
> @@ -40,7 +41,13 @@
>       assert(buf != (char *)-1);
>  
>       status |= attempt_rw(rwfd, buf, SIZE,  0,  READ, SIZE);
> -     status |= attempt_rw(rwfd, buf, SIZE,  0, WRITE, -EFAULT);
> +
> +     /* Whether PROT_WRITE is readable is arch-dependent.  So compare
> +      * against pread result. */
> +     res = write(rwfd, buf, SIZE);
> +     if (res < 0)
> +             res = -errno;
> +     status |= attempt_rw(rwfd, buf, SIZE,  0, WRITE, res);

Am I missing something, or does the code change do the opposite of
what your comment suggests?

> diff -ur libaio-0.3.106/harness/cases/8.t 
> libaio-0.3.106-aio_abi/harness/cases/8.t
> --- libaio-0.3.106/harness/cases/8.t  2008-01-03 15:13:05.000000000 +1100
> +++ libaio-0.3.106-aio_abi/harness/cases/8.t  2008-01-03 18:47:23.000000000 
> +1100
> @@ -2,44 +2,23 @@
>  - Ditto for the above three tests at the offset maximum (largest
>    possible ext2/3 file size.) (8.t)
>   */
> -#include <sys/vfs.h>
> -
> -#define EXT2_OLD_SUPER_MAGIC 0xEF51
> -#define EXT2_SUPER_MAGIC     0xEF53
> +#include <sys/types.h>
> +#include <unistd.h>
>  
>  long long get_fs_limit(int fd)
>  {
> -     struct statfs s;
> -     int res;
> -     long long lim = 0;
> -
> -     res = fstatfs(fd, &s);          assert(res == 0);
> +     long long min = 0, max = 100000000000000ULL;
> +     char c = 0;

How did you choose this upper bound?

Thanks,

Jeff

-- 
Ubuntu-devel-discuss mailing list
Ubuntu-devel-discuss@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel-discuss

Reply via email to