diff options
Diffstat (limited to 'fs/nilfs2/file.c')
| -rw-r--r-- | fs/nilfs2/file.c | 15 | 
1 files changed, 7 insertions, 8 deletions
diff --git a/fs/nilfs2/file.c b/fs/nilfs2/file.c index 2f560c9fb808..397e73258631 100644 --- a/fs/nilfs2/file.c +++ b/fs/nilfs2/file.c @@ -59,7 +59,7 @@ static int nilfs_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)  	struct nilfs_transaction_info ti;  	int ret; -	if (unlikely(nilfs_near_disk_full(NILFS_SB(inode->i_sb)->s_nilfs))) +	if (unlikely(nilfs_near_disk_full(inode->i_sb->s_fs_info)))  		return VM_FAULT_SIGBUS; /* -ENOSPC */  	lock_page(page); @@ -72,10 +72,9 @@ static int nilfs_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)  	/*  	 * check to see if the page is mapped already (no holes)  	 */ -	if (PageMappedToDisk(page)) { -		unlock_page(page); +	if (PageMappedToDisk(page))  		goto mapped; -	} +  	if (page_has_buffers(page)) {  		struct buffer_head *bh, *head;  		int fully_mapped = 1; @@ -90,7 +89,6 @@ static int nilfs_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)  		if (fully_mapped) {  			SetPageMappedToDisk(page); -			unlock_page(page);  			goto mapped;  		}  	} @@ -105,16 +103,17 @@ static int nilfs_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)  		return VM_FAULT_SIGBUS;  	ret = block_page_mkwrite(vma, vmf, nilfs_get_block); -	if (unlikely(ret)) { +	if (ret != VM_FAULT_LOCKED) {  		nilfs_transaction_abort(inode->i_sb);  		return ret;  	} +	nilfs_set_file_dirty(inode, 1 << (PAGE_SHIFT - inode->i_blkbits));  	nilfs_transaction_commit(inode->i_sb);   mapped:  	SetPageChecked(page);  	wait_on_page_writeback(page); -	return 0; +	return VM_FAULT_LOCKED;  }  static const struct vm_operations_struct nilfs_file_vm_ops = { @@ -142,7 +141,7 @@ const struct file_operations nilfs_file_operations = {  	.aio_write	= generic_file_aio_write,  	.unlocked_ioctl	= nilfs_ioctl,  #ifdef CONFIG_COMPAT -	.compat_ioctl	= nilfs_ioctl, +	.compat_ioctl	= nilfs_compat_ioctl,  #endif	/* CONFIG_COMPAT */  	.mmap		= nilfs_file_mmap,  	.open		= generic_file_open,  | 
