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

Commit cb5d04bc authored by Peng Tao's avatar Peng Tao Committed by Tom Haynes
Browse files

nfs41: .init_read and .init_write can be called with valid pg_lseg



With pgio refactoring in v3.15, .init_read and .init_write can be
called with valid pgio->pg_lseg. file layout was fixed at that time
by commit c6194271 (pnfs: filelayout: support non page aligned
layouts). But the generic helper still needs to be fixed.

Cc: stable@vger.kernel.org # 3.15+
Signed-off-by: default avatarPeng Tao <tao.peng@primarydata.com>
parent 8f9cdcb2
Loading
Loading
Loading
Loading
+20 −21
Original line number Original line Diff line number Diff line
@@ -1711,8 +1711,7 @@ pnfs_generic_pg_init_read(struct nfs_pageio_descriptor *pgio, struct nfs_page *r
{
{
	u64 rd_size = req->wb_bytes;
	u64 rd_size = req->wb_bytes;


	WARN_ON_ONCE(pgio->pg_lseg != NULL);
	if (pgio->pg_lseg == NULL) {

		if (pgio->pg_dreq == NULL)
		if (pgio->pg_dreq == NULL)
			rd_size = i_size_read(pgio->pg_inode) - req_offset(req);
			rd_size = i_size_read(pgio->pg_inode) - req_offset(req);
		else
		else
@@ -1724,6 +1723,7 @@ pnfs_generic_pg_init_read(struct nfs_pageio_descriptor *pgio, struct nfs_page *r
						   rd_size,
						   rd_size,
						   IOMODE_READ,
						   IOMODE_READ,
						   GFP_KERNEL);
						   GFP_KERNEL);
	}
	/* If no lseg, fall back to read through mds */
	/* If no lseg, fall back to read through mds */
	if (pgio->pg_lseg == NULL)
	if (pgio->pg_lseg == NULL)
		nfs_pageio_reset_read_mds(pgio);
		nfs_pageio_reset_read_mds(pgio);
@@ -1735,8 +1735,7 @@ void
pnfs_generic_pg_init_write(struct nfs_pageio_descriptor *pgio,
pnfs_generic_pg_init_write(struct nfs_pageio_descriptor *pgio,
			   struct nfs_page *req, u64 wb_size)
			   struct nfs_page *req, u64 wb_size)
{
{
	WARN_ON_ONCE(pgio->pg_lseg != NULL);
	if (pgio->pg_lseg == NULL)

		pgio->pg_lseg = pnfs_update_layout(pgio->pg_inode,
		pgio->pg_lseg = pnfs_update_layout(pgio->pg_inode,
						   req->wb_context,
						   req->wb_context,
						   req_offset(req),
						   req_offset(req),