Whamcloud - gitweb
created
authorbraam <braam>
Tue, 6 Nov 2001 04:20:34 +0000 (04:20 +0000)
committerbraam <braam>
Tue, 6 Nov 2001 04:20:34 +0000 (04:20 +0000)
lustre/patches/patch-2.4.9-rh-ac13-xfs-1 [new file with mode: 0644]

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 (file)
index 0000000..bd98712
--- /dev/null
@@ -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)
+ {