Commit 47f7c956 authored by Olga Kornievskaia's avatar Olga Kornievskaia Committed by Trond Myklebust
Browse files

pnfs/filelayout: add tracepoint to getdeviceinfo



While decoding filelayout getdeviceinfo received, print out the
information about the location of data servers (IPs).

Generic getdeviceinfo tracepoints prints the MDS's ip for the
dstaddr. In this patch, separate the MDS's address from the
DS's addresses.

Signed-off-by: default avatarOlga Kornievskaia <kolga@netapp.com>
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
parent bcac8bff
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@
#include "../internal.h"
#include "../nfs4session.h"
#include "filelayout.h"
#include "../nfs4trace.h"

#define NFSDBG_FACILITY		NFSDBG_PNFS_LD

@@ -172,6 +173,7 @@ nfs4_fl_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
		dsaddr->ds_list[i] = nfs4_pnfs_ds_add(&dsaddrs, gfp_flags);
		if (!dsaddr->ds_list[i])
			goto out_err_drain_dsaddrs;
		trace_fl_getdevinfo(server, &pdev->dev_id, dsaddr->ds_list[i]->ds_remotestr);

		/* If DS was already in cache, free ds addrs */
		while (!list_empty(&dsaddrs)) {
+2 −0
Original line number Diff line number Diff line
@@ -28,4 +28,6 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(pnfs_mds_fallback_write_pagelist);
EXPORT_TRACEPOINT_SYMBOL_GPL(ff_layout_read_error);
EXPORT_TRACEPOINT_SYMBOL_GPL(ff_layout_write_error);
EXPORT_TRACEPOINT_SYMBOL_GPL(ff_layout_commit_error);

EXPORT_TRACEPOINT_SYMBOL_GPL(fl_getdevinfo);
#endif
+28 −0
Original line number Diff line number Diff line
@@ -1991,6 +1991,34 @@ DECLARE_EVENT_CLASS(nfs4_deviceid_status,
DEFINE_PNFS_DEVICEID_STATUS(nfs4_getdeviceinfo);
DEFINE_PNFS_DEVICEID_STATUS(nfs4_find_deviceid);

TRACE_EVENT(fl_getdevinfo,
		TP_PROTO(
			const struct nfs_server *server,
			const struct nfs4_deviceid *deviceid,
			char *ds_remotestr
		),
		TP_ARGS(server, deviceid, ds_remotestr),

		TP_STRUCT__entry(
			__string(mds_addr, server->nfs_client->cl_hostname)
			__array(unsigned char, deviceid, NFS4_DEVICEID4_SIZE)
			__string(ds_ips, ds_remotestr)
		),

		TP_fast_assign(
			__assign_str(mds_addr, server->nfs_client->cl_hostname);
			__assign_str(ds_ips, ds_remotestr);
			memcpy(__entry->deviceid, deviceid->data,
			       NFS4_DEVICEID4_SIZE);
		),
		TP_printk(
			"deviceid=%s, mds_addr=%s, ds_ips=%s",
			__print_hex(__entry->deviceid, NFS4_DEVICEID4_SIZE),
			__get_str(mds_addr),
			__get_str(ds_ips)
		)
);

DECLARE_EVENT_CLASS(nfs4_flexfiles_io_event,
		TP_PROTO(
			const struct nfs_pgio_header *hdr