]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - fs/reiserfs/file.c
Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm
[linux-2.6-omap-h63xx.git] / fs / reiserfs / file.c
index 5109f1d5e7ffcbe2eb08340221439b440fd5ba57..30eebfb1b2d8d7e9cf26474329d28fd28f401665 100644 (file)
@@ -6,7 +6,6 @@
 #include <linux/reiserfs_fs.h>
 #include <linux/reiserfs_acl.h>
 #include <linux/reiserfs_xattr.h>
-#include <linux/smp_lock.h>
 #include <asm/uaccess.h>
 #include <linux/pagemap.h>
 #include <linux/swap.h>
@@ -1060,20 +1059,12 @@ static int reiserfs_prepare_file_region_for_write(struct inode *inode
           maping blocks, since there is none, so we just zero out remaining
           parts of first and last pages in write area (if needed) */
        if ((pos & ~((loff_t) PAGE_CACHE_SIZE - 1)) > inode->i_size) {
-               if (from != 0) {        /* First page needs to be partially zeroed */
-                       char *kaddr = kmap_atomic(prepared_pages[0], KM_USER0);
-                       memset(kaddr, 0, from);
-                       kunmap_atomic(kaddr, KM_USER0);
-                       flush_dcache_page(prepared_pages[0]);
-               }
-               if (to != PAGE_CACHE_SIZE) {    /* Last page needs to be partially zeroed */
-                       char *kaddr =
-                           kmap_atomic(prepared_pages[num_pages - 1],
-                                       KM_USER0);
-                       memset(kaddr + to, 0, PAGE_CACHE_SIZE - to);
-                       kunmap_atomic(kaddr, KM_USER0);
-                       flush_dcache_page(prepared_pages[num_pages - 1]);
-               }
+               if (from != 0)          /* First page needs to be partially zeroed */
+                       zero_user_page(prepared_pages[0], 0, from, KM_USER0);
+
+               if (to != PAGE_CACHE_SIZE)      /* Last page needs to be partially zeroed */
+                       zero_user_page(prepared_pages[num_pages-1], to,
+                                       PAGE_CACHE_SIZE - to, KM_USER0);
 
                /* Since all blocks are new - use already calculated value */
                return blocks;
@@ -1200,13 +1191,9 @@ static int reiserfs_prepare_file_region_for_write(struct inode *inode
                                        ll_rw_block(READ, 1, &bh);
                                        *wait_bh++ = bh;
                                } else {        /* Not mapped, zero it */
-                                       char *kaddr =
-                                           kmap_atomic(prepared_pages[0],
-                                                       KM_USER0);
-                                       memset(kaddr + block_start, 0,
-                                              from - block_start);
-                                       kunmap_atomic(kaddr, KM_USER0);
-                                       flush_dcache_page(prepared_pages[0]);
+                                       zero_user_page(prepared_pages[0],
+                                                      block_start,
+                                                      from - block_start, KM_USER0);
                                        set_buffer_uptodate(bh);
                                }
                        }
@@ -1238,13 +1225,8 @@ static int reiserfs_prepare_file_region_for_write(struct inode *inode
                                        ll_rw_block(READ, 1, &bh);
                                        *wait_bh++ = bh;
                                } else {        /* Not mapped, zero it */
-                                       char *kaddr =
-                                           kmap_atomic(prepared_pages
-                                                       [num_pages - 1],
-                                                       KM_USER0);
-                                       memset(kaddr + to, 0, block_end - to);
-                                       kunmap_atomic(kaddr, KM_USER0);
-                                       flush_dcache_page(prepared_pages[num_pages - 1]);
+                                       zero_user_page(prepared_pages[num_pages-1],
+                                                       to, block_end - to, KM_USER0);
                                        set_buffer_uptodate(bh);
                                }
                        }
@@ -1549,14 +1531,13 @@ const struct file_operations reiserfs_file_operations = {
        .open = generic_file_open,
        .release = reiserfs_file_release,
        .fsync = reiserfs_sync_file,
-       .sendfile = generic_file_sendfile,
        .aio_read = generic_file_aio_read,
        .aio_write = generic_file_aio_write,
        .splice_read = generic_file_splice_read,
        .splice_write = generic_file_splice_write,
 };
 
-struct inode_operations reiserfs_file_inode_operations = {
+const struct inode_operations reiserfs_file_inode_operations = {
        .truncate = reiserfs_vfs_truncate_file,
        .setattr = reiserfs_setattr,
        .setxattr = reiserfs_setxattr,