Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 320994
b: refs/heads/master
c: b2b5ef5
h: refs/heads/master
v: v3
  • Loading branch information
Jan Kara authored and Al Viro committed Jul 31, 2012
1 parent eb137e5 commit 3d3827d
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 6 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: 2c22b337b5bbb497c41b348b2357b7070ed5ba88
refs/heads/master: b2b5ef5c8e89f19b68c174bf246f3ca212dbf0bc
3 changes: 0 additions & 3 deletions trunk/fs/btrfs/disk-io.c
Original file line number Diff line number Diff line change
Expand Up @@ -1533,8 +1533,6 @@ static int cleaner_kthread(void *arg)
struct btrfs_root *root = arg;

do {
vfs_check_frozen(root->fs_info->sb, SB_FREEZE_WRITE);

if (!(root->fs_info->sb->s_flags & MS_RDONLY) &&
mutex_trylock(&root->fs_info->cleaner_mutex)) {
btrfs_run_delayed_iputs(root);
Expand Down Expand Up @@ -1566,7 +1564,6 @@ static int transaction_kthread(void *arg)
do {
cannot_commit = false;
delay = HZ * 30;
vfs_check_frozen(root->fs_info->sb, SB_FREEZE_WRITE);
mutex_lock(&root->fs_info->transaction_kthread_mutex);

spin_lock(&root->fs_info->trans_lock);
Expand Down
3 changes: 2 additions & 1 deletion trunk/fs/btrfs/file.c
Original file line number Diff line number Diff line change
Expand Up @@ -1379,7 +1379,7 @@ static ssize_t btrfs_file_aio_write(struct kiocb *iocb,
ssize_t err = 0;
size_t count, ocount;

vfs_check_frozen(inode->i_sb, SB_FREEZE_WRITE);
sb_start_write(inode->i_sb);

mutex_lock(&inode->i_mutex);

Expand Down Expand Up @@ -1469,6 +1469,7 @@ static ssize_t btrfs_file_aio_write(struct kiocb *iocb,
num_written = err;
}
out:
sb_end_write(inode->i_sb);
current->backing_dev_info = NULL;
return num_written ? num_written : err;
}
Expand Down
6 changes: 5 additions & 1 deletion trunk/fs/btrfs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -6620,6 +6620,7 @@ int btrfs_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
u64 page_start;
u64 page_end;

sb_start_pagefault(inode->i_sb);
ret = btrfs_delalloc_reserve_space(inode, PAGE_CACHE_SIZE);
if (!ret) {
ret = file_update_time(vma->vm_file);
Expand Down Expand Up @@ -6709,12 +6710,15 @@ int btrfs_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
unlock_extent_cached(io_tree, page_start, page_end, &cached_state, GFP_NOFS);

out_unlock:
if (!ret)
if (!ret) {
sb_end_pagefault(inode->i_sb);
return VM_FAULT_LOCKED;
}
unlock_page(page);
out:
btrfs_delalloc_release_space(inode, PAGE_CACHE_SIZE);
out_noreserve:
sb_end_pagefault(inode->i_sb);
return ret;
}

Expand Down
7 changes: 7 additions & 0 deletions trunk/fs/btrfs/transaction.c
Original file line number Diff line number Diff line change
Expand Up @@ -329,6 +329,8 @@ static struct btrfs_trans_handle *start_transaction(struct btrfs_root *root,
if (!h)
return ERR_PTR(-ENOMEM);

sb_start_intwrite(root->fs_info->sb);

if (may_wait_transaction(root, type))
wait_current_trans(root);

Expand All @@ -339,6 +341,7 @@ static struct btrfs_trans_handle *start_transaction(struct btrfs_root *root,
} while (ret == -EBUSY);

if (ret < 0) {
sb_end_intwrite(root->fs_info->sb);
kmem_cache_free(btrfs_trans_handle_cachep, h);
return ERR_PTR(ret);
}
Expand Down Expand Up @@ -528,6 +531,8 @@ static int __btrfs_end_transaction(struct btrfs_trans_handle *trans,
count++;
}

sb_end_intwrite(root->fs_info->sb);

if (lock && !atomic_read(&root->fs_info->open_ioctl_trans) &&
should_end_transaction(trans, root)) {
trans->transaction->blocked = 1;
Expand Down Expand Up @@ -1517,6 +1522,8 @@ int btrfs_commit_transaction(struct btrfs_trans_handle *trans,
put_transaction(cur_trans);
put_transaction(cur_trans);

sb_end_intwrite(root->fs_info->sb);

trace_btrfs_transaction_commit(root);

btrfs_scrub_continue(root);
Expand Down

0 comments on commit 3d3827d

Please sign in to comment.