History

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.

Souptick Joarder committed 8 years ago

Commit 401b25a1 parent 625ef8a3 files · +18 −17Browse files

Unified · Split

3 files
  1. fs/ext4/ext4.h +2 −2
  2. fs/ext4/inode.c +15 −14
  3. include/linux/buffer_head.h +1 −1
fs/ext4/ext4.h+2−2
@@ -2487,8 +2487,8 @@ extern int ext4_writepage_trans_blocks(struct inode *); · 2486 unmodified lines
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);
fs/ext4/inode.c+15−14
@@ -6184,13 +6184,14 @@ static int ext4_bh_unmapped(handle_t *handle, struct buffer_head *bh) · 6183 unmodified lines
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) · 6 unmodified lines
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) · 1 unmodified line
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: · 38 unmodified lines
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: · 4 unmodified lines
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}
include/linux/buffer_head.h+1−1
@@ -242,7 +242,7 @@ int block_commit_write(struct page *page, unsigned from, unsigned to); · 241 unmodified lines
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;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t