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

Commit f3270b16 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2: (48 commits)
  ocfs2: Avoid to evaluate xattr block flags again.
  ocfs2/cluster: Release debugfs file elapsed_time_in_ms
  ocfs2: Add a mount option "coherency=*" to handle cluster coherency for O_DIRECT writes.
  Initialize max_slots early
  When I tried to compile I got the following warning: fs/ocfs2/slot_map.c: In function ‘ocfs2_init_slot_info’: fs/ocfs2/slot_map.c:360: warning: ‘bytes’ may be used uninitialized in this function fs/ocfs2/slot_map.c:360: note: ‘bytes’ was declared here Compiler: gcc version 4.4.3 (GCC) on Mandriva I'm not sure why this warning occurs, I think compiler don't know that variable "bytes" is initialized when it is sent by reference to ocfs2_slot_map_physical_size and it throws that ugly warning. However, a simple initialization of "bytes" variable with 0 will fix it.
  ocfs2: validate bg_free_bits_count after update
  ocfs2/cluster: Bump up dlm protocol to version 1.1
  ocfs2/cluster: Show per region heartbeat elapsed time
  ocfs2/cluster: Add mlogs for heartbeat up/down events
  ocfs2/cluster: Create debugfs dir/files for each region
  ocfs2/cluster: Create debugfs files for live, quorum and failed region bitmaps
  ocfs2/cluster: Maintain bitmap of failed regions
  ocfs2/cluster: Maintain bitmap of quorum regions
  ocfs2/cluster: Track bitmap of live heartbeat regions
  ocfs2/cluster: Track number of global heartbeat regions
  ocfs2/cluster: Maintain live node bitmap per heartbeat region
  ocfs2/cluster: Reorganize o2hb debugfs init
  ocfs2/cluster: Check slots for unconfigured live nodes
  ocfs2/cluster: Print messages when adding/removing nodes
  ocfs2/cluster: Print messages when adding/removing heartbeat regions
  ...
parents 3044100e 2decd65a
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -87,3 +87,10 @@ dir_resv_level= (*) By default, directory reservations will scale with file
			reservations - users should rarely need to change this
			reservations - users should rarely need to change this
			value. If allocation reservations are turned off, this
			value. If allocation reservations are turned off, this
			option will have no effect.
			option will have no effect.
coherency=full  (*)	Disallow concurrent O_DIRECT writes, cluster inode
			lock will be taken to force other nodes drop cache,
			therefore full cluster coherency is guaranteed even
			for O_DIRECT writes.
coherency=buffered	Allow concurrent O_DIRECT writes without EX lock among
			nodes, which gains high performance at risk of getting
			stale data on other nodes.
+2 −2
Original line number Original line Diff line number Diff line
@@ -1849,8 +1849,8 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
		goto failed_mount;
		goto failed_mount;
	}
	}


	if (le32_to_cpu(es->s_blocks_count) >
	if (generic_check_addressable(sb->s_blocksize_bits,
		    (sector_t)(~0ULL) >> (sb->s_blocksize_bits - 9)) {
				      le32_to_cpu(es->s_blocks_count))) {
		ext3_msg(sb, KERN_ERR,
		ext3_msg(sb, KERN_ERR,
			"error: filesystem is too large to mount safely");
			"error: filesystem is too large to mount safely");
		if (sizeof(sector_t) < 8)
		if (sizeof(sector_t) < 8)
+3 −5
Original line number Original line Diff line number Diff line
@@ -2831,15 +2831,13 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
	 * Test whether we have more sectors than will fit in sector_t,
	 * Test whether we have more sectors than will fit in sector_t,
	 * and whether the max offset is addressable by the page cache.
	 * and whether the max offset is addressable by the page cache.
	 */
	 */
	if ((ext4_blocks_count(es) >
	ret = generic_check_addressable(sb->s_blocksize_bits,
	     (sector_t)(~0ULL) >> (sb->s_blocksize_bits - 9)) ||
					ext4_blocks_count(es));
	    (ext4_blocks_count(es) >
	if (ret) {
	     (pgoff_t)(~0ULL) >> (PAGE_CACHE_SHIFT - sb->s_blocksize_bits))) {
		ext4_msg(sb, KERN_ERR, "filesystem"
		ext4_msg(sb, KERN_ERR, "filesystem"
			 " too large to mount safely on this system");
			 " too large to mount safely on this system");
		if (sizeof(sector_t) < 8)
		if (sizeof(sector_t) < 8)
			ext4_msg(sb, KERN_WARNING, "CONFIG_LBDAF not enabled");
			ext4_msg(sb, KERN_WARNING, "CONFIG_LBDAF not enabled");
		ret = -EFBIG;
		goto failed_mount;
		goto failed_mount;
	}
	}


+4 −0
Original line number Original line Diff line number Diff line
@@ -1371,6 +1371,10 @@ int jbd2_journal_check_used_features (journal_t *journal, unsigned long compat,


	if (!compat && !ro && !incompat)
	if (!compat && !ro && !incompat)
		return 1;
		return 1;
	/* Load journal superblock if it is not loaded yet. */
	if (journal->j_format_version == 0 &&
	    journal_get_superblock(journal) != 0)
		return 0;
	if (journal->j_format_version == 1)
	if (journal->j_format_version == 1)
		return 0;
		return 0;


+29 −0
Original line number Original line Diff line number Diff line
@@ -913,6 +913,35 @@ int generic_file_fsync(struct file *file, int datasync)
}
}
EXPORT_SYMBOL(generic_file_fsync);
EXPORT_SYMBOL(generic_file_fsync);


/**
 * generic_check_addressable - Check addressability of file system
 * @blocksize_bits:	log of file system block size
 * @num_blocks:		number of blocks in file system
 *
 * Determine whether a file system with @num_blocks blocks (and a
 * block size of 2**@blocksize_bits) is addressable by the sector_t
 * and page cache of the system.  Return 0 if so and -EFBIG otherwise.
 */
int generic_check_addressable(unsigned blocksize_bits, u64 num_blocks)
{
	u64 last_fs_block = num_blocks - 1;
	u64 last_fs_page =
		last_fs_block >> (PAGE_CACHE_SHIFT - blocksize_bits);

	if (unlikely(num_blocks == 0))
		return 0;

	if ((blocksize_bits < 9) || (blocksize_bits > PAGE_CACHE_SHIFT))
		return -EINVAL;

	if ((last_fs_block > (sector_t)(~0ULL) >> (blocksize_bits - 9)) ||
	    (last_fs_page > (pgoff_t)(~0ULL))) {
		return -EFBIG;
	}
	return 0;
}
EXPORT_SYMBOL(generic_check_addressable);

/*
/*
 * No-op implementation of ->fsync for in-memory filesystems.
 * No-op implementation of ->fsync for in-memory filesystems.
 */
 */
Loading