2.6.20-rc4: async I/O support for inotify
PATCH 1/1 2.6.20-rc4: async I/O support for inotify
Hello,
this is a proposal async I/O notification support for the inotify.
Dmitry
fs/inotify_user.c +10 -0
@@ -72,6 +72,7 @@*/ struct inotify_device {wait_queue_head_t wq;/* wait queue for i/o */ +struct fasync_struct *fasync;/* async i/o notification */ struct mutex ev_mutex;/* protects event queue */ struct mutex up_mutex;/* synchronizes watch updates */ struct list_head events;/* list of queued events */
@@ -301,6 +302,7 @@ dev->queue_size +=sizeof (struct inotify_event ) + kevent->event.len;list_add_tail (&kevent->list, &dev->events);wake_up_interruptible (&dev->wq); +kill_fasync (&dev->fasync,SIGIO ,POLL_IN ); out:mutex_unlock (&dev->ev_mutex);
@@ -485,6 +487,7 @@ {struct inotify_device *dev = file->private_data; +fasync_helper (-1 , file,0 , &dev->fasync);inotify_destroy (dev->ih);/* destroy all of the events on this device */
@@ -518,12 +521,19 @@return ret; } +static int inotify_fasync (int fd,struct file *file,int on) +{ +struct inotify_device *dev = file->private_data; +return fasync_helper (fd, file, on, &dev->fasync); +} +static const struct file_operations inotify_fops = { .poll = inotify_poll, .read = inotify_read, .release = inotify_release, .unlocked_ioctl = inotify_ioctl, .compat_ioctl = inotify_ioctl, + .fasync = inotify_fasync, };static const struct inotify_operations inotify_user_ops = {