diff options
| author | James Morris <james.l.morris@oracle.com> | 2012-09-28 13:37:32 +1000 | 
|---|---|---|
| committer | James Morris <james.l.morris@oracle.com> | 2012-09-28 13:37:32 +1000 | 
| commit | bf5308344527d015ac9a6d2bda4ad4d40fd7d943 (patch) | |
| tree | 566e61e2cfc648c374d15cfc8c661b73e1a471f8 /fs/btrfs/super.c | |
| parent | 3585e96cd1049682b8a19a0b699422156e9d735b (diff) | |
| parent | 979570e02981d4a8fc20b3cc8fd651856c98ee9d (diff) | |
| download | olio-linux-3.10-bf5308344527d015ac9a6d2bda4ad4d40fd7d943.tar.xz olio-linux-3.10-bf5308344527d015ac9a6d2bda4ad4d40fd7d943.zip  | |
Merge tag 'v3.6-rc7' into next
Linux 3.6-rc7
Requested by David Howells so he can merge his key susbsystem work into
my tree with requisite -linus changesets.
Diffstat (limited to 'fs/btrfs/super.c')
| -rw-r--r-- | fs/btrfs/super.c | 15 | 
1 files changed, 11 insertions, 4 deletions
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index f2eb24c477a..83d6f9f9c22 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c @@ -838,7 +838,6 @@ int btrfs_sync_fs(struct super_block *sb, int wait)  	struct btrfs_trans_handle *trans;  	struct btrfs_fs_info *fs_info = btrfs_sb(sb);  	struct btrfs_root *root = fs_info->tree_root; -	int ret;  	trace_btrfs_sync_fs(wait); @@ -849,11 +848,17 @@ int btrfs_sync_fs(struct super_block *sb, int wait)  	btrfs_wait_ordered_extents(root, 0, 0); -	trans = btrfs_start_transaction(root, 0); +	spin_lock(&fs_info->trans_lock); +	if (!fs_info->running_transaction) { +		spin_unlock(&fs_info->trans_lock); +		return 0; +	} +	spin_unlock(&fs_info->trans_lock); + +	trans = btrfs_join_transaction(root);  	if (IS_ERR(trans))  		return PTR_ERR(trans); -	ret = btrfs_commit_transaction(trans, root); -	return ret; +	return btrfs_commit_transaction(trans, root);  }  static int btrfs_show_options(struct seq_file *seq, struct dentry *dentry) @@ -1530,6 +1535,8 @@ static int btrfs_show_devname(struct seq_file *m, struct dentry *root)  	while (cur_devices) {  		head = &cur_devices->devices;  		list_for_each_entry(dev, head, dev_list) { +			if (dev->missing) +				continue;  			if (!first_dev || dev->devid < first_dev->devid)  				first_dev = dev;  		}  |