diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2009-05-20 09:02:28 +0200 | 
|---|---|---|
| committer | Thomas Gleixner <tglx@linutronix.de> | 2009-05-20 09:02:28 +0200 | 
| commit | 521c180874dae86f675d23c4eade4dba8b1f2cc8 (patch) | |
| tree | 7509303da3a9a1b40a26f6811f321c89cd31737b /fs/ext3/inode.c | |
| parent | f1a11e0576c7a73d759d05d776692b2b2d37172b (diff) | |
| parent | 64d1304a64477629cb16b75491a77bafe6f86963 (diff) | |
Merge branch 'core/urgent' into core/futexes
Merge reason: this branch was on an pre -rc1 base, merge it up to -rc6+
              to get the latest upstream fixes.
Conflicts:
	kernel/futex.c
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'fs/ext3/inode.c')
| -rw-r--r-- | fs/ext3/inode.c | 23 | 
1 files changed, 18 insertions, 5 deletions
diff --git a/fs/ext3/inode.c b/fs/ext3/inode.c index 466a332e0bd..fcfa2436185 100644 --- a/fs/ext3/inode.c +++ b/fs/ext3/inode.c @@ -1521,12 +1521,16 @@ static int ext3_ordered_writepage(struct page *page,  	if (!page_has_buffers(page)) {  		create_empty_buffers(page, inode->i_sb->s_blocksize,  				(1 << BH_Dirty)|(1 << BH_Uptodate)); -	} else if (!walk_page_buffers(NULL, page_buffers(page), 0, PAGE_CACHE_SIZE, NULL, buffer_unmapped)) { -		/* Provide NULL instead of get_block so that we catch bugs if buffers weren't really mapped */ -		return block_write_full_page(page, NULL, wbc); +		page_bufs = page_buffers(page); +	} else { +		page_bufs = page_buffers(page); +		if (!walk_page_buffers(NULL, page_bufs, 0, PAGE_CACHE_SIZE, +				       NULL, buffer_unmapped)) { +			/* Provide NULL get_block() to catch bugs if buffers +			 * weren't really mapped */ +			return block_write_full_page(page, NULL, wbc); +		}  	} -	page_bufs = page_buffers(page); -  	handle = ext3_journal_start(inode, ext3_writepage_trans_blocks(inode));  	if (IS_ERR(handle)) { @@ -1581,6 +1585,15 @@ static int ext3_writeback_writepage(struct page *page,  	if (ext3_journal_current_handle())  		goto out_fail; +	if (page_has_buffers(page)) { +		if (!walk_page_buffers(NULL, page_buffers(page), 0, +				      PAGE_CACHE_SIZE, NULL, buffer_unmapped)) { +			/* Provide NULL get_block() to catch bugs if buffers +			 * weren't really mapped */ +			return block_write_full_page(page, NULL, wbc); +		} +	} +  	handle = ext3_journal_start(inode, ext3_writepage_trans_blocks(inode));  	if (IS_ERR(handle)) {  		ret = PTR_ERR(handle);  | 
