diff -urNX ../exclude linux-2.3.99pre8-linus/fs/adfs/dir.c linux-2.3.99pre8+lock/fs/adfs/dir.c
--- linux-2.3.99pre8-linus/fs/adfs/dir.c Tue Apr 25 02:13:25 2000
+++ linux-2.3.99pre8+lock/fs/adfs/dir.c Sat May 20 04:15:00 2000
@@ -197,6 +197,7 @@
read: generic_read_dir,
readdir: adfs_readdir,
fsync: file_fsync,
+ fasync: file_fasync,
};
static int
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/affs/dir.c linux-2.3.99pre8+lock/fs/affs/dir.c
--- linux-2.3.99pre8-linus/fs/affs/dir.c Sun Mar 12 12:03:14 2000
+++ linux-2.3.99pre8+lock/fs/affs/dir.c Sat May 20 04:10:19 2000
@@ -30,6 +30,7 @@
read: generic_read_dir,
readdir: affs_readdir,
fsync: file_fsync,
+ fasync: file_fasync,
};
/*
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/autofs/dir.c linux-2.3.99pre8+lock/fs/autofs/dir.c
--- linux-2.3.99pre8-linus/fs/autofs/dir.c Sun Mar 12 12:03:14 2000
+++ linux-2.3.99pre8+lock/fs/autofs/dir.c Sat May 20 04:14:10 2000
@@ -45,6 +45,7 @@
struct file_operations autofs_dir_operations = {
read: generic_read_dir,
readdir: autofs_dir_readdir,
+ fasync: file_fasync,
};
struct inode_operations autofs_dir_inode_operations = {
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/autofs/root.c linux-2.3.99pre8+lock/fs/autofs/root.c
--- linux-2.3.99pre8-linus/fs/autofs/root.c Mon May 15 07:59:24 2000
+++ linux-2.3.99pre8+lock/fs/autofs/root.c Sat May 20 04:14:17 2000
@@ -27,6 +27,7 @@
read: generic_read_dir,
readdir: autofs_root_readdir,
ioctl: autofs_root_ioctl,
+ fasync: file_fasync,
};
struct inode_operations autofs_root_inode_operations = {
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/autofs4/root.c linux-2.3.99pre8+lock/fs/autofs4/root.c
--- linux-2.3.99pre8-linus/fs/autofs4/root.c Mon May 15 07:59:24 2000
+++ linux-2.3.99pre8+lock/fs/autofs4/root.c Sat May 20 04:15:55 2000
@@ -29,11 +29,13 @@
read: generic_read_dir,
readdir: autofs4_dir_readdir,
ioctl: autofs4_root_ioctl,
+ fasync: file_fasync,
};
struct file_operations autofs4_dir_operations = {
read: generic_read_dir,
readdir: autofs4_dir_readdir,
+ fasync: file_fasync,
};
struct inode_operations autofs4_root_inode_operations = {
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/bfs/dir.c linux-2.3.99pre8+lock/fs/bfs/dir.c
--- linux-2.3.99pre8-linus/fs/bfs/dir.c Sun Mar 12 12:03:45 2000
+++ linux-2.3.99pre8+lock/fs/bfs/dir.c Sat May 20 04:15:32 2000
@@ -74,6 +74,7 @@
read: generic_read_dir,
readdir: bfs_readdir,
fsync: file_fsync,
+ fasync: file_fasync,
};
extern void dump_imap(const char *, struct super_block *);
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/coda/dir.c linux-2.3.99pre8+lock/fs/coda/dir.c
--- linux-2.3.99pre8-linus/fs/coda/dir.c Tue Apr 25 02:11:48 2000
+++ linux-2.3.99pre8+lock/fs/coda/dir.c Sat May 20 04:14:33 2000
@@ -83,6 +83,7 @@
open: coda_open,
release: coda_release,
fsync: coda_fsync,
+ fasync: file_fasync,
};
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/cramfs/inode.c linux-2.3.99pre8+lock/fs/cramfs/inode.c
--- linux-2.3.99pre8-linus/fs/cramfs/inode.c Mon May 15 07:59:24 2000
+++ linux-2.3.99pre8+lock/fs/cramfs/inode.c Sat May 20 04:15:45 2000
@@ -348,6 +348,7 @@
static struct file_operations cramfs_directory_operations = {
read: generic_read_dir,
readdir: cramfs_readdir,
+ fasync: file_fasync,
};
static struct inode_operations cramfs_dir_inode_operations = {
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/devfs/base.c linux-2.3.99pre8+lock/fs/devfs/base.c
--- linux-2.3.99pre8-linus/fs/devfs/base.c Mon May 15 07:59:24 2000
+++ linux-2.3.99pre8+lock/fs/devfs/base.c Sat May 20 04:16:26 2000
@@ -724,6 +724,7 @@
read: devfsd_read,
ioctl: devfsd_ioctl,
release: devfsd_close,
+ fasync: file_fasync,
};
@@ -2546,6 +2547,7 @@
read: devfs_read,
readdir: devfs_readdir,
open: devfs_open,
+ fasync: file_fasync,
};
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/devpts/root.c linux-2.3.99pre8+lock/fs/devpts/root.c
--- linux-2.3.99pre8-linus/fs/devpts/root.c Mon May 15 07:59:24 2000
+++ linux-2.3.99pre8+lock/fs/devpts/root.c Sat May 20 04:15:12 2000
@@ -23,6 +23,7 @@
struct file_operations devpts_root_operations = {
read: generic_read_dir,
readdir: devpts_root_readdir,
+ fasync: file_fasync,
};
struct inode_operations devpts_root_inode_operations = {
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/efs/dir.c linux-2.3.99pre8+lock/fs/efs/dir.c
--- linux-2.3.99pre8-linus/fs/efs/dir.c Sun Mar 12 12:03:14 2000
+++ linux-2.3.99pre8+lock/fs/efs/dir.c Sat May 20 04:15:18 2000
@@ -11,6 +11,7 @@
struct file_operations efs_dir_operations = {
read: generic_read_dir,
readdir: efs_readdir,
+ fasync: file_fasync,
};
struct inode_operations efs_dir_inode_operations = {
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/ext2/dir.c linux-2.3.99pre8+lock/fs/ext2/dir.c
--- linux-2.3.99pre8-linus/fs/ext2/dir.c Sun Mar 19 23:55:33 2000
+++ linux-2.3.99pre8+lock/fs/ext2/dir.c Sat May 20 03:47:17 2000
@@ -27,6 +27,7 @@
readdir: ext2_readdir,
ioctl: ext2_ioctl,
fsync: ext2_sync_file,
+ fasync: file_fasync,
};
int ext2_check_dir_entry (const char * function, struct inode * dir,
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/fat/dir.c linux-2.3.99pre8+lock/fs/fat/dir.c
--- linux-2.3.99pre8-linus/fs/fat/dir.c Sun Mar 12 12:03:14 2000
+++ linux-2.3.99pre8+lock/fs/fat/dir.c Sat May 20 04:00:06 2000
@@ -39,6 +39,7 @@
readdir: fat_readdir,
ioctl: fat_dir_ioctl,
fsync: file_fsync,
+ fasync: file__fasync,
};
/*
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/hfs/dir_cap.c linux-2.3.99pre8+lock/fs/hfs/dir_cap.c
--- linux-2.3.99pre8-linus/fs/hfs/dir_cap.c Sun Mar 12 12:03:14 2000
+++ linux-2.3.99pre8+lock/fs/hfs/dir_cap.c Sat May 20 04:14:40 2000
@@ -61,6 +61,7 @@
read: generic_read_dir,
readdir: cap_readdir,
fsync: file_fsync,
+ fasync: file_fasync,
};
struct inode_operations hfs_cap_ndir_inode_operations = {
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/hfs/dir_dbl.c linux-2.3.99pre8+lock/fs/hfs/dir_dbl.c
--- linux-2.3.99pre8-linus/fs/hfs/dir_dbl.c Sun Mar 12 12:03:14 2000
+++ linux-2.3.99pre8+lock/fs/hfs/dir_dbl.c Sat May 20 04:14:47 2000
@@ -60,6 +60,7 @@
read: generic_read_dir,
readdir: dbl_readdir,
fsync: file_fsync,
+ fasync: file_fasync,
};
struct inode_operations hfs_dbl_dir_inode_operations = {
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/hfs/dir_nat.c linux-2.3.99pre8+lock/fs/hfs/dir_nat.c
--- linux-2.3.99pre8-linus/fs/hfs/dir_nat.c Sun Mar 12 12:03:14 2000
+++ linux-2.3.99pre8+lock/fs/hfs/dir_nat.c Sat May 20 04:14:53 2000
@@ -66,6 +66,7 @@
read: generic_read_dir,
readdir: nat_readdir,
fsync: file_fsync,
+ fasync: file_fasync,
};
struct inode_operations hfs_nat_ndir_inode_operations = {
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/hpfs/inode.c linux-2.3.99pre8+lock/fs/hpfs/inode.c
--- linux-2.3.99pre8-linus/fs/hpfs/inode.c Thu Mar 16 02:05:37 2000
+++ linux-2.3.99pre8+lock/fs/hpfs/inode.c Sat May 20 04:00:28 2000
@@ -32,6 +32,7 @@
open: hpfs_open,
release: hpfs_dir_release,
fsync: hpfs_file_fsync,
+ fasync: file_fasync,
};
static struct inode_operations hpfs_dir_iops =
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/isofs/dir.c linux-2.3.99pre8+lock/fs/isofs/dir.c
--- linux-2.3.99pre8-linus/fs/isofs/dir.c Mon May 15 07:59:25 2000
+++ linux-2.3.99pre8+lock/fs/isofs/dir.c Sat May 20 04:00:35 2000
@@ -30,6 +30,7 @@
{
read: generic_read_dir,
readdir: isofs_readdir,
+ fasync: file_fasync,
};
/*
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/minix/dir.c linux-2.3.99pre8+lock/fs/minix/dir.c
--- linux-2.3.99pre8-linus/fs/minix/dir.c Sun Mar 12 12:03:14 2000
+++ linux-2.3.99pre8+lock/fs/minix/dir.c Sat May 20 04:00:40 2000
@@ -18,6 +18,7 @@
read: generic_read_dir,
readdir: minix_readdir,
fsync: file_fsync,
+ fasync: file_fasync;
};
static int minix_readdir(struct file * filp,
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/namei.c linux-2.3.99pre8+lock/fs/namei.c
--- linux-2.3.99pre8-linus/fs/namei.c Mon May 15 07:59:25 2000
+++ linux-2.3.99pre8+lock/fs/namei.c Sat May 20 04:42:06 2000
@@ -851,6 +851,9 @@
error = dir->i_op->create(dir, dentry, mode);
exit_lock:
up(&dir->i_zombie);
+ if (!error) {
+ inode_send_fasync(dir);
+ }
return error;
}
@@ -1068,8 +1076,12 @@
DQUOT_INIT(dir);
error = dir->i_op->mknod(dir, dentry, mode, dev);
+
exit_lock:
up(&dir->i_zombie);
+ if (!error) {
+ inode_send_fasync(dir);
+ }
return error;
}
@@ -1137,6 +1149,9 @@
exit_lock:
up(&dir->i_zombie);
+ if (!error) {
+ inode_send_fasync(dir);
+ }
return error;
}
@@ -1220,6 +1235,9 @@
dentry->d_inode->i_flags |= S_DEAD;
double_up(&dir->i_zombie, &dentry->d_inode->i_zombie);
dput(dentry);
+ if (!error) {
+ inode_send_fasync(dir);
+ }
return error;
}
@@ -1279,6 +1297,9 @@
}
}
up(&dir->i_zombie);
+ if (!error) {
+ inode_send_fasync(dir);
+ }
return error;
}
@@ -1345,6 +1366,9 @@
exit_lock:
up(&dir->i_zombie);
+ if (!error) {
+ inode_send_fasync(dir);
+ }
return error;
}
@@ -1417,6 +1441,9 @@
exit_lock:
up(&dir->i_zombie);
+ if (!error) {
+ inode_send_fasync(dir);
+ }
return error;
}
@@ -1615,10 +1642,16 @@
int vfs_rename(struct inode *old_dir, struct dentry *old_dentry,
struct inode *new_dir, struct dentry *new_dentry)
{
+ int error;
if (S_ISDIR(old_dentry->d_inode->i_mode))
- return vfs_rename_dir(old_dir,old_dentry,new_dir,new_dentry);
+ error = vfs_rename_dir(old_dir,old_dentry,new_dir,new_dentry);
else
- return vfs_rename_other(old_dir,old_dentry,new_dir,new_dentry);
+ error = vfs_rename_other(old_dir,old_dentry,new_dir,new_dentry);
+ if (!error) {
+ inode_send_fasync(old_dir);
+ inode_send_fasync(new_dir);
+ }
+ return error;
}
static inline int do_rename(const char * oldname, const char * newname)
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/ncpfs/dir.c linux-2.3.99pre8+lock/fs/ncpfs/dir.c
--- linux-2.3.99pre8-linus/fs/ncpfs/dir.c Sun Mar 12 12:03:45 2000
+++ linux-2.3.99pre8+lock/fs/ncpfs/dir.c Sat May 20 04:09:58 2000
@@ -49,6 +49,7 @@
read: generic_read_dir,
readdir: ncp_readdir,
ioctl: ncp_ioctl,
+ fasync: file_fasync,
};
struct inode_operations ncp_dir_inode_operations =
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/nfs/dir.c linux-2.3.99pre8+lock/fs/nfs/dir.c
--- linux-2.3.99pre8-linus/fs/nfs/dir.c Mon May 15 07:58:45 2000
+++ linux-2.3.99pre8+lock/fs/nfs/dir.c Sat May 20 04:00:34 2000
@@ -54,6 +54,7 @@
readdir: nfs_readdir,
open: nfs_open,
release: nfs_release,
+ fasync: file_fasync,
};
struct inode_operations nfs_dir_inode_operations = {
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/ntfs/fs.c linux-2.3.99pre8+lock/fs/ntfs/fs.c
--- linux-2.3.99pre8-linus/fs/ntfs/fs.c Mon May 15 07:59:25 2000
+++ linux-2.3.99pre8+lock/fs/ntfs/fs.c Sat May 20 04:15:07 2000
@@ -577,6 +577,7 @@
static struct file_operations ntfs_dir_operations = {
read: generic_read_dir,
readdir: ntfs_readdir,
+ fasync: file_fasync,
};
static struct inode_operations ntfs_dir_inode_operations = {
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/open.c linux-2.3.99pre8+lock/fs/open.c
--- linux-2.3.99pre8-linus/fs/open.c Mon May 15 07:59:25 2000
+++ linux-2.3.99pre8+lock/fs/open.c Sat May 20 04:34:08 2000
@@ -661,6 +661,7 @@
if (error)
goto cleanup_all;
}
+ inode_send_fasync(dentry->d_parent->d_inode);
f->f_flags &= ~(O_CREAT | O_EXCL | O_NOCTTY | O_TRUNC);
return f;
@@ -817,6 +818,7 @@
retval = 0;
if (filp->f_op && filp->f_op->flush)
retval = filp->f_op->flush(filp);
+ file_fasync(-1, filp, 0);
locks_remove_posix(filp, id);
fput(filp);
return retval;
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/openpromfs/inode.c linux-2.3.99pre8+lock/fs/openpromfs/inode.c
--- linux-2.3.99pre8-linus/fs/openpromfs/inode.c Tue Apr 25 02:11:49 2000
+++ linux-2.3.99pre8+lock/fs/openpromfs/inode.c Sat May 20 04:15:39 2000
@@ -565,6 +565,7 @@
static struct file_operations openprom_operations = {
read: generic_read_dir,
readdir: openpromfs_readdir,
+ fasync: file_fasync,
};
static struct inode_operations openprom_alias_inode_operations = {
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/pipe.c linux-2.3.99pre8+lock/fs/pipe.c
--- linux-2.3.99pre8-linus/fs/pipe.c Mon May 15 07:59:25 2000
+++ linux-2.3.99pre8+lock/fs/pipe.c Sat May 20 04:00:59 2000
@@ -388,6 +388,7 @@
ioctl: pipe_ioctl,
open: pipe_read_open,
release: pipe_read_release,
+ fasync: file_fasync,
};
struct file_operations write_fifo_fops = {
@@ -398,6 +399,7 @@
ioctl: pipe_ioctl,
open: pipe_write_open,
release: pipe_write_release,
+ fasync: file_fasync,
};
struct file_operations rdwr_fifo_fops = {
@@ -408,6 +410,7 @@
ioctl: pipe_ioctl,
open: pipe_rdwr_open,
release: pipe_rdwr_release,
+ fasync: file_fasync,
};
struct file_operations read_pipe_fops = {
@@ -418,6 +421,7 @@
ioctl: pipe_ioctl,
open: pipe_read_open,
release: pipe_read_release,
+ fasync: file_fasync,
};
struct file_operations write_pipe_fops = {
@@ -438,6 +442,7 @@
ioctl: pipe_ioctl,
open: pipe_rdwr_open,
release: pipe_rdwr_release,
+ fasync: file_fasync,
};
struct inode* pipe_new(struct inode* inode)
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/proc/base.c linux-2.3.99pre8+lock/fs/proc/base.c
--- linux-2.3.99pre8-linus/fs/proc/base.c Mon May 15 07:59:25 2000
+++ linux-2.3.99pre8+lock/fs/proc/base.c Sat May 20 04:00:43 2000
@@ -855,6 +855,7 @@
static struct file_operations proc_base_operations = {
read: generic_read_dir,
readdir: proc_base_readdir,
+ fasync: file_fasync,
};
static struct inode_operations proc_base_inode_operations = {
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/proc/generic.c linux-2.3.99pre8+lock/fs/proc/generic.c
--- linux-2.3.99pre8-linus/fs/proc/generic.c Mon May 15 07:59:25 2000
+++ linux-2.3.99pre8+lock/fs/proc/generic.c Sat May 20 04:18:28 2000
@@ -331,6 +331,7 @@
*/
static struct file_operations proc_dir_operations = {
readdir: proc_readdir,
+ fasync: file_fasync,
};
/*
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/proc/root.c linux-2.3.99pre8+lock/fs/proc/root.c
--- linux-2.3.99pre8-linus/fs/proc/root.c Mon May 15 07:59:25 2000
+++ linux-2.3.99pre8+lock/fs/proc/root.c Sat May 20 04:00:45 2000
@@ -111,7 +111,8 @@
* directory handling functions for that..
*/
static struct file_operations proc_root_operations = {
- readdir: proc_root_readdir,
+ readdir: proc_root_readdir,
+ fasync: file_fasync,
};
/*
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/qnx4/dir.c linux-2.3.99pre8+lock/fs/qnx4/dir.c
--- linux-2.3.99pre8-linus/fs/qnx4/dir.c Sun Mar 12 12:03:15 2000
+++ linux-2.3.99pre8+lock/fs/qnx4/dir.c Sat May 20 04:14:25 2000
@@ -83,6 +83,7 @@
read: generic_read_dir,
readdir: qnx4_readdir,
fsync: file_fsync,
+ fasync: file_fasync,
};
struct inode_operations qnx4_dir_inode_operations =
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/ramfs/inode.c linux-2.3.99pre8+lock/fs/ramfs/inode.c
--- linux-2.3.99pre8-linus/fs/ramfs/inode.c Mon May 15 07:59:25 2000
+++ linux-2.3.99pre8+lock/fs/ramfs/inode.c Sat May 20 04:16:13 2000
@@ -336,6 +336,7 @@
static struct file_operations ramfs_dir_operations = {
read: generic_read_dir,
readdir: ramfs_readdir,
+ fasync: file_fasync,
};
static struct inode_operations ramfs_dir_inode_operations = {
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/read_write.c linux-2.3.99pre8+lock/fs/read_write.c
--- linux-2.3.99pre8-linus/fs/read_write.c Tue Apr 25 02:13:26 2000
+++ linux-2.3.99pre8+lock/fs/read_write.c Sat May 20 04:39:32 2000
@@ -132,6 +132,8 @@
ret = read(file, buf, count, &file->f_pos);
}
}
+ if (!ret)
+ inode_send_fasync(file->f_dentry->d_parent->d_inode);
fput(file);
}
return ret;
@@ -156,6 +158,8 @@
ret = write(file, buf, count, &file->f_pos);
}
}
+ if (!ret)
+ inode_send_fasync(file->f_dentry->d_parent->d_inode);
fput(file);
}
return ret;
@@ -264,6 +268,8 @@
if (file->f_op && (file->f_mode & FMODE_READ) &&
(file->f_op->readv || file->f_op->read))
ret = do_readv_writev(VERIFY_WRITE, file, vector, count);
+ if (!ret)
+ inode_send_fasync(file->f_dentry->d_parent->d_inode);
fput(file);
bad_file:
@@ -284,6 +290,8 @@
if (file->f_op && (file->f_mode & FMODE_WRITE) &&
(file->f_op->writev || file->f_op->write))
ret = do_readv_writev(VERIFY_READ, file, vector, count);
+ if (!ret)
+ inode_send_fasync(file->f_dentry->d_parent->d_inode);
fput(file);
bad_file:
@@ -317,6 +325,8 @@
if (pos < 0)
goto out;
ret = read(file, buf, count, &pos);
+ if (!ret)
+ inode_send_fasync(file->f_dentry->d_parent->d_inode);
out:
fput(file);
bad_file:
@@ -347,6 +357,8 @@
goto out;
ret = write(file, buf, count, &pos);
+ if (!ret)
+ inode_send_fasync(file->f_dentry->d_parent->d_inode);
out:
fput(file);
bad_file:
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/romfs/inode.c linux-2.3.99pre8+lock/fs/romfs/inode.c
--- linux-2.3.99pre8-linus/fs/romfs/inode.c Mon May 15 07:59:25 2000
+++ linux-2.3.99pre8+lock/fs/romfs/inode.c Sat May 20 04:14:00 2000
@@ -434,6 +434,7 @@
static struct file_operations romfs_dir_operations = {
read: generic_read_dir,
readdir: romfs_readdir,
+ fasync: file_fasync,
};
static struct inode_operations romfs_dir_inode_operations = {
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/smbfs/dir.c linux-2.3.99pre8+lock/fs/smbfs/dir.c
--- linux-2.3.99pre8-linus/fs/smbfs/dir.c Sun Mar 12 12:03:45 2000
+++ linux-2.3.99pre8+lock/fs/smbfs/dir.c Sat May 20 04:00:14 2000
@@ -35,6 +35,7 @@
readdir: smb_readdir,
ioctl: smb_ioctl,
open: smb_dir_open,
+ fasync: file_fasync,
};
struct inode_operations smb_dir_inode_operations =
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/sysv/dir.c linux-2.3.99pre8+lock/fs/sysv/dir.c
--- linux-2.3.99pre8-linus/fs/sysv/dir.c Sun Mar 12 12:03:15 2000
+++ linux-2.3.99pre8+lock/fs/sysv/dir.c Sat May 20 04:00:22 2000
@@ -25,6 +25,7 @@
read: generic_read_dir,
readdir: sysv_readdir,
fsync: file_fsync,
+ fasync: file_fasync,
};
static int sysv_readdir(struct file * filp, void * dirent, filldir_t filldir)
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/udf/dir.c linux-2.3.99pre8+lock/fs/udf/dir.c
--- linux-2.3.99pre8-linus/fs/udf/dir.c Sun Mar 12 12:03:30 2000
+++ linux-2.3.99pre8+lock/fs/udf/dir.c Sat May 20 04:15:26 2000
@@ -53,6 +53,7 @@
readdir: udf_readdir,
ioctl: udf_ioctl,
fsync: udf_sync_file,
+ fasync: file_fasync,
};
/*
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/ufs/dir.c linux-2.3.99pre8+lock/fs/ufs/dir.c
--- linux-2.3.99pre8-linus/fs/ufs/dir.c Sun Mar 19 23:55:33 2000
+++ linux-2.3.99pre8+lock/fs/ufs/dir.c Sat May 20 04:10:11 2000
@@ -181,4 +181,5 @@
read: generic_read_dir,
readdir: ufs_readdir,
fsync: file_fsync,
+ fasync: file_fasync,
};
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/umsdos/dir.c linux-2.3.99pre8+lock/fs/umsdos/dir.c
--- linux-2.3.99pre8-linus/fs/umsdos/dir.c Tue Apr 25 02:13:26 2000
+++ linux-2.3.99pre8+lock/fs/umsdos/dir.c Sat May 20 04:00:32 2000
@@ -789,6 +789,7 @@
read: generic_read_dir,
readdir: UMSDOS_readdir,
ioctl: UMSDOS_ioctl_dir,
+ fasync: file_fasync,
};
struct inode_operations umsdos_dir_inode_operations =
diff -urNX ../exclude linux-2.3.99pre8-linus/fs/umsdos/rdir.c linux-2.3.99pre8+lock/fs/umsdos/rdir.c
--- linux-2.3.99pre8-linus/fs/umsdos/rdir.c Sun Mar 12 12:03:45 2000
+++ linux-2.3.99pre8+lock/fs/umsdos/rdir.c Sat May 20 04:00:30 2000
@@ -223,6 +223,7 @@
read: generic_read_dir,
readdir: UMSDOS_rreaddir,
ioctl: UMSDOS_ioctl_dir,
+ fasync: file_fasync,
};
struct inode_operations umsdos_rdir_inode_operations =
diff -urNX ../exclude linux-2.3.99pre8-linus/include/linux/fs.h linux-2.3.99pre8+lock/include/linux/fs.h
--- linux-2.3.99pre8-linus/include/linux/fs.h Mon May 15 07:59:26 2000
+++ linux-2.3.99pre8+lock/include/linux/fs.h Sat May 20 04:32:48 2000
@@ -402,6 +403,7 @@
struct dquot *i_dquot[MAXQUOTAS];
struct pipe_inode_info *i_pipe;
struct block_device *i_bdev;
+ struct fasync_struct *i_fasync;
unsigned long i_state;
@@ -554,6 +559,16 @@
struct file *fa_file;
};
+extern void __kill_fasync(struct fasync_struct *, int, int);
+extern void kill_fasync(struct fasync_struct **, int, int);
+extern int file_fasync(int, struct file *, int);
+#define inode_send_fasync(inode) \
+ kill_fasync(&inode->i_fasync, SIGIO, POLL_MSG)
+#define tty_send_fasync(fa) \
+ kill_fasync(fa, SIGIO, POLL_IN)
+
+extern int fasync_helper(int, struct file *, int, struct fasync_struct **);
+
struct nameidata {
struct dentry *dentry;
struct vfsmount *mnt;