Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 855a85f7 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Quoth Chris:
 "This is later than I wanted because I got backed up running through
  btrfs bugs from the Oracle QA teams.  But they are all bug fixes that
  we've queued and tested since rc1.

  Nothing in particular stands out, this just reflects bug fixing and QA
  done in parallel by all the btrfs developers.  The most user visible
  of these is:

    Btrfs: clear the extent uptodate bits during parent transid failures

  Because that helps deal with out of date drives (say an iscsi disk
  that has gone away and come back).  The old code wasn't always
  properly retrying the other mirror for this type of failure."

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (24 commits)
  Btrfs: fix compiler warnings on 32 bit systems
  Btrfs: increase the global block reserve estimates
  Btrfs: clear the extent uptodate bits during parent transid failures
  Btrfs: add extra sanity checks on the path names in btrfs_mksubvol
  Btrfs: make sure we update latest_bdev
  Btrfs: improve error handling for btrfs_insert_dir_item callers
  Btrfs: be less strict on finding next node in clear_extent_bit
  Btrfs: fix a bug on overcommit stuff
  Btrfs: kick out redundant stuff in convert_extent_bit
  Btrfs: skip states when they does not contain bits to clear
  Btrfs: check return value of lookup_extent_mapping() correctly
  Btrfs: fix deadlock on page lock when doing auto-defragment
  Btrfs: fix return value check of extent_io_ops
  btrfs: honor umask when creating subvol root
  btrfs: silence warning in raid array setup
  btrfs: fix structs where bitfields and spinlock/atomic share 8B word
  btrfs: delalloc for page dirtied out-of-band in fixup worker
  Btrfs: fix memory leak in load_free_space_cache()
  btrfs: don't check DUP chunks twice
  Btrfs: fix trim 0 bytes after a device delete
  ...
parents ee325324 e77266e4
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -892,6 +892,8 @@ static char *iref_to_path(struct btrfs_root *fs_root, struct btrfs_path *path,
		if (eb != eb_in)
		if (eb != eb_in)
			free_extent_buffer(eb);
			free_extent_buffer(eb);
		ret = inode_ref_info(parent, 0, fs_root, path, &found_key);
		ret = inode_ref_info(parent, 0, fs_root, path, &found_key);
		if (ret > 0)
			ret = -ENOENT;
		if (ret)
		if (ret)
			break;
			break;
		next_inum = found_key.offset;
		next_inum = found_key.offset;
+1 −1
Original line number Original line Diff line number Diff line
@@ -644,7 +644,7 @@ static struct btrfsic_dev_state *btrfsic_dev_state_hashtable_lookup(
static int btrfsic_process_superblock(struct btrfsic_state *state,
static int btrfsic_process_superblock(struct btrfsic_state *state,
				      struct btrfs_fs_devices *fs_devices)
				      struct btrfs_fs_devices *fs_devices)
{
{
	int ret;
	int ret = 0;
	struct btrfs_super_block *selected_super;
	struct btrfs_super_block *selected_super;
	struct list_head *dev_head = &fs_devices->devices;
	struct list_head *dev_head = &fs_devices->devices;
	struct btrfs_device *device;
	struct btrfs_device *device;
+2 −0
Original line number Original line Diff line number Diff line
@@ -588,6 +588,8 @@ int btrfs_submit_compressed_read(struct inode *inode, struct bio *bio,
				   page_offset(bio->bi_io_vec->bv_page),
				   page_offset(bio->bi_io_vec->bv_page),
				   PAGE_CACHE_SIZE);
				   PAGE_CACHE_SIZE);
	read_unlock(&em_tree->lock);
	read_unlock(&em_tree->lock);
	if (!em)
		return -EIO;


	compressed_len = em->block_len;
	compressed_len = em->block_len;
	cb = kmalloc(compressed_bio_size(root, compressed_len), GFP_NOFS);
	cb = kmalloc(compressed_bio_size(root, compressed_len), GFP_NOFS);
+1 −1
Original line number Original line Diff line number Diff line
@@ -886,7 +886,7 @@ struct btrfs_block_rsv {
	u64 reserved;
	u64 reserved;
	struct btrfs_space_info *space_info;
	struct btrfs_space_info *space_info;
	spinlock_t lock;
	spinlock_t lock;
	unsigned int full:1;
	unsigned int full;
};
};


/*
/*
+12 −0
Original line number Original line Diff line number Diff line
@@ -2260,6 +2260,12 @@ int open_ctree(struct super_block *sb,
		goto fail_sb_buffer;
		goto fail_sb_buffer;
	}
	}


	if (sectorsize < PAGE_SIZE) {
		printk(KERN_WARNING "btrfs: Incompatible sector size "
		       "found on %s\n", sb->s_id);
		goto fail_sb_buffer;
	}

	mutex_lock(&fs_info->chunk_mutex);
	mutex_lock(&fs_info->chunk_mutex);
	ret = btrfs_read_sys_array(tree_root);
	ret = btrfs_read_sys_array(tree_root);
	mutex_unlock(&fs_info->chunk_mutex);
	mutex_unlock(&fs_info->chunk_mutex);
@@ -2301,6 +2307,12 @@ int open_ctree(struct super_block *sb,


	btrfs_close_extra_devices(fs_devices);
	btrfs_close_extra_devices(fs_devices);


	if (!fs_devices->latest_bdev) {
		printk(KERN_CRIT "btrfs: failed to read devices on %s\n",
		       sb->s_id);
		goto fail_tree_roots;
	}

retry_root_backup:
retry_root_backup:
	blocksize = btrfs_level_size(tree_root,
	blocksize = btrfs_level_size(tree_root,
				     btrfs_super_root_level(disk_super));
				     btrfs_super_root_level(disk_super));
Loading