diff options
| author | 2014-11-19 21:32:12 +1100 | |
|---|---|---|
| committer | 2014-11-19 21:32:12 +1100 | |
| commit | b10778a00d40b3d9fdaaf5891e802794781ff71c (patch) | |
| tree | 6ba4cbac86eecedc3f30650e7f764ecf00c83898 /fs/nfs/objlayout | |
| parent | integrity: do zero padding of the key id (diff) | |
| parent | Linux 3.17 (diff) | |
| download | wireguard-linux-b10778a00d40b3d9fdaaf5891e802794781ff71c.tar.xz wireguard-linux-b10778a00d40b3d9fdaaf5891e802794781ff71c.zip  | |
Merge commit 'v3.17' into next
Diffstat (limited to 'fs/nfs/objlayout')
| -rw-r--r-- | fs/nfs/objlayout/objio_osd.c | 24 | ||||
| -rw-r--r-- | fs/nfs/objlayout/objlayout.c | 81 | ||||
| -rw-r--r-- | fs/nfs/objlayout/objlayout.h | 8 | 
3 files changed, 54 insertions, 59 deletions
diff --git a/fs/nfs/objlayout/objio_osd.c b/fs/nfs/objlayout/objio_osd.c index 611320753db2..ae05278b3761 100644 --- a/fs/nfs/objlayout/objio_osd.c +++ b/fs/nfs/objlayout/objio_osd.c @@ -439,22 +439,21 @@ static void _read_done(struct ore_io_state *ios, void *private)  	objlayout_read_done(&objios->oir, status, objios->sync);  } -int objio_read_pagelist(struct nfs_pgio_data *rdata) +int objio_read_pagelist(struct nfs_pgio_header *hdr)  { -	struct nfs_pgio_header *hdr = rdata->header;  	struct objio_state *objios;  	int ret;  	ret = objio_alloc_io_state(NFS_I(hdr->inode)->layout, true, -			hdr->lseg, rdata->args.pages, rdata->args.pgbase, -			rdata->args.offset, rdata->args.count, rdata, +			hdr->lseg, hdr->args.pages, hdr->args.pgbase, +			hdr->args.offset, hdr->args.count, hdr,  			GFP_KERNEL, &objios);  	if (unlikely(ret))  		return ret;  	objios->ios->done = _read_done;  	dprintk("%s: offset=0x%llx length=0x%x\n", __func__, -		rdata->args.offset, rdata->args.count); +		hdr->args.offset, hdr->args.count);  	ret = ore_read(objios->ios);  	if (unlikely(ret))  		objio_free_result(&objios->oir); @@ -487,11 +486,11 @@ static void _write_done(struct ore_io_state *ios, void *private)  static struct page *__r4w_get_page(void *priv, u64 offset, bool *uptodate)  {  	struct objio_state *objios = priv; -	struct nfs_pgio_data *wdata = objios->oir.rpcdata; -	struct address_space *mapping = wdata->header->inode->i_mapping; +	struct nfs_pgio_header *hdr = objios->oir.rpcdata; +	struct address_space *mapping = hdr->inode->i_mapping;  	pgoff_t index = offset / PAGE_SIZE;  	struct page *page; -	loff_t i_size = i_size_read(wdata->header->inode); +	loff_t i_size = i_size_read(hdr->inode);  	if (offset >= i_size) {  		*uptodate = true; @@ -531,15 +530,14 @@ static const struct _ore_r4w_op _r4w_op = {  	.put_page = &__r4w_put_page,  }; -int objio_write_pagelist(struct nfs_pgio_data *wdata, int how) +int objio_write_pagelist(struct nfs_pgio_header *hdr, int how)  { -	struct nfs_pgio_header *hdr = wdata->header;  	struct objio_state *objios;  	int ret;  	ret = objio_alloc_io_state(NFS_I(hdr->inode)->layout, false, -			hdr->lseg, wdata->args.pages, wdata->args.pgbase, -			wdata->args.offset, wdata->args.count, wdata, GFP_NOFS, +			hdr->lseg, hdr->args.pages, hdr->args.pgbase, +			hdr->args.offset, hdr->args.count, hdr, GFP_NOFS,  			&objios);  	if (unlikely(ret))  		return ret; @@ -551,7 +549,7 @@ int objio_write_pagelist(struct nfs_pgio_data *wdata, int how)  		objios->ios->done = _write_done;  	dprintk("%s: offset=0x%llx length=0x%x\n", __func__, -		wdata->args.offset, wdata->args.count); +		hdr->args.offset, hdr->args.count);  	ret = ore_write(objios->ios);  	if (unlikely(ret)) {  		objio_free_result(&objios->oir); diff --git a/fs/nfs/objlayout/objlayout.c b/fs/nfs/objlayout/objlayout.c index 765d3f54e986..697a16d11fac 100644 --- a/fs/nfs/objlayout/objlayout.c +++ b/fs/nfs/objlayout/objlayout.c @@ -229,36 +229,36 @@ objlayout_io_set_result(struct objlayout_io_res *oir, unsigned index,  static void _rpc_read_complete(struct work_struct *work)  {  	struct rpc_task *task; -	struct nfs_pgio_data *rdata; +	struct nfs_pgio_header *hdr;  	dprintk("%s enter\n", __func__);  	task = container_of(work, struct rpc_task, u.tk_work); -	rdata = container_of(task, struct nfs_pgio_data, task); +	hdr = container_of(task, struct nfs_pgio_header, task); -	pnfs_ld_read_done(rdata); +	pnfs_ld_read_done(hdr);  }  void  objlayout_read_done(struct objlayout_io_res *oir, ssize_t status, bool sync)  { -	struct nfs_pgio_data *rdata = oir->rpcdata; +	struct nfs_pgio_header *hdr = oir->rpcdata; -	oir->status = rdata->task.tk_status = status; +	oir->status = hdr->task.tk_status = status;  	if (status >= 0) -		rdata->res.count = status; +		hdr->res.count = status;  	else -		rdata->header->pnfs_error = status; +		hdr->pnfs_error = status;  	objlayout_iodone(oir);  	/* must not use oir after this point */  	dprintk("%s: Return status=%zd eof=%d sync=%d\n", __func__, -		status, rdata->res.eof, sync); +		status, hdr->res.eof, sync);  	if (sync) -		pnfs_ld_read_done(rdata); +		pnfs_ld_read_done(hdr);  	else { -		INIT_WORK(&rdata->task.u.tk_work, _rpc_read_complete); -		schedule_work(&rdata->task.u.tk_work); +		INIT_WORK(&hdr->task.u.tk_work, _rpc_read_complete); +		schedule_work(&hdr->task.u.tk_work);  	}  } @@ -266,12 +266,11 @@ objlayout_read_done(struct objlayout_io_res *oir, ssize_t status, bool sync)   * Perform sync or async reads.   */  enum pnfs_try_status -objlayout_read_pagelist(struct nfs_pgio_data *rdata) +objlayout_read_pagelist(struct nfs_pgio_header *hdr)  { -	struct nfs_pgio_header *hdr = rdata->header;  	struct inode *inode = hdr->inode; -	loff_t offset = rdata->args.offset; -	size_t count = rdata->args.count; +	loff_t offset = hdr->args.offset; +	size_t count = hdr->args.count;  	int err;  	loff_t eof; @@ -279,23 +278,23 @@ objlayout_read_pagelist(struct nfs_pgio_data *rdata)  	if (unlikely(offset + count > eof)) {  		if (offset >= eof) {  			err = 0; -			rdata->res.count = 0; -			rdata->res.eof = 1; +			hdr->res.count = 0; +			hdr->res.eof = 1;  			/*FIXME: do we need to call pnfs_ld_read_done() */  			goto out;  		}  		count = eof - offset;  	} -	rdata->res.eof = (offset + count) >= eof; -	_fix_verify_io_params(hdr->lseg, &rdata->args.pages, -			      &rdata->args.pgbase, -			      rdata->args.offset, rdata->args.count); +	hdr->res.eof = (offset + count) >= eof; +	_fix_verify_io_params(hdr->lseg, &hdr->args.pages, +			      &hdr->args.pgbase, +			      hdr->args.offset, hdr->args.count);  	dprintk("%s: inode(%lx) offset 0x%llx count 0x%Zx eof=%d\n", -		__func__, inode->i_ino, offset, count, rdata->res.eof); +		__func__, inode->i_ino, offset, count, hdr->res.eof); -	err = objio_read_pagelist(rdata); +	err = objio_read_pagelist(hdr);   out:  	if (unlikely(err)) {  		hdr->pnfs_error = err; @@ -312,38 +311,38 @@ objlayout_read_pagelist(struct nfs_pgio_data *rdata)  static void _rpc_write_complete(struct work_struct *work)  {  	struct rpc_task *task; -	struct nfs_pgio_data *wdata; +	struct nfs_pgio_header *hdr;  	dprintk("%s enter\n", __func__);  	task = container_of(work, struct rpc_task, u.tk_work); -	wdata = container_of(task, struct nfs_pgio_data, task); +	hdr = container_of(task, struct nfs_pgio_header, task); -	pnfs_ld_write_done(wdata); +	pnfs_ld_write_done(hdr);  }  void  objlayout_write_done(struct objlayout_io_res *oir, ssize_t status, bool sync)  { -	struct nfs_pgio_data *wdata = oir->rpcdata; +	struct nfs_pgio_header *hdr = oir->rpcdata; -	oir->status = wdata->task.tk_status = status; +	oir->status = hdr->task.tk_status = status;  	if (status >= 0) { -		wdata->res.count = status; -		wdata->verf.committed = oir->committed; +		hdr->res.count = status; +		hdr->verf.committed = oir->committed;  	} else { -		wdata->header->pnfs_error = status; +		hdr->pnfs_error = status;  	}  	objlayout_iodone(oir);  	/* must not use oir after this point */  	dprintk("%s: Return status %zd committed %d sync=%d\n", __func__, -		status, wdata->verf.committed, sync); +		status, hdr->verf.committed, sync);  	if (sync) -		pnfs_ld_write_done(wdata); +		pnfs_ld_write_done(hdr);  	else { -		INIT_WORK(&wdata->task.u.tk_work, _rpc_write_complete); -		schedule_work(&wdata->task.u.tk_work); +		INIT_WORK(&hdr->task.u.tk_work, _rpc_write_complete); +		schedule_work(&hdr->task.u.tk_work);  	}  } @@ -351,17 +350,15 @@ objlayout_write_done(struct objlayout_io_res *oir, ssize_t status, bool sync)   * Perform sync or async writes.   */  enum pnfs_try_status -objlayout_write_pagelist(struct nfs_pgio_data *wdata, -			 int how) +objlayout_write_pagelist(struct nfs_pgio_header *hdr, int how)  { -	struct nfs_pgio_header *hdr = wdata->header;  	int err; -	_fix_verify_io_params(hdr->lseg, &wdata->args.pages, -			      &wdata->args.pgbase, -			      wdata->args.offset, wdata->args.count); +	_fix_verify_io_params(hdr->lseg, &hdr->args.pages, +			      &hdr->args.pgbase, +			      hdr->args.offset, hdr->args.count); -	err = objio_write_pagelist(wdata, how); +	err = objio_write_pagelist(hdr, how);  	if (unlikely(err)) {  		hdr->pnfs_error = err;  		dprintk("%s: Returned Error %d\n", __func__, err); diff --git a/fs/nfs/objlayout/objlayout.h b/fs/nfs/objlayout/objlayout.h index 01e041029a6c..fd13f1d2f136 100644 --- a/fs/nfs/objlayout/objlayout.h +++ b/fs/nfs/objlayout/objlayout.h @@ -119,8 +119,8 @@ extern void objio_free_lseg(struct pnfs_layout_segment *lseg);   */  extern void objio_free_result(struct objlayout_io_res *oir); -extern int objio_read_pagelist(struct nfs_pgio_data *rdata); -extern int objio_write_pagelist(struct nfs_pgio_data *wdata, int how); +extern int objio_read_pagelist(struct nfs_pgio_header *rdata); +extern int objio_write_pagelist(struct nfs_pgio_header *wdata, int how);  /*   * callback API @@ -168,10 +168,10 @@ extern struct pnfs_layout_segment *objlayout_alloc_lseg(  extern void objlayout_free_lseg(struct pnfs_layout_segment *);  extern enum pnfs_try_status objlayout_read_pagelist( -	struct nfs_pgio_data *); +	struct nfs_pgio_header *);  extern enum pnfs_try_status objlayout_write_pagelist( -	struct nfs_pgio_data *, +	struct nfs_pgio_header *,  	int how);  extern void objlayout_encode_layoutcommit(  | 
