diff options
| author | Stephen Boyd <sboyd@codeaurora.org> | 2015-10-02 11:15:13 -0700 | 
|---|---|---|
| committer | Stephen Boyd <sboyd@codeaurora.org> | 2015-10-02 11:22:23 -0700 | 
| commit | 9f30a04d768f64280dc0c40b730746e82f298d88 (patch) | |
| tree | e112853eb73627ed7b9a2ef8e4feab6685a0200e /fs/nfs/write.c | |
| parent | 9e294bf88a583825a413df408b9fe9e658fb93ac (diff) | |
| parent | 7aba4f5201d1b7b3ddb0b03883d9edf69851ddad (diff) | |
Merge branch 'for-4.3-rc/ti-clk-fixes' of https://github.com/t-kristo/linux-pm into clk-fixes
Pull fixes from Tero Kristo:
"A few TI clock driver fixes to pull against 4.3-rc"
* 'for-4.3-rc/ti-clk-fixes' of https://github.com/t-kristo/linux-pm: (3 commits)
  clk: ti: dflt: fix enable_reg validity check
  clk: ti: fix dual-registration of uart4_ick
  clk: ti: clk-7xx: Remove hardwired ABE clock configuration
Diffstat (limited to 'fs/nfs/write.c')
| -rw-r--r-- | fs/nfs/write.c | 54 | 
1 files changed, 37 insertions, 17 deletions
| diff --git a/fs/nfs/write.c b/fs/nfs/write.c index 65869ca9c851..72624dc4a623 100644 --- a/fs/nfs/write.c +++ b/fs/nfs/write.c @@ -768,6 +768,28 @@ nfs_page_search_commits_for_head_request_locked(struct nfs_inode *nfsi,  }  /** + * nfs_request_add_commit_list_locked - add request to a commit list + * @req: pointer to a struct nfs_page + * @dst: commit list head + * @cinfo: holds list lock and accounting info + * + * This sets the PG_CLEAN bit, updates the cinfo count of + * number of outstanding requests requiring a commit as well as + * the MM page stats. + * + * The caller must hold the cinfo->lock, and the nfs_page lock. + */ +void +nfs_request_add_commit_list_locked(struct nfs_page *req, struct list_head *dst, +			    struct nfs_commit_info *cinfo) +{ +	set_bit(PG_CLEAN, &req->wb_flags); +	nfs_list_add_request(req, dst); +	cinfo->mds->ncommit++; +} +EXPORT_SYMBOL_GPL(nfs_request_add_commit_list_locked); + +/**   * nfs_request_add_commit_list - add request to a commit list   * @req: pointer to a struct nfs_page   * @dst: commit list head @@ -784,13 +806,10 @@ void  nfs_request_add_commit_list(struct nfs_page *req, struct list_head *dst,  			    struct nfs_commit_info *cinfo)  { -	set_bit(PG_CLEAN, &(req)->wb_flags);  	spin_lock(cinfo->lock); -	nfs_list_add_request(req, dst); -	cinfo->mds->ncommit++; +	nfs_request_add_commit_list_locked(req, dst, cinfo);  	spin_unlock(cinfo->lock); -	if (!cinfo->dreq) -		nfs_mark_page_unstable(req->wb_page); +	nfs_mark_page_unstable(req->wb_page, cinfo);  }  EXPORT_SYMBOL_GPL(nfs_request_add_commit_list); @@ -1332,6 +1351,9 @@ void nfs_pageio_reset_write_mds(struct nfs_pageio_descriptor *pgio)  {  	struct nfs_pgio_mirror *mirror; +	if (pgio->pg_ops && pgio->pg_ops->pg_cleanup) +		pgio->pg_ops->pg_cleanup(pgio); +  	pgio->pg_ops = &nfs_pgio_rw_ops;  	nfs_pageio_stop_mirroring(pgio); @@ -1379,24 +1401,27 @@ static void nfs_writeback_check_extend(struct nfs_pgio_header *hdr,  {  	struct nfs_pgio_args *argp = &hdr->args;  	struct nfs_pgio_res *resp = &hdr->res; +	u64 size = argp->offset + resp->count;  	if (!(fattr->valid & NFS_ATTR_FATTR_SIZE)) +		fattr->size = size; +	if (nfs_size_to_loff_t(fattr->size) < i_size_read(hdr->inode)) { +		fattr->valid &= ~NFS_ATTR_FATTR_SIZE;  		return; -	if (argp->offset + resp->count != fattr->size) -		return; -	if (nfs_size_to_loff_t(fattr->size) < i_size_read(hdr->inode)) +	} +	if (size != fattr->size)  		return;  	/* Set attribute barrier */  	nfs_fattr_set_barrier(fattr); +	/* ...and update size */ +	fattr->valid |= NFS_ATTR_FATTR_SIZE;  }  void nfs_writeback_update_inode(struct nfs_pgio_header *hdr)  { -	struct nfs_fattr *fattr = hdr->res.fattr; +	struct nfs_fattr *fattr = &hdr->fattr;  	struct inode *inode = hdr->inode; -	if (fattr == NULL) -		return;  	spin_lock(&inode->i_lock);  	nfs_writeback_check_extend(hdr, fattr);  	nfs_post_op_update_inode_force_wcc_locked(inode, fattr); @@ -1790,7 +1815,7 @@ out_mark_dirty:  	return res;  } -static int nfs_commit_unstable_pages(struct inode *inode, struct writeback_control *wbc) +int nfs_write_inode(struct inode *inode, struct writeback_control *wbc)  {  	struct nfs_inode *nfsi = NFS_I(inode);  	int flags = FLUSH_SYNC; @@ -1825,11 +1850,6 @@ out_mark_dirty:  	__mark_inode_dirty(inode, I_DIRTY_DATASYNC);  	return ret;  } - -int nfs_write_inode(struct inode *inode, struct writeback_control *wbc) -{ -	return nfs_commit_unstable_pages(inode, wbc); -}  EXPORT_SYMBOL_GPL(nfs_write_inode);  /* | 
