History

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: Btrfs: call d_instantiate after all ops are setup Btrfs: fix worker lock misuse in find_worker

Linus Torvalds committed 14 years ago

Commit 827fa4c2 parents 5d219c6 08c422c2 files · +7 −5Browse files

Unified · Split

2 files
  1. fs/btrfs/async-thread.c +2 −1
  2. fs/btrfs/inode.c +5 −4
fs/btrfs/async-thread.c+2−1
@@ -563,8 +563,8 @@ static struct btrfs_worker_thread *find_worker(struct btrfs_workers *workers) · 562 unmodified lines
563563 struct list_head *fallback;
564564 int ret;
565565
566−again:
567566 spin_lock_irqsave(&workers->lock, flags);
567+again:
568568 worker = next_worker(workers);
569569
570570 if (!worker) {
@@ -579,6 +579,7 @@ again: · 8 unmodified lines
579579 spin_unlock_irqrestore(&workers->lock, flags);
580580 /* we're below the limit, start another worker */
581581 ret = __btrfs_start_workers(workers);
582+ spin_lock_irqsave(&workers->lock, flags);
582583 if (ret)
583584 goto fallback;
584585 goto again;
fs/btrfs/inode.c+5−4
@@ -4590,10 +4590,6 @@ static int btrfs_add_nondir(struct btrfs_trans_handle *trans, · 4589 unmodified lines
45904590 int err = btrfs_add_link(trans, dir, inode,
45914591 dentry->d_name.name, dentry->d_name.len,
45924592 backref, index);
4593− if (!err) {
4594− d_instantiate(dentry, inode);
4595− return 0;
4596− }
45974593 if (err > 0)
45984594 err = -EEXIST;
45994595 return err;
@@ -4655,6 +4651,7 @@ static int btrfs_mknod(struct inode *dir, struct dentry *dentry, · 55 unmodified lines
46554651 else {
46564652 init_special_inode(inode, inode->i_mode, rdev);
46574653 btrfs_update_inode(trans, root, inode);
4654+ d_instantiate(dentry, inode);
46584655 }
46594656 out_unlock:
46604657 nr = trans->blocks_used;
@@ -4722,6 +4719,7 @@ static int btrfs_create(struct inode *dir, struct dentry *dentry, · 61 unmodified lines
47224719 inode->i_mapping->a_ops = &btrfs_aops;
47234720 inode->i_mapping->backing_dev_info = &root->fs_info->bdi;
47244721 BTRFS_I(inode)->io_tree.ops = &btrfs_extent_io_ops;
4722+ d_instantiate(dentry, inode);
47254723 }
47264724 out_unlock:
47274725 nr = trans->blocks_used;
@@ -4779,6 +4777,7 @@ static int btrfs_link(struct dentry *old_dentry, struct inode *dir, · 51 unmodified lines
47794777 struct dentry *parent = dentry->d_parent;
47804778 err = btrfs_update_inode(trans, root, inode);
47814779 BUG_ON(err);
4780+ d_instantiate(dentry, inode);
47824781 btrfs_log_new_name(trans, inode, NULL, parent);
47834782 }
47844783
@@ -7245,6 +7244,8 @@ static int btrfs_symlink(struct inode *dir, struct dentry *dentry, · 2460 unmodified lines
72457244 drop_inode = 1;
72467245
72477246 out_unlock:
7247+ if (!err)
7248+ d_instantiate(dentry, inode);
72487249 nr = trans->blocks_used;
72497250 btrfs_end_transaction_throttle(trans, root);
72507251 if (drop_inode) {

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