aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSouptick Joarder <jrdr.linux@gmail.com>2018-10-02 22:20:50 -0400
committerTheodore Ts'o <tytso@mit.edu>2018-10-02 22:20:50 -0400
commit401b25aa1a75e7fe4e3202a6336604269697d705 (patch)
tree6506f794016ad7f8e905e33cd5faa5090a0f4dd7
parent625ef8a3acd111d5f496d190baf99d1a815bd03e (diff)
ext4: convert fault handler to use vm_fault_t type
Return type of ext4_page_mkwrite and ext4_filemap_fault are changed to use vm_fault_t type. With this patch all the callers of block_page_mkwrite_return() are changed to handle vm_fault_t. So converting the return type of block_page_mkwrite_return() to vm_fault_t. Signed-off-by: Souptick Joarder <jrdr.linux@gmail.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu> Reviewed-by: Matthew Wilcox <willy@infradead.org>
-rw-r--r--fs/ext4/ext4.h4
-rw-r--r--fs/ext4/inode.c29
-rw-r--r--include/linux/buffer_head.h2
3 files changed, 18 insertions, 17 deletions
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index 57cbc98d730f..86e1bacac757 100644
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
@@ -2487,8 +2487,8 @@ extern int ext4_writepage_trans_blocks(struct inode *);
2487extern int ext4_chunk_trans_blocks(struct inode *, int nrblocks); 2487extern int ext4_chunk_trans_blocks(struct inode *, int nrblocks);
2488extern int ext4_zero_partial_blocks(handle_t *handle, struct inode *inode, 2488extern int ext4_zero_partial_blocks(handle_t *handle, struct inode *inode,
2489 loff_t lstart, loff_t lend); 2489 loff_t lstart, loff_t lend);
2490extern int ext4_page_mkwrite(struct vm_fault *vmf); 2490extern vm_fault_t ext4_page_mkwrite(struct vm_fault *vmf);
2491extern int ext4_filemap_fault(struct vm_fault *vmf); 2491extern vm_fault_t ext4_filemap_fault(struct vm_fault *vmf);
2492extern qsize_t *ext4_get_reserved_space(struct inode *inode); 2492extern qsize_t *ext4_get_reserved_space(struct inode *inode);
2493extern int ext4_get_projid(struct inode *inode, kprojid_t *projid); 2493extern int ext4_get_projid(struct inode *inode, kprojid_t *projid);
2494extern void ext4_da_release_space(struct inode *inode, int to_free); 2494extern void ext4_da_release_space(struct inode *inode, int to_free);
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 9b69f88bdacc..c3d9a42c561e 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -6184,13 +6184,14 @@ static int ext4_bh_unmapped(handle_t *handle, struct buffer_head *bh)
6184 return !buffer_mapped(bh); 6184 return !buffer_mapped(bh);
6185} 6185}
6186 6186
6187int ext4_page_mkwrite(struct vm_fault *vmf) 6187vm_fault_t ext4_page_mkwrite(struct vm_fault *vmf)
6188{ 6188{
6189 struct vm_area_struct *vma = vmf->vma; 6189 struct vm_area_struct *vma = vmf->vma;
6190 struct page *page = vmf->page; 6190 struct page *page = vmf->page;
6191 loff_t size; 6191 loff_t size;
6192 unsigned long len; 6192 unsigned long len;
6193 int ret; 6193 int err;
6194 vm_fault_t ret;
6194 struct file *file = vma->vm_file; 6195 struct file *file = vma->vm_file;
6195 struct inode *inode = file_inode(file); 6196 struct inode *inode = file_inode(file);
6196 struct address_space *mapping = inode->i_mapping; 6197 struct address_space *mapping = inode->i_mapping;
@@ -6203,8 +6204,8 @@ int ext4_page_mkwrite(struct vm_fault *vmf)
6203 6204
6204 down_read(&EXT4_I(inode)->i_mmap_sem); 6205 down_read(&EXT4_I(inode)->i_mmap_sem);
6205 6206
6206 ret = ext4_convert_inline_data(inode); 6207 err = ext4_convert_inline_data(inode);
6207 if (ret) 6208 if (err)
6208 goto out_ret; 6209 goto out_ret;
6209 6210
6210 /* Delalloc case is easy... */ 6211 /* Delalloc case is easy... */
@@ -6212,9 +6213,9 @@ int ext4_page_mkwrite(struct vm_fault *vmf)
6212 !ext4_should_journal_data(inode) && 6213 !ext4_should_journal_data(inode) &&
6213 !ext4_nonda_switch(inode->i_sb)) { 6214 !ext4_nonda_switch(inode->i_sb)) {
6214 do { 6215 do {
6215 ret = block_page_mkwrite(vma, vmf, 6216 err = block_page_mkwrite(vma, vmf,
6216 ext4_da_get_block_prep); 6217 ext4_da_get_block_prep);
6217 } while (ret == -ENOSPC && 6218 } while (err == -ENOSPC &&
6218 ext4_should_retry_alloc(inode->i_sb, &retries)); 6219 ext4_should_retry_alloc(inode->i_sb, &retries));
6219 goto out_ret; 6220 goto out_ret;
6220 } 6221 }
@@ -6259,8 +6260,8 @@ retry_alloc:
6259 ret = VM_FAULT_SIGBUS; 6260 ret = VM_FAULT_SIGBUS;
6260 goto out; 6261 goto out;
6261 } 6262 }
6262 ret = block_page_mkwrite(vma, vmf, get_block); 6263 err = block_page_mkwrite(vma, vmf, get_block);
6263 if (!ret && ext4_should_journal_data(inode)) { 6264 if (!err && ext4_should_journal_data(inode)) {
6264 if (ext4_walk_page_buffers(handle, page_buffers(page), 0, 6265 if (ext4_walk_page_buffers(handle, page_buffers(page), 0,
6265 PAGE_SIZE, NULL, do_journal_get_write_access)) { 6266 PAGE_SIZE, NULL, do_journal_get_write_access)) {
6266 unlock_page(page); 6267 unlock_page(page);
@@ -6271,24 +6272,24 @@ retry_alloc:
6271 ext4_set_inode_state(inode, EXT4_STATE_JDATA); 6272 ext4_set_inode_state(inode, EXT4_STATE_JDATA);
6272 } 6273 }
6273 ext4_journal_stop(handle); 6274 ext4_journal_stop(handle);
6274 if (ret == -ENOSPC && ext4_should_retry_alloc(inode->i_sb, &retries)) 6275 if (err == -ENOSPC && ext4_should_retry_alloc(inode->i_sb, &retries))
6275 goto retry_alloc; 6276 goto retry_alloc;
6276out_ret: 6277out_ret:
6277 ret = block_page_mkwrite_return(ret); 6278 ret = block_page_mkwrite_return(err);
6278out: 6279out:
6279 up_read(&EXT4_I(inode)->i_mmap_sem); 6280 up_read(&EXT4_I(inode)->i_mmap_sem);
6280 sb_end_pagefault(inode->i_sb); 6281 sb_end_pagefault(inode->i_sb);
6281 return ret; 6282 return ret;
6282} 6283}
6283 6284
6284int ext4_filemap_fault(struct vm_fault *vmf) 6285vm_fault_t ext4_filemap_fault(struct vm_fault *vmf)
6285{ 6286{
6286 struct inode *inode = file_inode(vmf->vma->vm_file); 6287 struct inode *inode = file_inode(vmf->vma->vm_file);
6287 int err; 6288 vm_fault_t ret;
6288 6289
6289 down_read(&EXT4_I(inode)->i_mmap_sem); 6290 down_read(&EXT4_I(inode)->i_mmap_sem);
6290 err = filemap_fault(vmf); 6291 ret = filemap_fault(vmf);
6291 up_read(&EXT4_I(inode)->i_mmap_sem); 6292 up_read(&EXT4_I(inode)->i_mmap_sem);
6292 6293
6293 return err; 6294 return ret;
6294} 6295}
diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h
index 96225a77c112..7b73ef7f902d 100644
--- a/include/linux/buffer_head.h
+++ b/include/linux/buffer_head.h
@@ -242,7 +242,7 @@ int block_commit_write(struct page *page, unsigned from, unsigned to);
242int block_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf, 242int block_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf,
243 get_block_t get_block); 243 get_block_t get_block);
244/* Convert errno to return value from ->page_mkwrite() call */ 244/* Convert errno to return value from ->page_mkwrite() call */
245static inline int block_page_mkwrite_return(int err) 245static inline vm_fault_t block_page_mkwrite_return(int err)
246{ 246{
247 if (err == 0) 247 if (err == 0)
248 return VM_FAULT_LOCKED; 248 return VM_FAULT_LOCKED;