pnfs/flexfiles: Add tracepoints for detecting pnfs fallback to MDS
Add tracepoints to allow debugging of the event chain leading to a pnfs fallback to doing I/O through the MDS. Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
This commit is contained in:
@@ -934,6 +934,10 @@ out_nolseg:
|
||||
if (pgio->pg_error < 0)
|
||||
return;
|
||||
out_mds:
|
||||
trace_pnfs_mds_fallback_pg_init_read(pgio->pg_inode,
|
||||
0, NFS4_MAX_UINT64, IOMODE_READ,
|
||||
NFS_I(pgio->pg_inode)->layout,
|
||||
pgio->pg_lseg);
|
||||
pnfs_put_lseg(pgio->pg_lseg);
|
||||
pgio->pg_lseg = NULL;
|
||||
nfs_pageio_reset_read_mds(pgio);
|
||||
@@ -1000,6 +1004,10 @@ retry:
|
||||
return;
|
||||
|
||||
out_mds:
|
||||
trace_pnfs_mds_fallback_pg_init_write(pgio->pg_inode,
|
||||
0, NFS4_MAX_UINT64, IOMODE_RW,
|
||||
NFS_I(pgio->pg_inode)->layout,
|
||||
pgio->pg_lseg);
|
||||
pnfs_put_lseg(pgio->pg_lseg);
|
||||
pgio->pg_lseg = NULL;
|
||||
nfs_pageio_reset_write_mds(pgio);
|
||||
@@ -1026,6 +1034,10 @@ ff_layout_pg_get_mirror_count_write(struct nfs_pageio_descriptor *pgio,
|
||||
if (pgio->pg_lseg)
|
||||
return FF_LAYOUT_MIRROR_COUNT(pgio->pg_lseg);
|
||||
|
||||
trace_pnfs_mds_fallback_pg_get_mirror_count(pgio->pg_inode,
|
||||
0, NFS4_MAX_UINT64, IOMODE_RW,
|
||||
NFS_I(pgio->pg_inode)->layout,
|
||||
pgio->pg_lseg);
|
||||
/* no lseg means that pnfs is not in use, so no mirroring here */
|
||||
nfs_pageio_reset_write_mds(pgio);
|
||||
out:
|
||||
@@ -1075,6 +1087,10 @@ static void ff_layout_reset_write(struct nfs_pgio_header *hdr, bool retry_pnfs)
|
||||
hdr->args.count,
|
||||
(unsigned long long)hdr->args.offset);
|
||||
|
||||
trace_pnfs_mds_fallback_write_done(hdr->inode,
|
||||
hdr->args.offset, hdr->args.count,
|
||||
IOMODE_RW, NFS_I(hdr->inode)->layout,
|
||||
hdr->lseg);
|
||||
task->tk_status = pnfs_write_done_resend_to_mds(hdr);
|
||||
}
|
||||
}
|
||||
@@ -1094,6 +1110,10 @@ static void ff_layout_reset_read(struct nfs_pgio_header *hdr)
|
||||
hdr->args.count,
|
||||
(unsigned long long)hdr->args.offset);
|
||||
|
||||
trace_pnfs_mds_fallback_read_done(hdr->inode,
|
||||
hdr->args.offset, hdr->args.count,
|
||||
IOMODE_READ, NFS_I(hdr->inode)->layout,
|
||||
hdr->lseg);
|
||||
task->tk_status = pnfs_read_done_resend_to_mds(hdr);
|
||||
}
|
||||
}
|
||||
@@ -1827,6 +1847,9 @@ ff_layout_read_pagelist(struct nfs_pgio_header *hdr)
|
||||
out_failed:
|
||||
if (ff_layout_avoid_mds_available_ds(lseg))
|
||||
return PNFS_TRY_AGAIN;
|
||||
trace_pnfs_mds_fallback_read_pagelist(hdr->inode,
|
||||
hdr->args.offset, hdr->args.count,
|
||||
IOMODE_READ, NFS_I(hdr->inode)->layout, lseg);
|
||||
return PNFS_NOT_ATTEMPTED;
|
||||
}
|
||||
|
||||
@@ -1892,6 +1915,9 @@ ff_layout_write_pagelist(struct nfs_pgio_header *hdr, int sync)
|
||||
out_failed:
|
||||
if (ff_layout_avoid_mds_available_ds(lseg))
|
||||
return PNFS_TRY_AGAIN;
|
||||
trace_pnfs_mds_fallback_write_pagelist(hdr->inode,
|
||||
hdr->args.offset, hdr->args.count,
|
||||
IOMODE_RW, NFS_I(hdr->inode)->layout, lseg);
|
||||
return PNFS_NOT_ATTEMPTED;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user