zero_user_page conversion
Subsystems (3)
PATCH 1/1 zero_user_page conversion
Use zero_user_page() in cifs, ocfs2, ext4, and gfs2 where possible.
Compile tested, reviews welcome.
Signed-off-by Eric Sandeen <[email protected]>
fs/cifs/inode.c +1 -5
@@ -1334,17 +1334,13 @@ static int cifs_truncate_page(struct addpgoff_t index = from >>PAGE_CACHE_SHIFT ;unsigned offset = from & (PAGE_CACHE_SIZE -1 );struct page *page; -char *kaddr;int rc =0 ; page =grab_cache_page (mapping, index);if (!page)return -ENOMEM ; - kaddr =kmap_atomic (page,KM_USER0 ); -memset (kaddr + offset,0 ,PAGE_CACHE_SIZE - offset); -flush_dcache_page (page); -kunmap_atomic (kaddr,KM_USER0 ); +zero_user_page (page, offset,PAGE_CACHE_SIZE - offset,KM_USER0 );unlock_page (page);page_cache_release (page);return rc;
fs/ext4/inode.c +2 -9
@@ -1830,7 +1830,6 @@ int ext4_block_truncate_page(handle_t *hstruct inode *inode = mapping->host;struct buffer_head *bh;int err =0 ; -void *kaddr; if ((EXT4_I(inode)->i_flags & EXT4_EXTENTS_FL) && test_opt(inode->i_sb, EXTENTS) &&
@@ -1847,10 +1846,7 @@ int ext4_block_truncate_page(handle_t *h*/ if (!page_has_buffers (page) &&test_opt (inode->i_sb,NOBH ) &&ext4_should_writeback_data (inode) &&PageUptodate (page)) { - kaddr =kmap_atomic (page,KM_USER0 ); -memset (kaddr + offset,0 , length); -flush_dcache_page (page); -kunmap_atomic (kaddr,KM_USER0 ); +zero_user_page (page, offset, length,KM_USER0 );set_page_dirty (page); goto unlock; }
@@ -1903,10 +1899,7 @@ int ext4_block_truncate_page(handle_t *h goto unlock; } - kaddr =kmap_atomic (page,KM_USER0 ); -memset (kaddr + offset,0 , length); -flush_dcache_page (page); -kunmap_atomic (kaddr,KM_USER0 ); +zero_user_page (page, offset, length,KM_USER0 );BUFFER_TRACE (bh,"zeroed end of block" );
fs/gfs2/ops_address.c +1 -4
@@ -207,10 +207,7 @@ static int stuffed_readpage(struct gfs2_* so we need to supply one here. It doesn't happen often. */ if (unlikely (page->index)) { - kaddr =kmap_atomic (page,KM_USER0 ); -memset (kaddr,0 ,PAGE_CACHE_SIZE ); -kunmap_atomic (kaddr,KM_USER0 ); -flush_dcache_page (page); +zero_user_page (page,0 ,PAGE_CACHE_SIZE ,KM_USER0 );SetPageUptodate (page);return 0 ; }
fs/ocfs2/aops.c +2 -11
@@ -739,18 +739,13 @@ int ocfs2_map_page_blocks(struct page *p bh = head; block_start =0 ; do { - void *kaddr; - block_end = block_start + bsize; if (block_end <= from) goto next_bh; if (block_start >= to) break; - kaddr = kmap_atomic(page, KM_USER0); - memset(kaddr+block_start, 0, bh->b_size); - flush_dcache_page(page); - kunmap_atomic(kaddr, KM_USER0); + zero_user_page(page, block_start, bh->b_size, KM_USER0); set_buffer_uptodate(bh); mark_buffer_dirty(bh);
@@ -895,15 +890,11 @@ static void ocfs2_zero_new_buffers(strucif (block_end > from && block_start < to) {if (!PageUptodate (page)) {unsigned start, end; -void *kaddr; start =max (from, block_start); end =min (to, block_end); - kaddr =kmap_atomic (page,KM_USER0 ); -memset (kaddr+start,0 , end - start); -flush_dcache_page (page); -kunmap_atomic (kaddr,KM_USER0 ); +zero_user_page (page, start, end - start,KM_USER0 );set_buffer_uptodate (bh); }
Quoted 1 line · Eric Sandeen
Use
zero_user_page()in cifs, ocfs2, ext4, and gfs2 where possible.
Ok, the ocfs2 bits looked fine so I folded that part of the patch into ocfs2.git, thanks.
--Mark
--
Mark Fasheh
Senior Software Developer, Oracle
[email protected]
Quoted 2 lines · On Wed, 20 Jun 2007 17:08:24 -0500 Eric Sandeen <[email protected]> wrote:
Use
zero_user_page()in cifs, ocfs2, ext4, and gfs2 where possible.
One patch, splattered across four maintainers, each of whom maintain separate trees.
Sigh. Please, don't. _someone_ has to split this up, and it might as well not be me.
<splits it up>