[PATCH -mm 0/7][AIO] - AIO completion signal notification v6

Sébastien Dugué
2007-02-01T09:39:09Z

Hi Andrew,

here is the latest rework of the aio notification and listio support
patches with comments from Oleg Nesterov and you addressed.

Sébastien.

This set now consists in 7 patches:

1. rework-compat-sys-io-submit: cleanup the sys_io_submit() compat layer,
making it more efficient and laying out the base for the following patches

2. aio-header-fix-includes: fixes the double inclusion of uio.h in aio.h

3. aio-fix-access_ok-check: fixes the access_ok() checks

4. make-good_sigevent-non-static: move good_sigevent into signal.c, rename
it to something more meaningfull and make it non-static

5. make-__sigqueue_alloc-free-non-static: make __sigqueue_alloc() and
__sigqueue_free() non static

6. aio-notify-sig: the AIO completion signal notification

7. add-listio-syscall-support: adds listio support via a new syscall

Description are in the individual patches.

Changes from v5: based on comments from Oleg Nesterov and Andrew Morton

- Fix for signo range not checked in the SIGEV_THREAD_ID case in
good_sigevent()
- renamed good_sigevent() to sigevent_find_task()

- Fixed the access_ok checks in sys_io_submit() and
compat_sys_io_submit()

- Made __sigqueue_alloc() and __sigqueue_free() non static
- Reworked the aio code to directly use __sigqueue_alloc() and
__sigqueue_free() and avoid messing with SIGQUEUE_PREALLOC

- Removed the unneeded PF_EXITING check in aio_setup_sigevent()
- Added a comment in aio_setup_sigevent() for why there is no task
ref leak
- Changed read_lock(&tasklist_lock) to rcu_read_lock() in
aio_setup_sigevent()

- Fixed an ioctx reference leak in compat_sys_lio_submit()
- Renamed lio_check() as lio_notify()
- Added comments to lio_notify() and lio_create()
- Replaced sigqueue_free() by __sigqueue_free() in lio_notify()

Changes from v4:
No comments received for v4, so it must be perfect ;-)
replaced the IOCB_CMD_GROUP listio implementation with Bharata's
syscall approach which I find much cleaner.

Changes from v3:

- added justification for the compat_sys_io_submit() cleanup - Zach Brown
- more cleanups in compat_sys_io_submit() to put it in line with
sys_io_submit() - Zach Brown

- Changed "Export good_sigevent()" patch name to "Make good_sigevent()
non-static" to better describe what it does. - Christoph Hellwig
- Reworked good_sigevent() to make it more readable. - Christoph Hellwig

- Simplified the use of the SIGEV_* constants in signal notification -
Christoph Hellwig
- Take a reference on the target task both for the SIGEV_THREAD_ID and
SIGEV_SIGNAL cases.

Changes from v2:
- rebased to 2.6.19-rc6-mm2
- reworked the sys_io_submit() compat layer as suggested by Zach Brown
- fixed saving of a pointer to a task struct in aio-notify-sig as
pointed out by Andrew Morton

Changes from v1:
- cleanups suggested by Christoph Hellwig, Badari Pulavarty and
Zach Brown
- added lisio patch