Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 83038
b: refs/heads/master
c: eebd2aa
h: refs/heads/master
v: v3
  • Loading branch information
Christoph Lameter authored and Linus Torvalds committed Feb 5, 2008
1 parent 806a80b commit 76e00a8
Show file tree
Hide file tree
Showing 23 changed files with 104 additions and 117 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b98348bdd08dc4ec11828aa98a78edde15c53cfa
refs/heads/master: eebd2aa355692afaf9906f62118620f1a1c19dbb
44 changes: 14 additions & 30 deletions trunk/fs/buffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -1798,7 +1798,7 @@ void page_zero_new_buffers(struct page *page, unsigned from, unsigned to)
start = max(from, block_start);
size = min(to, block_end) - start;

zero_user_page(page, start, size, KM_USER0);
zero_user(page, start, size);
set_buffer_uptodate(bh);
}

Expand Down Expand Up @@ -1861,19 +1861,10 @@ static int __block_prepare_write(struct inode *inode, struct page *page,
mark_buffer_dirty(bh);
continue;
}
if (block_end > to || block_start < from) {
void *kaddr;

kaddr = kmap_atomic(page, KM_USER0);
if (block_end > to)
memset(kaddr+to, 0,
block_end-to);
if (block_start < from)
memset(kaddr+block_start,
0, from-block_start);
flush_dcache_page(page);
kunmap_atomic(kaddr, KM_USER0);
}
if (block_end > to || block_start < from)
zero_user_segments(page,
to, block_end,
block_start, from);
continue;
}
}
Expand Down Expand Up @@ -2104,8 +2095,7 @@ int block_read_full_page(struct page *page, get_block_t *get_block)
SetPageError(page);
}
if (!buffer_mapped(bh)) {
zero_user_page(page, i * blocksize, blocksize,
KM_USER0);
zero_user(page, i * blocksize, blocksize);
if (!err)
set_buffer_uptodate(bh);
continue;
Expand Down Expand Up @@ -2218,7 +2208,7 @@ int cont_expand_zero(struct file *file, struct address_space *mapping,
&page, &fsdata);
if (err)
goto out;
zero_user_page(page, zerofrom, len, KM_USER0);
zero_user(page, zerofrom, len);
err = pagecache_write_end(file, mapping, curpos, len, len,
page, fsdata);
if (err < 0)
Expand All @@ -2245,7 +2235,7 @@ int cont_expand_zero(struct file *file, struct address_space *mapping,
&page, &fsdata);
if (err)
goto out;
zero_user_page(page, zerofrom, len, KM_USER0);
zero_user(page, zerofrom, len);
err = pagecache_write_end(file, mapping, curpos, len, len,
page, fsdata);
if (err < 0)
Expand Down Expand Up @@ -2422,7 +2412,6 @@ int nobh_write_begin(struct file *file, struct address_space *mapping,
unsigned block_in_page;
unsigned block_start, block_end;
sector_t block_in_file;
char *kaddr;
int nr_reads = 0;
int ret = 0;
int is_mapped_to_disk = 1;
Expand Down Expand Up @@ -2493,13 +2482,8 @@ int nobh_write_begin(struct file *file, struct address_space *mapping,
continue;
}
if (buffer_new(bh) || !buffer_mapped(bh)) {
kaddr = kmap_atomic(page, KM_USER0);
if (block_start < from)
memset(kaddr+block_start, 0, from-block_start);
if (block_end > to)
memset(kaddr + to, 0, block_end - to);
flush_dcache_page(page);
kunmap_atomic(kaddr, KM_USER0);
zero_user_segments(page, block_start, from,
to, block_end);
continue;
}
if (buffer_uptodate(bh))
Expand Down Expand Up @@ -2636,7 +2620,7 @@ int nobh_writepage(struct page *page, get_block_t *get_block,
* the page size, the remaining memory is zeroed when mapped, and
* writes to that region are not written out to the file."
*/
zero_user_page(page, offset, PAGE_CACHE_SIZE - offset, KM_USER0);
zero_user_segment(page, offset, PAGE_CACHE_SIZE);
out:
ret = mpage_writepage(page, get_block, wbc);
if (ret == -EAGAIN)
Expand Down Expand Up @@ -2709,7 +2693,7 @@ int nobh_truncate_page(struct address_space *mapping,
if (page_has_buffers(page))
goto has_buffers;
}
zero_user_page(page, offset, length, KM_USER0);
zero_user(page, offset, length);
set_page_dirty(page);
err = 0;

Expand Down Expand Up @@ -2785,7 +2769,7 @@ int block_truncate_page(struct address_space *mapping,
goto unlock;
}

zero_user_page(page, offset, length, KM_USER0);
zero_user(page, offset, length);
mark_buffer_dirty(bh);
err = 0;

Expand Down Expand Up @@ -2831,7 +2815,7 @@ int block_write_full_page(struct page *page, get_block_t *get_block,
* the page size, the remaining memory is zeroed when mapped, and
* writes to that region are not written out to the file."
*/
zero_user_page(page, offset, PAGE_CACHE_SIZE - offset, KM_USER0);
zero_user_segment(page, offset, PAGE_CACHE_SIZE);
return __block_write_full_page(inode, page, get_block, wbc);
}

Expand Down
2 changes: 1 addition & 1 deletion trunk/fs/cifs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -1386,7 +1386,7 @@ static int cifs_truncate_page(struct address_space *mapping, loff_t from)
if (!page)
return -ENOMEM;

zero_user_page(page, offset, PAGE_CACHE_SIZE - offset, KM_USER0);
zero_user_segment(page, offset, PAGE_CACHE_SIZE);
unlock_page(page);
page_cache_release(page);
return rc;
Expand Down
4 changes: 2 additions & 2 deletions trunk/fs/direct-io.c
Original file line number Diff line number Diff line change
Expand Up @@ -878,8 +878,8 @@ static int do_direct_IO(struct dio *dio)
page_cache_release(page);
goto out;
}
zero_user_page(page, block_in_page << blkbits,
1 << blkbits, KM_USER0);
zero_user(page, block_in_page << blkbits,
1 << blkbits);
dio->block_in_file++;
block_in_page++;
goto next_block;
Expand Down
5 changes: 2 additions & 3 deletions trunk/fs/ecryptfs/mmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -257,8 +257,7 @@ static int fill_zeros_to_end_of_page(struct page *page, unsigned int to)
end_byte_in_page = i_size_read(inode) % PAGE_CACHE_SIZE;
if (to > end_byte_in_page)
end_byte_in_page = to;
zero_user_page(page, end_byte_in_page,
PAGE_CACHE_SIZE - end_byte_in_page, KM_USER0);
zero_user_segment(page, end_byte_in_page, PAGE_CACHE_SIZE);
out:
return 0;
}
Expand Down Expand Up @@ -307,7 +306,7 @@ static int ecryptfs_prepare_write(struct file *file, struct page *page,
*/
if ((i_size_read(page->mapping->host) == prev_page_end_size) &&
(from != 0)) {
zero_user_page(page, 0, PAGE_CACHE_SIZE, KM_USER0);
zero_user(page, 0, PAGE_CACHE_SIZE);
}
out:
return rc;
Expand Down
4 changes: 2 additions & 2 deletions trunk/fs/ext3/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -1845,7 +1845,7 @@ static int ext3_block_truncate_page(handle_t *handle, struct page *page,
*/
if (!page_has_buffers(page) && test_opt(inode->i_sb, NOBH) &&
ext3_should_writeback_data(inode) && PageUptodate(page)) {
zero_user_page(page, offset, length, KM_USER0);
zero_user(page, offset, length);
set_page_dirty(page);
goto unlock;
}
Expand Down Expand Up @@ -1898,7 +1898,7 @@ static int ext3_block_truncate_page(handle_t *handle, struct page *page,
goto unlock;
}

zero_user_page(page, offset, length, KM_USER0);
zero_user(page, offset, length);
BUFFER_TRACE(bh, "zeroed end of block");

err = 0;
Expand Down
4 changes: 2 additions & 2 deletions trunk/fs/ext4/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -1840,7 +1840,7 @@ int ext4_block_truncate_page(handle_t *handle, struct page *page,
*/
if (!page_has_buffers(page) && test_opt(inode->i_sb, NOBH) &&
ext4_should_writeback_data(inode) && PageUptodate(page)) {
zero_user_page(page, offset, length, KM_USER0);
zero_user(page, offset, length);
set_page_dirty(page);
goto unlock;
}
Expand Down Expand Up @@ -1893,7 +1893,7 @@ int ext4_block_truncate_page(handle_t *handle, struct page *page,
goto unlock;
}

zero_user_page(page, offset, length, KM_USER0);
zero_user(page, offset, length);

BUFFER_TRACE(bh, "zeroed end of block");

Expand Down
2 changes: 1 addition & 1 deletion trunk/fs/gfs2/bmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -932,7 +932,7 @@ static int gfs2_block_truncate_page(struct address_space *mapping)
if (!gfs2_is_writeback(ip))
gfs2_trans_add_bh(ip->i_gl, bh, 0);

zero_user_page(page, offset, length, KM_USER0);
zero_user(page, offset, length);

unlock:
unlock_page(page);
Expand Down
2 changes: 1 addition & 1 deletion trunk/fs/gfs2/ops_address.c
Original file line number Diff line number Diff line change
Expand Up @@ -446,7 +446,7 @@ static int stuffed_readpage(struct gfs2_inode *ip, struct page *page)
* so we need to supply one here. It doesn't happen often.
*/
if (unlikely(page->index)) {
zero_user_page(page, 0, PAGE_CACHE_SIZE, KM_USER0);
zero_user(page, 0, PAGE_CACHE_SIZE);
return 0;
}

Expand Down
11 changes: 4 additions & 7 deletions trunk/fs/libfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -341,13 +341,10 @@ int simple_prepare_write(struct file *file, struct page *page,
unsigned from, unsigned to)
{
if (!PageUptodate(page)) {
if (to - from != PAGE_CACHE_SIZE) {
void *kaddr = kmap_atomic(page, KM_USER0);
memset(kaddr, 0, from);
memset(kaddr + to, 0, PAGE_CACHE_SIZE - to);
flush_dcache_page(page);
kunmap_atomic(kaddr, KM_USER0);
}
if (to - from != PAGE_CACHE_SIZE)
zero_user_segments(page,
0, from,
to, PAGE_CACHE_SIZE);
}
return 0;
}
Expand Down
7 changes: 2 additions & 5 deletions trunk/fs/mpage.c
Original file line number Diff line number Diff line change
Expand Up @@ -276,9 +276,7 @@ do_mpage_readpage(struct bio *bio, struct page *page, unsigned nr_pages,
}

if (first_hole != blocks_per_page) {
zero_user_page(page, first_hole << blkbits,
PAGE_CACHE_SIZE - (first_hole << blkbits),
KM_USER0);
zero_user_segment(page, first_hole << blkbits, PAGE_CACHE_SIZE);
if (first_hole == 0) {
SetPageUptodate(page);
unlock_page(page);
Expand Down Expand Up @@ -571,8 +569,7 @@ static int __mpage_writepage(struct page *page, struct writeback_control *wbc,

if (page->index > end_index || !offset)
goto confused;
zero_user_page(page, offset, PAGE_CACHE_SIZE - offset,
KM_USER0);
zero_user_segment(page, offset, PAGE_CACHE_SIZE);
}

/*
Expand Down
10 changes: 5 additions & 5 deletions trunk/fs/nfs/read.c
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ void nfs_readdata_release(void *data)
static
int nfs_return_empty_page(struct page *page)
{
zero_user_page(page, 0, PAGE_CACHE_SIZE, KM_USER0);
zero_user(page, 0, PAGE_CACHE_SIZE);
SetPageUptodate(page);
unlock_page(page);
return 0;
Expand All @@ -103,10 +103,10 @@ static void nfs_readpage_truncate_uninitialised_page(struct nfs_read_data *data)
pglen = PAGE_CACHE_SIZE - base;
for (;;) {
if (remainder <= pglen) {
zero_user_page(*pages, base, remainder, KM_USER0);
zero_user(*pages, base, remainder);
break;
}
zero_user_page(*pages, base, pglen, KM_USER0);
zero_user(*pages, base, pglen);
pages++;
remainder -= pglen;
pglen = PAGE_CACHE_SIZE;
Expand All @@ -130,7 +130,7 @@ static int nfs_readpage_async(struct nfs_open_context *ctx, struct inode *inode,
return PTR_ERR(new);
}
if (len < PAGE_CACHE_SIZE)
zero_user_page(page, len, PAGE_CACHE_SIZE - len, KM_USER0);
zero_user_segment(page, len, PAGE_CACHE_SIZE);

nfs_list_add_request(new, &one_request);
if (NFS_SERVER(inode)->rsize < PAGE_CACHE_SIZE)
Expand Down Expand Up @@ -532,7 +532,7 @@ readpage_async_filler(void *data, struct page *page)
goto out_error;

if (len < PAGE_CACHE_SIZE)
zero_user_page(page, len, PAGE_CACHE_SIZE - len, KM_USER0);
zero_user_segment(page, len, PAGE_CACHE_SIZE);
nfs_pageio_add_request(desc->pgio, new);
return 0;
out_error:
Expand Down
4 changes: 1 addition & 3 deletions trunk/fs/nfs/write.c
Original file line number Diff line number Diff line change
Expand Up @@ -665,9 +665,7 @@ static struct nfs_page * nfs_update_request(struct nfs_open_context* ctx,
* then we need to zero any uninitalised data. */
if (req->wb_pgbase == 0 && req->wb_bytes != PAGE_CACHE_SIZE
&& !PageUptodate(req->wb_page))
zero_user_page(req->wb_page, req->wb_bytes,
PAGE_CACHE_SIZE - req->wb_bytes,
KM_USER0);
zero_user_segment(req->wb_page, req->wb_bytes, PAGE_CACHE_SIZE);
return req;
}

Expand Down
20 changes: 11 additions & 9 deletions trunk/fs/ntfs/aops.c
Original file line number Diff line number Diff line change
Expand Up @@ -87,13 +87,17 @@ static void ntfs_end_buffer_async_read(struct buffer_head *bh, int uptodate)
/* Check for the current buffer head overflowing. */
if (unlikely(file_ofs + bh->b_size > init_size)) {
int ofs;
void *kaddr;

ofs = 0;
if (file_ofs < init_size)
ofs = init_size - file_ofs;
local_irq_save(flags);
zero_user_page(page, bh_offset(bh) + ofs,
bh->b_size - ofs, KM_BIO_SRC_IRQ);
kaddr = kmap_atomic(page, KM_BIO_SRC_IRQ);
memset(kaddr + bh_offset(bh) + ofs, 0,
bh->b_size - ofs);
flush_dcache_page(page);
kunmap_atomic(kaddr, KM_BIO_SRC_IRQ);
local_irq_restore(flags);
}
} else {
Expand Down Expand Up @@ -334,7 +338,7 @@ static int ntfs_read_block(struct page *page)
bh->b_blocknr = -1UL;
clear_buffer_mapped(bh);
handle_zblock:
zero_user_page(page, i * blocksize, blocksize, KM_USER0);
zero_user(page, i * blocksize, blocksize);
if (likely(!err))
set_buffer_uptodate(bh);
} while (i++, iblock++, (bh = bh->b_this_page) != head);
Expand Down Expand Up @@ -410,7 +414,7 @@ static int ntfs_readpage(struct file *file, struct page *page)
/* Is the page fully outside i_size? (truncate in progress) */
if (unlikely(page->index >= (i_size + PAGE_CACHE_SIZE - 1) >>
PAGE_CACHE_SHIFT)) {
zero_user_page(page, 0, PAGE_CACHE_SIZE, KM_USER0);
zero_user(page, 0, PAGE_CACHE_SIZE);
ntfs_debug("Read outside i_size - truncated?");
goto done;
}
Expand Down Expand Up @@ -459,7 +463,7 @@ static int ntfs_readpage(struct file *file, struct page *page)
* ok to ignore the compressed flag here.
*/
if (unlikely(page->index > 0)) {
zero_user_page(page, 0, PAGE_CACHE_SIZE, KM_USER0);
zero_user(page, 0, PAGE_CACHE_SIZE);
goto done;
}
if (!NInoAttr(ni))
Expand Down Expand Up @@ -788,8 +792,7 @@ static int ntfs_write_block(struct page *page, struct writeback_control *wbc)
if (err == -ENOENT || lcn == LCN_ENOENT) {
bh->b_blocknr = -1;
clear_buffer_dirty(bh);
zero_user_page(page, bh_offset(bh), blocksize,
KM_USER0);
zero_user(page, bh_offset(bh), blocksize);
set_buffer_uptodate(bh);
err = 0;
continue;
Expand Down Expand Up @@ -1414,8 +1417,7 @@ static int ntfs_writepage(struct page *page, struct writeback_control *wbc)
if (page->index >= (i_size >> PAGE_CACHE_SHIFT)) {
/* The page straddles i_size. */
unsigned int ofs = i_size & ~PAGE_CACHE_MASK;
zero_user_page(page, ofs, PAGE_CACHE_SIZE - ofs,
KM_USER0);
zero_user_segment(page, ofs, PAGE_CACHE_SIZE);
}
/* Handle mst protected attributes. */
if (NInoMstProtected(ni))
Expand Down
2 changes: 1 addition & 1 deletion trunk/fs/ntfs/compress.c
Original file line number Diff line number Diff line change
Expand Up @@ -565,7 +565,7 @@ int ntfs_read_compressed_block(struct page *page)
if (xpage >= max_page) {
kfree(bhs);
kfree(pages);
zero_user_page(page, 0, PAGE_CACHE_SIZE, KM_USER0);
zero_user(page, 0, PAGE_CACHE_SIZE);
ntfs_debug("Compressed read outside i_size - truncated?");
SetPageUptodate(page);
unlock_page(page);
Expand Down
Loading

0 comments on commit 76e00a8

Please sign in to comment.