From 2a8b4feae1513ebc27b72912898a6ac8bae36e50 Mon Sep 17 00:00:00 2001 From: braam Date: Tue, 6 Nov 2001 04:20:34 +0000 Subject: [PATCH] created --- lustre/patches/patch-2.4.9-rh-ac13-xfs-1 | 110 +++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 lustre/patches/patch-2.4.9-rh-ac13-xfs-1 diff --git a/lustre/patches/patch-2.4.9-rh-ac13-xfs-1 b/lustre/patches/patch-2.4.9-rh-ac13-xfs-1 new file mode 100644 index 0000000..bd98712 --- /dev/null +++ b/lustre/patches/patch-2.4.9-rh-ac13-xfs-1 @@ -0,0 +1,110 @@ +--- rpm/build/kernel-2.4.9/linux/include/linux/fs.h Mon Nov 5 22:20:00 2001 ++++ linux/include/linux/fs.h Mon Nov 5 22:17:50 2001 +@@ -1049,6 +1049,7 @@ + extern int register_filesystem(struct file_system_type *); + extern int unregister_filesystem(struct file_system_type *); + extern struct vfsmount *kern_mount(struct file_system_type *); ++struct vfsmount *do_kern_mount(char *type, int flags, char *name, void *data); + extern int may_umount(struct vfsmount *); + extern long do_mount(char *, char *, char *, unsigned long, void *); + +@@ -1474,6 +1475,7 @@ + extern ssize_t generic_file_read(struct file *, char *, size_t, loff_t *); + extern ssize_t generic_file_write(struct file *, const char *, size_t, loff_t *); + extern void do_generic_file_read(struct file *, loff_t *, read_descriptor_t *, read_actor_t, int); ++ssize_t do_generic_file_write(struct file *file,const char *buf,size_t count,loff_t *ppos, int (*actor)(char *, char *, size_t )); + + extern ssize_t generic_read_dir(struct file *, char *, size_t, loff_t *); + extern loff_t generic_file_llseek(struct file *, loff_t, int); +--- rpm/build/kernel-2.4.9/linux/kernel/ksyms.c Mon Nov 5 22:20:00 2001 ++++ linux/kernel/ksyms.c Mon Nov 5 22:14:08 2001 +@@ -246,6 +246,7 @@ + EXPORT_SYMBOL(do_generic_file_read); + EXPORT_SYMBOL(flush_inode_pages); + EXPORT_SYMBOL(generic_file_write); ++EXPORT_SYMBOL(do_generic_file_write); + EXPORT_SYMBOL(generic_file_mmap); + EXPORT_SYMBOL(generic_ro_fops); + EXPORT_SYMBOL(generic_buffer_fdatasync); +@@ -286,6 +287,7 @@ + EXPORT_SYMBOL(__pollwait); + EXPORT_SYMBOL(poll_freewait); + EXPORT_SYMBOL(ROOT_DEV); ++EXPORT_SYMBOL(page_cache_lock); + EXPORT_SYMBOL(__find_get_page); + EXPORT_SYMBOL(__find_lock_page); + EXPORT_SYMBOL(find_get_page_simple); +@@ -371,6 +373,7 @@ + EXPORT_SYMBOL(register_filesystem); + EXPORT_SYMBOL(unregister_filesystem); + EXPORT_SYMBOL(kern_mount); ++EXPORT_SYMBOL(do_kern_mount); + EXPORT_SYMBOL(__mntput); + EXPORT_SYMBOL(may_umount); + +--- rpm/build/kernel-2.4.9/linux/mm/filemap.c Mon Nov 5 22:20:00 2001 ++++ linux/mm/filemap.c Mon Nov 5 22:16:57 2001 +@@ -2672,7 +2672,7 @@ + * okir@monad.swb.de + */ + ssize_t +-generic_file_write(struct file *file,const char *buf,size_t count,loff_t *ppos) ++do_generic_file_write(struct file *file,const char *buf,size_t count,loff_t *ppos, int (*actor)(char *, char *, size_t )) + { + struct inode *inode = file->f_dentry->d_inode; + struct address_space *mapping = inode->i_mapping; +@@ -2686,8 +2686,10 @@ + + cached_page = NULL; + ++#if 0 + if (!access_ok(VERIFY_READ, buf, count)) + return -EFAULT; ++#endif + + down(&inode->i_sem); + +@@ -2794,10 +2796,12 @@ + * same page as we're writing to, without it being marked + * up-to-date. + */ ++#if 0 + { volatile unsigned char dummy; + __get_user(dummy, buf); + __get_user(dummy, buf+bytes-1); + } ++#endif + + status = -ENOMEM; /* we'll assign it later anyway */ + page = __grab_cache_page(mapping, index, &cached_page); +@@ -2813,7 +2817,7 @@ + if (status) + goto sync_failure; + kaddr = page_address(page); +- page_fault = __copy_from_user(kaddr+offset, buf, bytes); ++ page_fault = actor(kaddr+offset, buf, bytes); + flush_dcache_page(page); + status = mapping->a_ops->commit_write(file, page, offset, offset+bytes); + if (page_fault) +@@ -2870,6 +2874,21 @@ + vmtruncate(inode, inode->i_size); + goto done; + } ++ ++static inline int actor_from_user(char *dst, char *src, size_t len) ++{ ++ if (!access_ok(VERIFY_READ, src, len)) ++ return -EFAULT; ++ ++ return __copy_from_user(dst, src, len); ++} ++ ++ssize_t ++generic_file_write(struct file *file,const char *buf,size_t count,loff_t *ppos) ++{ ++ return do_generic_file_write(file, buf, count, ppos, &actor_from_user); ++} ++ + + void __init page_cache_init(unsigned long mempages) + { -- 1.8.3.1