diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-07-26 19:55:54 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-07-26 19:55:54 -0700 | 
| commit | 0e06f5c0deeef0332a5da2ecb8f1fcf3e024d958 (patch) | |
| tree | e0f0af4aadf10c713c5cf1b65356844b3c9b3215 /fs/ocfs2 | |
| parent | f7816ad0f878dacd5f0120476f9b836ccf8699ea (diff) | |
| parent | 8f19b0c058d93a678a99dd6fec03af2e769943f2 (diff) | |
| download | linux-0e06f5c0deeef0332a5da2ecb8f1fcf3e024d958.tar.bz2 | |
Merge branch 'akpm' (patches from Andrew)
Merge updates from Andrew Morton:
 - a few misc bits
 - ocfs2
 - most(?) of MM
* emailed patches from Andrew Morton <akpm@linux-foundation.org>: (125 commits)
  thp: fix comments of __pmd_trans_huge_lock()
  cgroup: remove unnecessary 0 check from css_from_id()
  cgroup: fix idr leak for the first cgroup root
  mm: memcontrol: fix documentation for compound parameter
  mm: memcontrol: remove BUG_ON in uncharge_list
  mm: fix build warnings in <linux/compaction.h>
  mm, thp: convert from optimistic swapin collapsing to conservative
  mm, thp: fix comment inconsistency for swapin readahead functions
  thp: update Documentation/{vm/transhuge,filesystems/proc}.txt
  shmem: split huge pages beyond i_size under memory pressure
  thp: introduce CONFIG_TRANSPARENT_HUGE_PAGECACHE
  khugepaged: add support of collapse for tmpfs/shmem pages
  shmem: make shmem_inode_info::lock irq-safe
  khugepaged: move up_read(mmap_sem) out of khugepaged_alloc_page()
  thp: extract khugepaged from mm/huge_memory.c
  shmem, thp: respect MADV_{NO,}HUGEPAGE for file mappings
  shmem: add huge pages support
  shmem: get_unmapped_area align huge page
  shmem: prepare huge= mount option and sysfs knob
  mm, rmap: account shmem thp pages
  ...
Diffstat (limited to 'fs/ocfs2')
| -rw-r--r-- | fs/ocfs2/cluster/tcp.c | 8 | ||||
| -rw-r--r-- | fs/ocfs2/dlm/dlmdebug.c | 26 | ||||
| -rw-r--r-- | fs/ocfs2/dlm/dlmdebug.h | 1 | ||||
| -rw-r--r-- | fs/ocfs2/dlmglue.c | 13 | ||||
| -rw-r--r-- | fs/ocfs2/inode.h | 7 | ||||
| -rw-r--r-- | fs/ocfs2/journal.c | 41 | ||||
| -rw-r--r-- | fs/ocfs2/stackglue.c | 2 | ||||
| -rw-r--r-- | fs/ocfs2/super.c | 1 | 
8 files changed, 26 insertions, 73 deletions
| diff --git a/fs/ocfs2/cluster/tcp.c b/fs/ocfs2/cluster/tcp.c index 4238eb28889f..1d67fcbf7160 100644 --- a/fs/ocfs2/cluster/tcp.c +++ b/fs/ocfs2/cluster/tcp.c @@ -1618,16 +1618,12 @@ static void o2net_start_connect(struct work_struct *work)  	/* watch for racing with tearing a node down */  	node = o2nm_get_node_by_num(o2net_num_from_nn(nn)); -	if (node == NULL) { -		ret = 0; +	if (node == NULL)  		goto out; -	}  	mynode = o2nm_get_node_by_num(o2nm_this_node()); -	if (mynode == NULL) { -		ret = 0; +	if (mynode == NULL)  		goto out; -	}  	spin_lock(&nn->nn_lock);  	/* diff --git a/fs/ocfs2/dlm/dlmdebug.c b/fs/ocfs2/dlm/dlmdebug.c index 825136070d2c..e7b760deefae 100644 --- a/fs/ocfs2/dlm/dlmdebug.c +++ b/fs/ocfs2/dlm/dlmdebug.c @@ -347,26 +347,6 @@ static struct dentry *dlm_debugfs_root;  #define DLM_DEBUGFS_PURGE_LIST			"purge_list"  /* begin - utils funcs */ -static void dlm_debug_free(struct kref *kref) -{ -	struct dlm_debug_ctxt *dc; - -	dc = container_of(kref, struct dlm_debug_ctxt, debug_refcnt); - -	kfree(dc); -} - -static void dlm_debug_put(struct dlm_debug_ctxt *dc) -{ -	if (dc) -		kref_put(&dc->debug_refcnt, dlm_debug_free); -} - -static void dlm_debug_get(struct dlm_debug_ctxt *dc) -{ -	kref_get(&dc->debug_refcnt); -} -  static int debug_release(struct inode *inode, struct file *file)  {  	free_page((unsigned long)file->private_data); @@ -932,11 +912,9 @@ int dlm_debug_init(struct dlm_ctxt *dlm)  		goto bail;  	} -	dlm_debug_get(dc);  	return 0;  bail: -	dlm_debug_shutdown(dlm);  	return -ENOMEM;  } @@ -949,7 +927,8 @@ void dlm_debug_shutdown(struct dlm_ctxt *dlm)  		debugfs_remove(dc->debug_mle_dentry);  		debugfs_remove(dc->debug_lockres_dentry);  		debugfs_remove(dc->debug_state_dentry); -		dlm_debug_put(dc); +		kfree(dc); +		dc = NULL;  	}  } @@ -969,7 +948,6 @@ int dlm_create_debugfs_subroot(struct dlm_ctxt *dlm)  		mlog_errno(-ENOMEM);  		goto bail;  	} -	kref_init(&dlm->dlm_debug_ctxt->debug_refcnt);  	return 0;  bail: diff --git a/fs/ocfs2/dlm/dlmdebug.h b/fs/ocfs2/dlm/dlmdebug.h index 1f27c4812d1a..5ced5482e7d3 100644 --- a/fs/ocfs2/dlm/dlmdebug.h +++ b/fs/ocfs2/dlm/dlmdebug.h @@ -30,7 +30,6 @@ void dlm_print_one_mle(struct dlm_master_list_entry *mle);  #ifdef CONFIG_DEBUG_FS  struct dlm_debug_ctxt { -	struct kref debug_refcnt;  	struct dentry *debug_state_dentry;  	struct dentry *debug_lockres_dentry;  	struct dentry *debug_mle_dentry; diff --git a/fs/ocfs2/dlmglue.c b/fs/ocfs2/dlmglue.c index 1eaa9100c889..83d576f6a287 100644 --- a/fs/ocfs2/dlmglue.c +++ b/fs/ocfs2/dlmglue.c @@ -1635,7 +1635,6 @@ int ocfs2_create_new_inode_locks(struct inode *inode)  	int ret;  	struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); -	BUG_ON(!inode);  	BUG_ON(!ocfs2_inode_is_new(inode));  	mlog(0, "Inode %llu\n", (unsigned long long)OCFS2_I(inode)->ip_blkno); @@ -1665,10 +1664,8 @@ int ocfs2_create_new_inode_locks(struct inode *inode)  	}  	ret = ocfs2_create_new_lock(osb, &OCFS2_I(inode)->ip_open_lockres, 0, 0); -	if (ret) { +	if (ret)  		mlog_errno(ret); -		goto bail; -	}  bail:  	return ret; @@ -1680,8 +1677,6 @@ int ocfs2_rw_lock(struct inode *inode, int write)  	struct ocfs2_lock_res *lockres;  	struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); -	BUG_ON(!inode); -  	mlog(0, "inode %llu take %s RW lock\n",  	     (unsigned long long)OCFS2_I(inode)->ip_blkno,  	     write ? "EXMODE" : "PRMODE"); @@ -1724,8 +1719,6 @@ int ocfs2_open_lock(struct inode *inode)  	struct ocfs2_lock_res *lockres;  	struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); -	BUG_ON(!inode); -  	mlog(0, "inode %llu take PRMODE open lock\n",  	     (unsigned long long)OCFS2_I(inode)->ip_blkno); @@ -1749,8 +1742,6 @@ int ocfs2_try_open_lock(struct inode *inode, int write)  	struct ocfs2_lock_res *lockres;  	struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); -	BUG_ON(!inode); -  	mlog(0, "inode %llu try to take %s open lock\n",  	     (unsigned long long)OCFS2_I(inode)->ip_blkno,  	     write ? "EXMODE" : "PRMODE"); @@ -2328,8 +2319,6 @@ int ocfs2_inode_lock_full_nested(struct inode *inode,  	struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);  	struct buffer_head *local_bh = NULL; -	BUG_ON(!inode); -  	mlog(0, "inode %llu, take %s META lock\n",  	     (unsigned long long)OCFS2_I(inode)->ip_blkno,  	     ex ? "EXMODE" : "PRMODE"); diff --git a/fs/ocfs2/inode.h b/fs/ocfs2/inode.h index d8f3fc8d2551..50cc55047443 100644 --- a/fs/ocfs2/inode.h +++ b/fs/ocfs2/inode.h @@ -145,22 +145,15 @@ int ocfs2_drop_inode(struct inode *inode);  struct inode *ocfs2_ilookup(struct super_block *sb, u64 feoff);  struct inode *ocfs2_iget(struct ocfs2_super *osb, u64 feoff, unsigned flags,  			 int sysfile_type); -int ocfs2_inode_init_private(struct inode *inode);  int ocfs2_inode_revalidate(struct dentry *dentry);  void ocfs2_populate_inode(struct inode *inode, struct ocfs2_dinode *fe,  			  int create_ino); -void ocfs2_read_inode(struct inode *inode); -void ocfs2_read_inode2(struct inode *inode, void *opaque); -ssize_t ocfs2_rw_direct(int rw, struct file *filp, char *buf, -			size_t size, loff_t *offp);  void ocfs2_sync_blockdev(struct super_block *sb);  void ocfs2_refresh_inode(struct inode *inode,  			 struct ocfs2_dinode *fe);  int ocfs2_mark_inode_dirty(handle_t *handle,  			   struct inode *inode,  			   struct buffer_head *bh); -struct buffer_head *ocfs2_bread(struct inode *inode, -				int block, int *err, int reada);  void ocfs2_set_inode_flags(struct inode *inode);  void ocfs2_get_inode_flags(struct ocfs2_inode_info *oi); diff --git a/fs/ocfs2/journal.c b/fs/ocfs2/journal.c index e607419cdfa4..a244f14c6b87 100644 --- a/fs/ocfs2/journal.c +++ b/fs/ocfs2/journal.c @@ -1159,10 +1159,8 @@ static int ocfs2_force_read_journal(struct inode *inode)  	int status = 0;  	int i;  	u64 v_blkno, p_blkno, p_blocks, num_blocks; -#define CONCURRENT_JOURNAL_FILL 32ULL -	struct buffer_head *bhs[CONCURRENT_JOURNAL_FILL]; - -	memset(bhs, 0, sizeof(struct buffer_head *) * CONCURRENT_JOURNAL_FILL); +	struct buffer_head *bh = NULL; +	struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);  	num_blocks = ocfs2_blocks_for_bytes(inode->i_sb, i_size_read(inode));  	v_blkno = 0; @@ -1174,29 +1172,32 @@ static int ocfs2_force_read_journal(struct inode *inode)  			goto bail;  		} -		if (p_blocks > CONCURRENT_JOURNAL_FILL) -			p_blocks = CONCURRENT_JOURNAL_FILL; - -		/* We are reading journal data which should not -		 * be put in the uptodate cache */ -		status = ocfs2_read_blocks_sync(OCFS2_SB(inode->i_sb), -						p_blkno, p_blocks, bhs); -		if (status < 0) { -			mlog_errno(status); -			goto bail; -		} +		for (i = 0; i < p_blocks; i++, p_blkno++) { +			bh = __find_get_block(osb->sb->s_bdev, p_blkno, +					osb->sb->s_blocksize); +			/* block not cached. */ +			if (!bh) +				continue; + +			brelse(bh); +			bh = NULL; +			/* We are reading journal data which should not +			 * be put in the uptodate cache. +			 */ +			status = ocfs2_read_blocks_sync(osb, p_blkno, 1, &bh); +			if (status < 0) { +				mlog_errno(status); +				goto bail; +			} -		for(i = 0; i < p_blocks; i++) { -			brelse(bhs[i]); -			bhs[i] = NULL; +			brelse(bh); +			bh = NULL;  		}  		v_blkno += p_blocks;  	}  bail: -	for(i = 0; i < CONCURRENT_JOURNAL_FILL; i++) -		brelse(bhs[i]);  	return status;  } diff --git a/fs/ocfs2/stackglue.c b/fs/ocfs2/stackglue.c index 13219ed73e1d..52c07346bea3 100644 --- a/fs/ocfs2/stackglue.c +++ b/fs/ocfs2/stackglue.c @@ -735,8 +735,6 @@ static void __exit ocfs2_stack_glue_exit(void)  {  	memset(&locking_max_version, 0,  	       sizeof(struct ocfs2_protocol_version)); -	locking_max_version.pv_major = 0; -	locking_max_version.pv_minor = 0;  	ocfs2_sysfs_exit();  	if (ocfs2_table_header)  		unregister_sysctl_table(ocfs2_table_header); diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c index 3971146228d3..603b28d6f008 100644 --- a/fs/ocfs2/super.c +++ b/fs/ocfs2/super.c @@ -2072,7 +2072,6 @@ static int ocfs2_initialize_super(struct super_block *sb,  	osb->osb_dx_seed[3] = le32_to_cpu(di->id2.i_super.s_uuid_hash);  	osb->sb = sb; -	/* Save off for ocfs2_rw_direct */  	osb->s_sectsize_bits = blksize_bits(sector_size);  	BUG_ON(!osb->s_sectsize_bits); |