summaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-07-03 21:46:06 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-07-03 21:46:06 +0000
commit3e414096429d55fbc8116171bba3487647bbe638 (patch)
tree2b5fcfd9d16fa3a32c829fc2076f6e3785b43374 /include/linux
parent20b23bfcf36fcb2d16d8b844501072541970637c (diff)
Merge with Linux 2.4.0-test3-pre2.
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/affs_fs.h2
-rw-r--r--include/linux/arcdevice.h6
-rw-r--r--include/linux/coda_psdev.h4
-rw-r--r--include/linux/ext2_fs.h4
-rw-r--r--include/linux/fs.h55
-rw-r--r--include/linux/kernelcapi.h8
-rw-r--r--include/linux/minix_fs.h2
-rw-r--r--include/linux/mm.h1
-rw-r--r--include/linux/mount.h1
-rw-r--r--include/linux/msdos_fs.h2
-rw-r--r--include/linux/ncp_fs_i.h3
-rw-r--r--include/linux/nfsd/cache.h4
-rw-r--r--include/linux/nfsd/export.h12
-rw-r--r--include/linux/nfsd/nfsd.h11
-rw-r--r--include/linux/nfsd/nfsfh.h33
-rw-r--r--include/linux/pci_ids.h8
-rw-r--r--include/linux/qnx4_fs.h2
-rw-r--r--include/linux/sysv_fs.h4
-rw-r--r--include/linux/timer.h21
-rw-r--r--include/linux/ufs_fs.h3
-rw-r--r--include/linux/umsdos_fs.p2
21 files changed, 84 insertions, 104 deletions
diff --git a/include/linux/affs_fs.h b/include/linux/affs_fs.h
index 60af0d40c..8a09cd72d 100644
--- a/include/linux/affs_fs.h
+++ b/include/linux/affs_fs.h
@@ -84,7 +84,7 @@ extern int affs_add_entry(struct inode *dir, struct inode *link,
extern void affs_put_inode(struct inode *inode);
extern void affs_delete_inode(struct inode *inode);
extern void affs_read_inode(struct inode *inode);
-extern void affs_write_inode(struct inode *inode);
+extern void affs_write_inode(struct inode *inode, int);
/* super.c */
diff --git a/include/linux/arcdevice.h b/include/linux/arcdevice.h
index b5a9999a5..d2334ba95 100644
--- a/include/linux/arcdevice.h
+++ b/include/linux/arcdevice.h
@@ -241,11 +241,13 @@ struct arcnet_local {
setup2, /* Contents of setup2 register */
intmask; /* current value of INTMASK register */
uint8_t default_proto[256]; /* default encap to use for each host */
- int cur_tx, /* buffer used by current transmit, or -1 */
+ int cur_tx, /* buffer used by current transmit, or -1 */
next_tx, /* buffer where a packet is ready to send */
cur_rx; /* current receive buffer */
- int lastload_dest, /* can last loaded packet be acked? */
+ int lastload_dest, /* can last loaded packet be acked? */
lasttrans_dest; /* can last TX'd packet be acked? */
+ int timed_out; /* need to process TX timeout and drop packet */
+ unsigned long last_timeout; /* time of last reported timeout */
char *card_name; /* card ident string */
int card_flags; /* special card features */
diff --git a/include/linux/coda_psdev.h b/include/linux/coda_psdev.h
index 2b6bbadd7..73757bb53 100644
--- a/include/linux/coda_psdev.h
+++ b/include/linux/coda_psdev.h
@@ -11,9 +11,8 @@ extern struct coda_sb_info coda_super_info;
struct coda_sb_info
{
struct inode * sbi_psdev; /* /dev/cfs? Venus/kernel device */
- struct inode * sbi_ctlcp; /* control magic file */
int sbi_refct;
- struct venus_comm * sbi_vcomm;
+ struct venus_comm * sbi_vcomm;
struct inode * sbi_root;
struct super_block *sbi_sb;
struct list_head sbi_cchead;
@@ -27,7 +26,6 @@ struct venus_comm {
struct list_head vc_pending;
struct list_head vc_processing;
int vc_inuse;
- pid_t vc_pid; /* Venus pid */
};
diff --git a/include/linux/ext2_fs.h b/include/linux/ext2_fs.h
index 25178b66b..af962e94f 100644
--- a/include/linux/ext2_fs.h
+++ b/include/linux/ext2_fs.h
@@ -548,7 +548,7 @@ extern int ext2_read (struct inode *, struct file *, char *, int);
extern int ext2_write (struct inode *, struct file *, char *, int);
/* fsync.c */
-extern int ext2_sync_file (struct file *, struct dentry *);
+extern int ext2_sync_file (struct file *, struct dentry *, int);
/* ialloc.c */
extern struct inode * ext2_new_inode (const struct inode *, int, int *);
@@ -562,7 +562,7 @@ extern struct buffer_head * ext2_getblk (struct inode *, long, int, int *);
extern struct buffer_head * ext2_bread (struct inode *, int, int, int *);
extern void ext2_read_inode (struct inode *);
-extern void ext2_write_inode (struct inode *);
+extern void ext2_write_inode (struct inode *, int);
extern void ext2_put_inode (struct inode *);
extern void ext2_delete_inode (struct inode *);
extern int ext2_sync_inode (struct inode *);
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 8a1f8e9b6..b30bb8a08 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -47,7 +47,12 @@ struct poll_table_struct;
#define BLOCK_SIZE (1<<BLOCK_SIZE_BITS)
/* And dynamically-tunable limits and defaults: */
-extern int max_files, nr_files, nr_free_files;
+struct files_stat_struct {
+ int nr_files; /* read only */
+ int nr_free_files; /* read only */
+ int max_files; /* tunable */
+};
+extern struct files_stat_struct files_stat;
extern int max_super_blocks, nr_super_blocks;
#define NR_FILE 8192 /* this can well be larger on a larger system */
@@ -84,6 +89,7 @@ extern int max_super_blocks, nr_super_blocks;
* kernel-wide vfsmnt is kept in ->kern_mnt.
*/
#define FS_NOMOUNT 16 /* Never mount from userland */
+#define FS_LITTER 32 /* Keeps the tree in dcache */
/*
* These are the fs-independent mount-flags: up to 16 flags are supported
*/
@@ -504,10 +510,8 @@ typedef struct files_struct *fl_owner_t;
struct file_lock {
struct file_lock *fl_next; /* singly linked list for this inode */
- struct file_lock *fl_nextlink; /* doubly linked list of all locks */
- struct file_lock *fl_prevlink; /* used to simplify lock removal */
- struct file_lock *fl_nextblock; /* circular list of blocked processes */
- struct file_lock *fl_prevblock;
+ struct list_head fl_link; /* doubly linked list of all locks */
+ struct list_head fl_block; /* circular list of blocked processes */
fl_owner_t fl_owner;
unsigned int fl_pid;
wait_queue_head_t fl_wait;
@@ -532,7 +536,7 @@ struct file_lock {
#define OFFSET_MAX INT_LIMIT(loff_t)
#endif
-extern struct file_lock *file_lock_table;
+extern struct list_head file_lock_list;
#include <linux/fcntl.h>
@@ -721,7 +725,7 @@ struct file_operations {
int (*open) (struct inode *, struct file *);
int (*flush) (struct file *);
int (*release) (struct inode *, struct file *);
- int (*fsync) (struct file *, struct dentry *);
+ int (*fsync) (struct file *, struct dentry *, int datasync);
int (*fasync) (int, struct file *, int);
int (*lock) (struct file *, int, struct file_lock *);
ssize_t (*readv) (struct file *, const struct iovec *, unsigned long, loff_t *);
@@ -754,7 +758,7 @@ struct inode_operations {
*/
struct super_operations {
void (*read_inode) (struct inode *);
- void (*write_inode) (struct inode *);
+ void (*write_inode) (struct inode *, int);
void (*put_inode) (struct inode *);
void (*delete_inode) (struct inode *);
void (*put_super) (struct super_block *);
@@ -859,7 +863,8 @@ static inline int locks_verify_truncate(struct inode *inode,
return locks_mandatory_area(
FLOCK_VERIFY_WRITE, inode, filp,
size < inode->i_size ? size : inode->i_size,
- abs(inode->i_size - size)
+ (size < inode->i_size ? inode->i_size - size
+ : size - inode->i_size)
);
return 0;
}
@@ -989,7 +994,7 @@ extern void invalidate_inode_pages(struct inode *);
#define destroy_buffers(dev) __invalidate_buffers((dev), 1)
extern void __invalidate_buffers(kdev_t dev, int);
extern void sync_inodes(kdev_t);
-extern void write_inode_now(struct inode *);
+extern void write_inode_now(struct inode *, int);
extern void sync_dev(kdev_t);
extern int fsync_dev(kdev_t);
extern void sync_supers(kdev_t);
@@ -997,7 +1002,16 @@ extern int bmap(struct inode *, int);
extern int notify_change(struct dentry *, struct iattr *);
extern int permission(struct inode *, int);
extern int get_write_access(struct inode *);
-extern void put_write_access(struct inode *);
+extern int deny_write_access(struct file *);
+static inline void put_write_access(struct inode * inode)
+{
+ atomic_dec(&inode->i_writecount);
+}
+static inline void allow_write_access(struct file *file)
+{
+ if (file)
+ atomic_inc(&file->f_dentry->d_inode->i_writecount);
+}
extern int do_pipe(int *);
extern int open_namei(const char *, int, int, struct nameidata *);
@@ -1037,7 +1051,7 @@ extern ino_t find_inode_number(struct dentry *, struct qstr *);
/*
* Type of the last component on LOOKUP_PARENT
*/
-enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT };
+enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND};
/*
* "descriptor" for what we're up to with a read for sendfile().
@@ -1148,6 +1162,7 @@ extern struct inode_operations page_symlink_inode_operations;
extern int vfs_readdir(struct file *, filldir_t, void *);
extern int dcache_readdir(struct file *, void *, filldir_t);
+extern struct file_system_type *get_fs_type(const char *name);
extern struct super_block *get_super(kdev_t);
struct super_block *get_empty_super(void);
extern void put_super(kdev_t);
@@ -1172,7 +1187,7 @@ extern int read_ahead[];
extern ssize_t char_write(struct file *, const char *, size_t, loff_t *);
extern ssize_t block_write(struct file *, const char *, size_t, loff_t *);
-extern int file_fsync(struct file *, struct dentry *);
+extern int file_fsync(struct file *, struct dentry *, int);
extern int generic_buffer_fdatasync(struct inode *inode, unsigned long start_idx, unsigned long end_idx);
extern int inode_change_ok(struct inode *, struct iattr *);
@@ -1186,20 +1201,6 @@ extern void inode_setattr(struct inode *, struct iattr *);
*/
/*
- * We need to do a check-parent every time
- * after we have locked the parent - to verify
- * that the parent is still our parent and
- * that we are still hashed onto it..
- *
- * This is required in case two processes race
- * on removing (or moving) the same entry: the
- * parent lock will serialize them, but the
- * other process will be too late..
- */
-#define check_parent(dir, dentry) \
- ((dir) == (dentry)->d_parent && !d_unhashed(dentry))
-
-/*
* Locking the parent is needed to:
* - serialize directory operations
* - make sure the parent doesn't change from
diff --git a/include/linux/kernelcapi.h b/include/linux/kernelcapi.h
index 250191081..b9efcb696 100644
--- a/include/linux/kernelcapi.h
+++ b/include/linux/kernelcapi.h
@@ -58,12 +58,8 @@
#ifndef __KERNELCAPI_H__
#define __KERNELCAPI_H__
-#define CAPI_MAXAPPL 20 /*
- * maximum number of applications
- */
-#define CAPI_MAXCONTR 10 /*
- * maximum number of controller
- */
+#define CAPI_MAXAPPL 128 /* maximum number of applications */
+#define CAPI_MAXCONTR 16 /* maximum number of controller */
#define CAPI_MAXDATAWINDOW 8
diff --git a/include/linux/minix_fs.h b/include/linux/minix_fs.h
index 1eca767b4..99cd63717 100644
--- a/include/linux/minix_fs.h
+++ b/include/linux/minix_fs.h
@@ -101,7 +101,7 @@ extern struct buffer_head * minix_bread(struct inode *, int, int);
extern void minix_truncate(struct inode *);
extern int minix_sync_inode(struct inode *);
-extern int minix_sync_file(struct file *, struct dentry *);
+extern int minix_sync_file(struct file *, struct dentry *, int);
extern struct address_space_operations minix_aops;
extern struct inode_operations minix_file_inode_operations;
diff --git a/include/linux/mm.h b/include/linux/mm.h
index 37cb9664e..e6325a298 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -185,6 +185,7 @@ typedef struct page {
#define ClearPageUptodate(page) clear_bit(PG_uptodate, &(page)->flags)
#define PageDirty(page) test_bit(PG_dirty, &(page)->flags)
#define SetPageDirty(page) set_bit(PG_dirty, &(page)->flags)
+#define ClearPageDirty(page) clear_bit(PG_dirty, &(page)->flags)
#define PageLocked(page) test_bit(PG_locked, &(page)->flags)
#define LockPage(page) set_bit(PG_locked, &(page)->flags)
#define TryLockPage(page) test_and_set_bit(PG_locked, &(page)->flags)
diff --git a/include/linux/mount.h b/include/linux/mount.h
index 61ab19b1f..adb571de2 100644
--- a/include/linux/mount.h
+++ b/include/linux/mount.h
@@ -26,7 +26,6 @@ struct vfsmount
atomic_t mnt_count;
char *mnt_devname; /* Name of device e.g. /dev/dsk/hda1 */
- char *mnt_dirname; /* Name of directory mounted on */
struct list_head mnt_list;
uid_t mnt_owner;
};
diff --git a/include/linux/msdos_fs.h b/include/linux/msdos_fs.h
index 4897f2ec9..cbbf78528 100644
--- a/include/linux/msdos_fs.h
+++ b/include/linux/msdos_fs.h
@@ -248,7 +248,7 @@ extern struct inode *fat_build_inode(struct super_block*,struct msdos_dir_entry*
extern struct super_block *fat_read_super(struct super_block *s, void *data, int silent, struct inode_operations *dir_ops);
extern void msdos_put_super(struct super_block *sb);
extern int fat_statfs(struct super_block *sb,struct statfs *buf);
-extern void fat_write_inode(struct inode *inode);
+extern void fat_write_inode(struct inode *inode, int);
/* dir.c */
extern struct file_operations fat_dir_operations;
diff --git a/include/linux/ncp_fs_i.h b/include/linux/ncp_fs_i.h
index 96728bcdd..ffdf49f4c 100644
--- a/include/linux/ncp_fs_i.h
+++ b/include/linux/ncp_fs_i.h
@@ -19,7 +19,8 @@ struct ncp_inode_info {
__u32 DosDirNum __attribute__((packed));
__u32 volNumber __attribute__((packed));
__u32 nwattr;
- int opened;
+ struct semaphore open_sem;
+ atomic_t opened;
int access;
__u32 server_file_handle __attribute__((packed));
__u8 open_create_action __attribute__((packed));
diff --git a/include/linux/nfsd/cache.h b/include/linux/nfsd/cache.h
index 8e675705e..ae2da13be 100644
--- a/include/linux/nfsd/cache.h
+++ b/include/linux/nfsd/cache.h
@@ -25,9 +25,11 @@ struct svc_cacherep {
unsigned char c_state, /* unused, inprog, done */
c_type, /* status, buffer */
c_secure : 1; /* req came from port < 1024 */
- struct in_addr c_client;
+ struct sockaddr_in c_addr;
u32 c_xid;
+ u32 c_prot;
u32 c_proc;
+ u32 c_vers;
unsigned long c_timestamp;
union {
struct svc_buf u_buffer;
diff --git a/include/linux/nfsd/export.h b/include/linux/nfsd/export.h
index 06a21296f..5fb55c738 100644
--- a/include/linux/nfsd/export.h
+++ b/include/linux/nfsd/export.h
@@ -95,18 +95,6 @@ int nfserrno(int errno);
void exp_nlmdetach(void);
-extern __inline__ int
-exp_checkaddr(struct svc_client *clp, struct in_addr addr)
-{
- struct in_addr *ap = clp->cl_addr;
- int i;
-
- for (i = clp->cl_naddr; i--; ap++)
- if (ap->s_addr == addr.s_addr)
- return 1;
- return 0;
-}
-
#endif /* __KERNEL__ */
#endif /* NFSD_EXPORT_H */
diff --git a/include/linux/nfsd/nfsd.h b/include/linux/nfsd/nfsd.h
index 42663e79b..26e8edd22 100644
--- a/include/linux/nfsd/nfsd.h
+++ b/include/linux/nfsd/nfsd.h
@@ -80,19 +80,19 @@ int nfsd_racache_init(int);
void nfsd_racache_shutdown(void);
int nfsd_lookup(struct svc_rqst *, struct svc_fh *,
const char *, int, struct svc_fh *);
-#ifdef CONFIG_NFSD_V3
-int nfsd_access(struct svc_rqst *, struct svc_fh *, u32 *);
-#endif /* CONFIG_NFSD_V3 */
int nfsd_setattr(struct svc_rqst *, struct svc_fh *,
struct iattr *);
int nfsd_create(struct svc_rqst *, struct svc_fh *,
char *name, int len, struct iattr *attrs,
int type, dev_t rdev, struct svc_fh *res);
#ifdef CONFIG_NFSD_V3
+int nfsd_access(struct svc_rqst *, struct svc_fh *, u32 *);
int nfsd_create_v3(struct svc_rqst *, struct svc_fh *,
char *name, int len, struct iattr *attrs,
struct svc_fh *res, int createmode,
u32 *verifier);
+int nfsd_commit(struct svc_rqst *, struct svc_fh *,
+ off_t, unsigned long);
#endif /* CONFIG_NFSD_V3 */
int nfsd_open(struct svc_rqst *, struct svc_fh *, int,
int, struct file *);
@@ -122,10 +122,7 @@ int nfsd_readdir(struct svc_rqst *, struct svc_fh *,
u32 *buffer, int *countp, u32 *verf);
int nfsd_statfs(struct svc_rqst *, struct svc_fh *,
struct statfs *);
-#ifdef CONFIG_NFSD_V3
-int nfsd_commit(struct svc_rqst *, struct svc_fh *,
- off_t, unsigned long);
-#endif /* CONFIG_NFSD_V3 */
+
int nfsd_notify_change(struct inode *, struct iattr *);
int nfsd_permission(struct svc_export *, struct dentry *, int);
diff --git a/include/linux/nfsd/nfsfh.h b/include/linux/nfsd/nfsfh.h
index 83320b810..39ab97f14 100644
--- a/include/linux/nfsd/nfsfh.h
+++ b/include/linux/nfsd/nfsfh.h
@@ -90,7 +90,7 @@ struct nfs_fhbase_new {
};
struct knfsd_fh {
- int fh_size; /* significant for NFSv3.
+ unsigned int fh_size; /* significant for NFSv3.
* Points to the current size while building
* a new file handle
*/
@@ -149,14 +149,13 @@ typedef struct svc_fh {
struct dentry * fh_dentry; /* validated dentry */
struct svc_export * fh_export; /* export pointer */
int fh_maxsize; /* max size for fh_handle */
+
+ unsigned char fh_locked; /* inode locked by us */
+
#ifdef CONFIG_NFSD_V3
unsigned char fh_post_saved; /* post-op attrs saved */
unsigned char fh_pre_saved; /* pre-op attrs saved */
-#endif /* CONFIG_NFSD_V3 */
- unsigned char fh_locked; /* inode locked by us */
- unsigned char fh_dverified; /* dentry has been checked */
-#ifdef CONFIG_NFSD_V3
/* Pre-op attributes saved during fh_lock */
__u64 fh_pre_size; /* size before operation */
time_t fh_pre_mtime; /* mtime before oper */
@@ -207,7 +206,7 @@ void fh_put(struct svc_fh *);
static __inline__ struct svc_fh *
fh_copy(struct svc_fh *dst, struct svc_fh *src)
{
- if (src->fh_dverified || src->fh_locked) {
+ if (src->fh_dentry || src->fh_locked) {
struct dentry *dentry = src->fh_dentry;
printk(KERN_ERR "fh_copy: copying %s/%s, already verified!\n",
dentry->d_parent->d_name.name, dentry->d_name.name);
@@ -241,7 +240,6 @@ fill_pre_wcc(struct svc_fh *fhp)
fhp->fh_pre_size = inode->i_size;
fhp->fh_pre_saved = 1;
}
- fhp->fh_locked = 1;
}
/*
@@ -273,13 +271,18 @@ fill_post_wcc(struct svc_fh *fhp)
fhp->fh_post_mtime = inode->i_mtime;
fhp->fh_post_ctime = inode->i_ctime;
fhp->fh_post_saved = 1;
- fhp->fh_locked = 0;
}
+#else
+#define fill_pre_wcc(ignored)
+#define fill_post_wcc(notused)
#endif /* CONFIG_NFSD_V3 */
/*
* Lock a file handle/inode
+ * NOTE: both fh_lock and fh_unlock are done "by hand" in
+ * vfs.c:nfsd_rename as it needs to grab 2 i_sem's at once
+ * so, any changes here should be reflected there.
*/
static inline void
fh_lock(struct svc_fh *fhp)
@@ -290,7 +293,7 @@ fh_lock(struct svc_fh *fhp)
dfprintk(FILEOP, "nfsd: fh_lock(%s) locked = %d\n",
SVCFH_fmt(fhp), fhp->fh_locked);
- if (!fhp->fh_dverified) {
+ if (!fhp->fh_dentry) {
printk(KERN_ERR "fh_lock: fh not verified!\n");
return;
}
@@ -302,11 +305,8 @@ fh_lock(struct svc_fh *fhp)
inode = dentry->d_inode;
down(&inode->i_sem);
-#ifdef CONFIG_NFSD_V3
fill_pre_wcc(fhp);
-#else
fhp->fh_locked = 1;
-#endif /* CONFIG_NFSD_V3 */
}
/*
@@ -315,20 +315,13 @@ fh_lock(struct svc_fh *fhp)
static inline void
fh_unlock(struct svc_fh *fhp)
{
- if (!fhp->fh_dverified)
+ if (!fhp->fh_dentry)
printk(KERN_ERR "fh_unlock: fh not verified!\n");
if (fhp->fh_locked) {
-#ifdef CONFIG_NFSD_V3
fill_post_wcc(fhp);
up(&fhp->fh_dentry->d_inode->i_sem);
-#else
- struct dentry *dentry = fhp->fh_dentry;
- struct inode *inode = dentry->d_inode;
-
fhp->fh_locked = 0;
- up(&inode->i_sem);
-#endif /* CONFIG_NFSD_V3 */
}
}
#endif /* __KERNEL__ */
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index 5512d2a51..04ae938be 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -330,13 +330,14 @@
#define PCI_DEVICE_ID_SI_6205 0x0205
#define PCI_DEVICE_ID_SI_501 0x0406
#define PCI_DEVICE_ID_SI_496 0x0496
-#define PCI_DEVICE_ID_SI_300 0x0300
+#define PCI_DEVICE_ID_SI_300 0x0300
#define PCI_DEVICE_ID_SI_530 0x0530
-#define PCI_DEVICE_ID_SI_540 0x5300
+#define PCI_DEVICE_ID_SI_540 0x0540
#define PCI_DEVICE_ID_SI_601 0x0601
#define PCI_DEVICE_ID_SI_620 0x0620
-#define PCI_DEVICE_ID_SI_630 0x6300
+#define PCI_DEVICE_ID_SI_630 0x0630
#define PCI_DEVICE_ID_SI_5107 0x5107
+#define PCI_DEVICE_ID_SI_5300 0x5300
#define PCI_DEVICE_ID_SI_5511 0x5511
#define PCI_DEVICE_ID_SI_5513 0x5513
#define PCI_DEVICE_ID_SI_5571 0x5571
@@ -344,6 +345,7 @@
#define PCI_DEVICE_ID_SI_5597 0x5597
#define PCI_DEVICE_ID_SI_5598 0x5598
#define PCI_DEVICE_ID_SI_5600 0x5600
+#define PCI_DEVICE_ID_SI_6300 0x6300
#define PCI_DEVICE_ID_SI_6306 0x6306
#define PCI_DEVICE_ID_SI_6326 0x6326
#define PCI_DEVICE_ID_SI_7001 0x7001
diff --git a/include/linux/qnx4_fs.h b/include/linux/qnx4_fs.h
index ad5ca5543..dd9b7cb6e 100644
--- a/include/linux/qnx4_fs.h
+++ b/include/linux/qnx4_fs.h
@@ -116,7 +116,7 @@ extern void qnx4_truncate(struct inode *inode);
extern void qnx4_free_inode(struct inode *inode);
extern int qnx4_unlink(struct inode *dir, struct dentry *dentry);
extern int qnx4_rmdir(struct inode *dir, struct dentry *dentry);
-extern int qnx4_sync_file(struct file *file, struct dentry *dentry);
+extern int qnx4_sync_file(struct file *file, struct dentry *dentry, int);
extern int qnx4_sync_inode(struct inode *inode);
extern int qnx4_get_block(struct inode *inode, long iblock, struct buffer_head *bh, int create);
diff --git a/include/linux/sysv_fs.h b/include/linux/sysv_fs.h
index d9c2557e5..4cff4260c 100644
--- a/include/linux/sysv_fs.h
+++ b/include/linux/sysv_fs.h
@@ -377,9 +377,9 @@ extern unsigned long sysv_count_free_blocks(struct super_block *sb);
extern struct buffer_head * sysv_file_bread(struct inode *, int, int);
extern void sysv_truncate(struct inode *);
-extern void sysv_write_inode(struct inode *);
+extern void sysv_write_inode(struct inode *, int);
extern int sysv_sync_inode(struct inode *);
-extern int sysv_sync_file(struct file *, struct dentry *);
+extern int sysv_sync_file(struct file *, struct dentry *, int);
extern int sysv_notify_change(struct dentry *, struct iattr *);
extern struct inode_operations sysv_file_inode_operations;
diff --git a/include/linux/timer.h b/include/linux/timer.h
index 2de8050ea..9d6b8c3a2 100644
--- a/include/linux/timer.h
+++ b/include/linux/timer.h
@@ -52,9 +52,10 @@ struct timer_list {
unsigned long expires;
unsigned long data;
void (*function)(unsigned long);
- volatile int running;
+ unsigned long sequence;
};
+extern volatile unsigned long timer_sequence;
extern void add_timer(struct timer_list * timer);
extern int del_timer(struct timer_list * timer);
@@ -71,7 +72,7 @@ static inline void init_timer(struct timer_list * timer)
{
timer->list.next = timer->list.prev = NULL;
#ifdef CONFIG_SMP
- timer->running = 0;
+ timer->sequence = timer_sequence-1;
#endif
}
@@ -81,17 +82,17 @@ static inline int timer_pending (const struct timer_list * timer)
}
#ifdef CONFIG_SMP
-#define timer_exit(t) do { (t)->running = 0; mb(); } while (0)
-#define timer_set_running(t) do { (t)->running = 1; mb(); } while (0)
-#define timer_is_running(t) ((t)->running != 0)
+#define timer_enter(t) do { (t)->sequence = timer_sequence; mb(); } while (0)
+#define timer_exit() do { timer_sequence++; } while (0)
+#define timer_is_running(t) ((t)->sequence == timer_sequence)
#define timer_synchronize(t) while (timer_is_running(t)) barrier()
extern int del_timer_sync(struct timer_list * timer);
#else
-#define timer_exit(t) (void)(t)
-#define timer_set_running(t) (void)(t)
-#define timer_is_running(t) (0)
-#define timer_synchronize(t) do { (void)(t); barrier(); } while(0)
-#define del_timer_sync(t) del_timer(t)
+#define timer_enter(t) do { } while (0)
+#define timer_exit() do { } while (0)
+#define timer_is_running(t) (0)
+#define timer_synchronize(t) do { (void)(t); barrier(); } while(0)
+#define del_timer_sync(t) del_timer(t)
#endif
/*
diff --git a/include/linux/ufs_fs.h b/include/linux/ufs_fs.h
index 96cb38e67..3c8f1d415 100644
--- a/include/linux/ufs_fs.h
+++ b/include/linux/ufs_fs.h
@@ -560,9 +560,8 @@ extern struct inode * ufs_new_inode (const struct inode *, int, int *);
extern int ufs_frag_map (struct inode *, int);
extern void ufs_read_inode (struct inode *);
extern void ufs_put_inode (struct inode *);
-extern void ufs_write_inode (struct inode *);
+extern void ufs_write_inode (struct inode *, int);
extern int ufs_sync_inode (struct inode *);
-extern void ufs_write_inode (struct inode *);
extern void ufs_delete_inode (struct inode *);
extern struct buffer_head * ufs_getfrag (struct inode *, unsigned, int, int *);
extern struct buffer_head * ufs_bread (struct inode *, unsigned, int, int *);
diff --git a/include/linux/umsdos_fs.p b/include/linux/umsdos_fs.p
index 76436a479..677bee22e 100644
--- a/include/linux/umsdos_fs.p
+++ b/include/linux/umsdos_fs.p
@@ -48,7 +48,7 @@ int umsdos_isempty (struct dentry *);
/* inode.c 12/06/95 09.49.40 */
void fill_new_filp (struct file *filp, struct dentry *dentry);
void UMSDOS_read_inode (struct inode *);
-void UMSDOS_write_inode (struct inode *);
+void UMSDOS_write_inode (struct inode *, int);
int UMSDOS_notify_change (struct dentry *, struct iattr *attr);
int umsdos_notify_change_locked(struct dentry *, struct iattr *attr);
void UMSDOS_put_inode (struct inode *);