1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Copyright (c) 2014 Christoph Hellwig. 4 */ 5 #undef TRACE_SYSTEM 6 #define TRACE_SYSTEM nfsd 7 8 #if !defined(_NFSD_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) 9 #define _NFSD_TRACE_H 10 11 #include <linux/tracepoint.h> 12 13 #include "export.h" 14 #include "nfsfh.h" 15 16 #define NFSD_TRACE_PROC_ARG_FIELDS \ 17 __field(unsigned int, netns_ino) \ 18 __field(u32, xid) \ 19 __array(unsigned char, server, sizeof(struct sockaddr_in6)) \ 20 __array(unsigned char, client, sizeof(struct sockaddr_in6)) 21 22 #define NFSD_TRACE_PROC_ARG_ASSIGNMENTS \ 23 do { \ 24 __entry->netns_ino = SVC_NET(rqstp)->ns.inum; \ 25 __entry->xid = be32_to_cpu(rqstp->rq_xid); \ 26 memcpy(__entry->server, &rqstp->rq_xprt->xpt_local, \ 27 rqstp->rq_xprt->xpt_locallen); \ 28 memcpy(__entry->client, &rqstp->rq_xprt->xpt_remote, \ 29 rqstp->rq_xprt->xpt_remotelen); \ 30 } while (0); 31 32 #define NFSD_TRACE_PROC_RES_FIELDS \ 33 __field(unsigned int, netns_ino) \ 34 __field(u32, xid) \ 35 __field(unsigned long, status) \ 36 __array(unsigned char, server, sizeof(struct sockaddr_in6)) \ 37 __array(unsigned char, client, sizeof(struct sockaddr_in6)) 38 39 #define NFSD_TRACE_PROC_RES_ASSIGNMENTS(error) \ 40 do { \ 41 __entry->netns_ino = SVC_NET(rqstp)->ns.inum; \ 42 __entry->xid = be32_to_cpu(rqstp->rq_xid); \ 43 __entry->status = be32_to_cpu(error); \ 44 memcpy(__entry->server, &rqstp->rq_xprt->xpt_local, \ 45 rqstp->rq_xprt->xpt_locallen); \ 46 memcpy(__entry->client, &rqstp->rq_xprt->xpt_remote, \ 47 rqstp->rq_xprt->xpt_remotelen); \ 48 } while (0); 49 50 DECLARE_EVENT_CLASS(nfsd_xdr_err_class, 51 TP_PROTO( 52 const struct svc_rqst *rqstp 53 ), 54 TP_ARGS(rqstp), 55 TP_STRUCT__entry( 56 NFSD_TRACE_PROC_ARG_FIELDS 57 58 __field(u32, vers) 59 __field(u32, proc) 60 ), 61 TP_fast_assign( 62 NFSD_TRACE_PROC_ARG_ASSIGNMENTS 63 64 __entry->vers = rqstp->rq_vers; 65 __entry->proc = rqstp->rq_proc; 66 ), 67 TP_printk("xid=0x%08x vers=%u proc=%u", 68 __entry->xid, __entry->vers, __entry->proc 69 ) 70 ); 71 72 #define DEFINE_NFSD_XDR_ERR_EVENT(name) \ 73 DEFINE_EVENT(nfsd_xdr_err_class, nfsd_##name##_err, \ 74 TP_PROTO(const struct svc_rqst *rqstp), \ 75 TP_ARGS(rqstp)) 76 77 DEFINE_NFSD_XDR_ERR_EVENT(garbage_args); 78 DEFINE_NFSD_XDR_ERR_EVENT(cant_encode); 79 80 #define show_nfsd_may_flags(x) \ 81 __print_flags(x, "|", \ 82 { NFSD_MAY_EXEC, "EXEC" }, \ 83 { NFSD_MAY_WRITE, "WRITE" }, \ 84 { NFSD_MAY_READ, "READ" }, \ 85 { NFSD_MAY_SATTR, "SATTR" }, \ 86 { NFSD_MAY_TRUNC, "TRUNC" }, \ 87 { NFSD_MAY_LOCK, "LOCK" }, \ 88 { NFSD_MAY_OWNER_OVERRIDE, "OWNER_OVERRIDE" }, \ 89 { NFSD_MAY_LOCAL_ACCESS, "LOCAL_ACCESS" }, \ 90 { NFSD_MAY_BYPASS_GSS_ON_ROOT, "BYPASS_GSS_ON_ROOT" }, \ 91 { NFSD_MAY_NOT_BREAK_LEASE, "NOT_BREAK_LEASE" }, \ 92 { NFSD_MAY_BYPASS_GSS, "BYPASS_GSS" }, \ 93 { NFSD_MAY_READ_IF_EXEC, "READ_IF_EXEC" }, \ 94 { NFSD_MAY_64BIT_COOKIE, "64BIT_COOKIE" }) 95 96 TRACE_EVENT(nfsd_compound, 97 TP_PROTO(const struct svc_rqst *rqst, 98 u32 args_opcnt), 99 TP_ARGS(rqst, args_opcnt), 100 TP_STRUCT__entry( 101 __field(u32, xid) 102 __field(u32, args_opcnt) 103 ), 104 TP_fast_assign( 105 __entry->xid = be32_to_cpu(rqst->rq_xid); 106 __entry->args_opcnt = args_opcnt; 107 ), 108 TP_printk("xid=0x%08x opcnt=%u", 109 __entry->xid, __entry->args_opcnt) 110 ) 111 112 TRACE_EVENT(nfsd_compound_status, 113 TP_PROTO(u32 args_opcnt, 114 u32 resp_opcnt, 115 __be32 status, 116 const char *name), 117 TP_ARGS(args_opcnt, resp_opcnt, status, name), 118 TP_STRUCT__entry( 119 __field(u32, args_opcnt) 120 __field(u32, resp_opcnt) 121 __field(int, status) 122 __string(name, name) 123 ), 124 TP_fast_assign( 125 __entry->args_opcnt = args_opcnt; 126 __entry->resp_opcnt = resp_opcnt; 127 __entry->status = be32_to_cpu(status); 128 __assign_str(name, name); 129 ), 130 TP_printk("op=%u/%u %s status=%d", 131 __entry->resp_opcnt, __entry->args_opcnt, 132 __get_str(name), __entry->status) 133 ) 134 135 TRACE_EVENT(nfsd_compound_decode_err, 136 TP_PROTO( 137 const struct svc_rqst *rqstp, 138 u32 args_opcnt, 139 u32 resp_opcnt, 140 u32 opnum, 141 __be32 status 142 ), 143 TP_ARGS(rqstp, args_opcnt, resp_opcnt, opnum, status), 144 TP_STRUCT__entry( 145 NFSD_TRACE_PROC_RES_FIELDS 146 147 __field(u32, args_opcnt) 148 __field(u32, resp_opcnt) 149 __field(u32, opnum) 150 ), 151 TP_fast_assign( 152 NFSD_TRACE_PROC_RES_ASSIGNMENTS(status) 153 154 __entry->args_opcnt = args_opcnt; 155 __entry->resp_opcnt = resp_opcnt; 156 __entry->opnum = opnum; 157 ), 158 TP_printk("op=%u/%u opnum=%u status=%lu", 159 __entry->resp_opcnt, __entry->args_opcnt, 160 __entry->opnum, __entry->status) 161 ); 162 163 TRACE_EVENT(nfsd_compound_encode_err, 164 TP_PROTO( 165 const struct svc_rqst *rqstp, 166 u32 opnum, 167 __be32 status 168 ), 169 TP_ARGS(rqstp, opnum, status), 170 TP_STRUCT__entry( 171 NFSD_TRACE_PROC_RES_FIELDS 172 173 __field(u32, opnum) 174 ), 175 TP_fast_assign( 176 NFSD_TRACE_PROC_RES_ASSIGNMENTS(status) 177 178 __entry->opnum = opnum; 179 ), 180 TP_printk("opnum=%u status=%lu", 181 __entry->opnum, __entry->status) 182 ); 183 184 185 DECLARE_EVENT_CLASS(nfsd_fh_err_class, 186 TP_PROTO(struct svc_rqst *rqstp, 187 struct svc_fh *fhp, 188 int status), 189 TP_ARGS(rqstp, fhp, status), 190 TP_STRUCT__entry( 191 __field(u32, xid) 192 __field(u32, fh_hash) 193 __field(int, status) 194 ), 195 TP_fast_assign( 196 __entry->xid = be32_to_cpu(rqstp->rq_xid); 197 __entry->fh_hash = knfsd_fh_hash(&fhp->fh_handle); 198 __entry->status = status; 199 ), 200 TP_printk("xid=0x%08x fh_hash=0x%08x status=%d", 201 __entry->xid, __entry->fh_hash, 202 __entry->status) 203 ) 204 205 #define DEFINE_NFSD_FH_ERR_EVENT(name) \ 206 DEFINE_EVENT(nfsd_fh_err_class, nfsd_##name, \ 207 TP_PROTO(struct svc_rqst *rqstp, \ 208 struct svc_fh *fhp, \ 209 int status), \ 210 TP_ARGS(rqstp, fhp, status)) 211 212 DEFINE_NFSD_FH_ERR_EVENT(set_fh_dentry_badexport); 213 DEFINE_NFSD_FH_ERR_EVENT(set_fh_dentry_badhandle); 214 215 TRACE_EVENT(nfsd_exp_find_key, 216 TP_PROTO(const struct svc_expkey *key, 217 int status), 218 TP_ARGS(key, status), 219 TP_STRUCT__entry( 220 __field(int, fsidtype) 221 __array(u32, fsid, 6) 222 __string(auth_domain, key->ek_client->name) 223 __field(int, status) 224 ), 225 TP_fast_assign( 226 __entry->fsidtype = key->ek_fsidtype; 227 memcpy(__entry->fsid, key->ek_fsid, 4*6); 228 __assign_str(auth_domain, key->ek_client->name); 229 __entry->status = status; 230 ), 231 TP_printk("fsid=%x::%s domain=%s status=%d", 232 __entry->fsidtype, 233 __print_array(__entry->fsid, 6, 4), 234 __get_str(auth_domain), 235 __entry->status 236 ) 237 ); 238 239 TRACE_EVENT(nfsd_expkey_update, 240 TP_PROTO(const struct svc_expkey *key, const char *exp_path), 241 TP_ARGS(key, exp_path), 242 TP_STRUCT__entry( 243 __field(int, fsidtype) 244 __array(u32, fsid, 6) 245 __string(auth_domain, key->ek_client->name) 246 __string(path, exp_path) 247 __field(bool, cache) 248 ), 249 TP_fast_assign( 250 __entry->fsidtype = key->ek_fsidtype; 251 memcpy(__entry->fsid, key->ek_fsid, 4*6); 252 __assign_str(auth_domain, key->ek_client->name); 253 __assign_str(path, exp_path); 254 __entry->cache = !test_bit(CACHE_NEGATIVE, &key->h.flags); 255 ), 256 TP_printk("fsid=%x::%s domain=%s path=%s cache=%s", 257 __entry->fsidtype, 258 __print_array(__entry->fsid, 6, 4), 259 __get_str(auth_domain), 260 __get_str(path), 261 __entry->cache ? "pos" : "neg" 262 ) 263 ); 264 265 TRACE_EVENT(nfsd_exp_get_by_name, 266 TP_PROTO(const struct svc_export *key, 267 int status), 268 TP_ARGS(key, status), 269 TP_STRUCT__entry( 270 __string(path, key->ex_path.dentry->d_name.name) 271 __string(auth_domain, key->ex_client->name) 272 __field(int, status) 273 ), 274 TP_fast_assign( 275 __assign_str(path, key->ex_path.dentry->d_name.name); 276 __assign_str(auth_domain, key->ex_client->name); 277 __entry->status = status; 278 ), 279 TP_printk("path=%s domain=%s status=%d", 280 __get_str(path), 281 __get_str(auth_domain), 282 __entry->status 283 ) 284 ); 285 286 TRACE_EVENT(nfsd_export_update, 287 TP_PROTO(const struct svc_export *key), 288 TP_ARGS(key), 289 TP_STRUCT__entry( 290 __string(path, key->ex_path.dentry->d_name.name) 291 __string(auth_domain, key->ex_client->name) 292 __field(bool, cache) 293 ), 294 TP_fast_assign( 295 __assign_str(path, key->ex_path.dentry->d_name.name); 296 __assign_str(auth_domain, key->ex_client->name); 297 __entry->cache = !test_bit(CACHE_NEGATIVE, &key->h.flags); 298 ), 299 TP_printk("path=%s domain=%s cache=%s", 300 __get_str(path), 301 __get_str(auth_domain), 302 __entry->cache ? "pos" : "neg" 303 ) 304 ); 305 306 DECLARE_EVENT_CLASS(nfsd_io_class, 307 TP_PROTO(struct svc_rqst *rqstp, 308 struct svc_fh *fhp, 309 loff_t offset, 310 unsigned long len), 311 TP_ARGS(rqstp, fhp, offset, len), 312 TP_STRUCT__entry( 313 __field(u32, xid) 314 __field(u32, fh_hash) 315 __field(loff_t, offset) 316 __field(unsigned long, len) 317 ), 318 TP_fast_assign( 319 __entry->xid = be32_to_cpu(rqstp->rq_xid); 320 __entry->fh_hash = knfsd_fh_hash(&fhp->fh_handle); 321 __entry->offset = offset; 322 __entry->len = len; 323 ), 324 TP_printk("xid=0x%08x fh_hash=0x%08x offset=%lld len=%lu", 325 __entry->xid, __entry->fh_hash, 326 __entry->offset, __entry->len) 327 ) 328 329 #define DEFINE_NFSD_IO_EVENT(name) \ 330 DEFINE_EVENT(nfsd_io_class, nfsd_##name, \ 331 TP_PROTO(struct svc_rqst *rqstp, \ 332 struct svc_fh *fhp, \ 333 loff_t offset, \ 334 unsigned long len), \ 335 TP_ARGS(rqstp, fhp, offset, len)) 336 337 DEFINE_NFSD_IO_EVENT(read_start); 338 DEFINE_NFSD_IO_EVENT(read_splice); 339 DEFINE_NFSD_IO_EVENT(read_vector); 340 DEFINE_NFSD_IO_EVENT(read_io_done); 341 DEFINE_NFSD_IO_EVENT(read_done); 342 DEFINE_NFSD_IO_EVENT(write_start); 343 DEFINE_NFSD_IO_EVENT(write_opened); 344 DEFINE_NFSD_IO_EVENT(write_io_done); 345 DEFINE_NFSD_IO_EVENT(write_done); 346 347 DECLARE_EVENT_CLASS(nfsd_err_class, 348 TP_PROTO(struct svc_rqst *rqstp, 349 struct svc_fh *fhp, 350 loff_t offset, 351 int status), 352 TP_ARGS(rqstp, fhp, offset, status), 353 TP_STRUCT__entry( 354 __field(u32, xid) 355 __field(u32, fh_hash) 356 __field(loff_t, offset) 357 __field(int, status) 358 ), 359 TP_fast_assign( 360 __entry->xid = be32_to_cpu(rqstp->rq_xid); 361 __entry->fh_hash = knfsd_fh_hash(&fhp->fh_handle); 362 __entry->offset = offset; 363 __entry->status = status; 364 ), 365 TP_printk("xid=0x%08x fh_hash=0x%08x offset=%lld status=%d", 366 __entry->xid, __entry->fh_hash, 367 __entry->offset, __entry->status) 368 ) 369 370 #define DEFINE_NFSD_ERR_EVENT(name) \ 371 DEFINE_EVENT(nfsd_err_class, nfsd_##name, \ 372 TP_PROTO(struct svc_rqst *rqstp, \ 373 struct svc_fh *fhp, \ 374 loff_t offset, \ 375 int len), \ 376 TP_ARGS(rqstp, fhp, offset, len)) 377 378 DEFINE_NFSD_ERR_EVENT(read_err); 379 DEFINE_NFSD_ERR_EVENT(write_err); 380 381 TRACE_EVENT(nfsd_dirent, 382 TP_PROTO(struct svc_fh *fhp, 383 u64 ino, 384 const char *name, 385 int namlen), 386 TP_ARGS(fhp, ino, name, namlen), 387 TP_STRUCT__entry( 388 __field(u32, fh_hash) 389 __field(u64, ino) 390 __string_len(name, name, namlen) 391 ), 392 TP_fast_assign( 393 __entry->fh_hash = fhp ? knfsd_fh_hash(&fhp->fh_handle) : 0; 394 __entry->ino = ino; 395 __assign_str_len(name, name, namlen) 396 ), 397 TP_printk("fh_hash=0x%08x ino=%llu name=%s", 398 __entry->fh_hash, __entry->ino, __get_str(name) 399 ) 400 ) 401 402 DECLARE_EVENT_CLASS(nfsd_copy_err_class, 403 TP_PROTO(struct svc_rqst *rqstp, 404 struct svc_fh *src_fhp, 405 loff_t src_offset, 406 struct svc_fh *dst_fhp, 407 loff_t dst_offset, 408 u64 count, 409 int status), 410 TP_ARGS(rqstp, src_fhp, src_offset, dst_fhp, dst_offset, count, status), 411 TP_STRUCT__entry( 412 __field(u32, xid) 413 __field(u32, src_fh_hash) 414 __field(loff_t, src_offset) 415 __field(u32, dst_fh_hash) 416 __field(loff_t, dst_offset) 417 __field(u64, count) 418 __field(int, status) 419 ), 420 TP_fast_assign( 421 __entry->xid = be32_to_cpu(rqstp->rq_xid); 422 __entry->src_fh_hash = knfsd_fh_hash(&src_fhp->fh_handle); 423 __entry->src_offset = src_offset; 424 __entry->dst_fh_hash = knfsd_fh_hash(&dst_fhp->fh_handle); 425 __entry->dst_offset = dst_offset; 426 __entry->count = count; 427 __entry->status = status; 428 ), 429 TP_printk("xid=0x%08x src_fh_hash=0x%08x src_offset=%lld " 430 "dst_fh_hash=0x%08x dst_offset=%lld " 431 "count=%llu status=%d", 432 __entry->xid, __entry->src_fh_hash, __entry->src_offset, 433 __entry->dst_fh_hash, __entry->dst_offset, 434 (unsigned long long)__entry->count, 435 __entry->status) 436 ) 437 438 #define DEFINE_NFSD_COPY_ERR_EVENT(name) \ 439 DEFINE_EVENT(nfsd_copy_err_class, nfsd_##name, \ 440 TP_PROTO(struct svc_rqst *rqstp, \ 441 struct svc_fh *src_fhp, \ 442 loff_t src_offset, \ 443 struct svc_fh *dst_fhp, \ 444 loff_t dst_offset, \ 445 u64 count, \ 446 int status), \ 447 TP_ARGS(rqstp, src_fhp, src_offset, dst_fhp, dst_offset, \ 448 count, status)) 449 450 DEFINE_NFSD_COPY_ERR_EVENT(clone_file_range_err); 451 452 #include "state.h" 453 #include "filecache.h" 454 #include "vfs.h" 455 456 DECLARE_EVENT_CLASS(nfsd_stateid_class, 457 TP_PROTO(stateid_t *stp), 458 TP_ARGS(stp), 459 TP_STRUCT__entry( 460 __field(u32, cl_boot) 461 __field(u32, cl_id) 462 __field(u32, si_id) 463 __field(u32, si_generation) 464 ), 465 TP_fast_assign( 466 __entry->cl_boot = stp->si_opaque.so_clid.cl_boot; 467 __entry->cl_id = stp->si_opaque.so_clid.cl_id; 468 __entry->si_id = stp->si_opaque.so_id; 469 __entry->si_generation = stp->si_generation; 470 ), 471 TP_printk("client %08x:%08x stateid %08x:%08x", 472 __entry->cl_boot, 473 __entry->cl_id, 474 __entry->si_id, 475 __entry->si_generation) 476 ) 477 478 #define DEFINE_STATEID_EVENT(name) \ 479 DEFINE_EVENT(nfsd_stateid_class, nfsd_##name, \ 480 TP_PROTO(stateid_t *stp), \ 481 TP_ARGS(stp)) 482 483 DEFINE_STATEID_EVENT(layoutstate_alloc); 484 DEFINE_STATEID_EVENT(layoutstate_unhash); 485 DEFINE_STATEID_EVENT(layoutstate_free); 486 DEFINE_STATEID_EVENT(layout_get_lookup_fail); 487 DEFINE_STATEID_EVENT(layout_commit_lookup_fail); 488 DEFINE_STATEID_EVENT(layout_return_lookup_fail); 489 DEFINE_STATEID_EVENT(layout_recall); 490 DEFINE_STATEID_EVENT(layout_recall_done); 491 DEFINE_STATEID_EVENT(layout_recall_fail); 492 DEFINE_STATEID_EVENT(layout_recall_release); 493 494 DEFINE_STATEID_EVENT(open); 495 DEFINE_STATEID_EVENT(deleg_read); 496 DEFINE_STATEID_EVENT(deleg_recall); 497 498 DECLARE_EVENT_CLASS(nfsd_stateseqid_class, 499 TP_PROTO(u32 seqid, const stateid_t *stp), 500 TP_ARGS(seqid, stp), 501 TP_STRUCT__entry( 502 __field(u32, seqid) 503 __field(u32, cl_boot) 504 __field(u32, cl_id) 505 __field(u32, si_id) 506 __field(u32, si_generation) 507 ), 508 TP_fast_assign( 509 __entry->seqid = seqid; 510 __entry->cl_boot = stp->si_opaque.so_clid.cl_boot; 511 __entry->cl_id = stp->si_opaque.so_clid.cl_id; 512 __entry->si_id = stp->si_opaque.so_id; 513 __entry->si_generation = stp->si_generation; 514 ), 515 TP_printk("seqid=%u client %08x:%08x stateid %08x:%08x", 516 __entry->seqid, __entry->cl_boot, __entry->cl_id, 517 __entry->si_id, __entry->si_generation) 518 ) 519 520 #define DEFINE_STATESEQID_EVENT(name) \ 521 DEFINE_EVENT(nfsd_stateseqid_class, nfsd_##name, \ 522 TP_PROTO(u32 seqid, const stateid_t *stp), \ 523 TP_ARGS(seqid, stp)) 524 525 DEFINE_STATESEQID_EVENT(preprocess); 526 DEFINE_STATESEQID_EVENT(open_confirm); 527 528 DECLARE_EVENT_CLASS(nfsd_clientid_class, 529 TP_PROTO(const clientid_t *clid), 530 TP_ARGS(clid), 531 TP_STRUCT__entry( 532 __field(u32, cl_boot) 533 __field(u32, cl_id) 534 ), 535 TP_fast_assign( 536 __entry->cl_boot = clid->cl_boot; 537 __entry->cl_id = clid->cl_id; 538 ), 539 TP_printk("client %08x:%08x", __entry->cl_boot, __entry->cl_id) 540 ) 541 542 #define DEFINE_CLIENTID_EVENT(name) \ 543 DEFINE_EVENT(nfsd_clientid_class, nfsd_clid_##name, \ 544 TP_PROTO(const clientid_t *clid), \ 545 TP_ARGS(clid)) 546 547 DEFINE_CLIENTID_EVENT(expire_unconf); 548 DEFINE_CLIENTID_EVENT(reclaim_complete); 549 DEFINE_CLIENTID_EVENT(confirmed); 550 DEFINE_CLIENTID_EVENT(destroyed); 551 DEFINE_CLIENTID_EVENT(admin_expired); 552 DEFINE_CLIENTID_EVENT(replaced); 553 DEFINE_CLIENTID_EVENT(purged); 554 DEFINE_CLIENTID_EVENT(renew); 555 DEFINE_CLIENTID_EVENT(stale); 556 557 DECLARE_EVENT_CLASS(nfsd_net_class, 558 TP_PROTO(const struct nfsd_net *nn), 559 TP_ARGS(nn), 560 TP_STRUCT__entry( 561 __field(unsigned long long, boot_time) 562 ), 563 TP_fast_assign( 564 __entry->boot_time = nn->boot_time; 565 ), 566 TP_printk("boot_time=%16llx", __entry->boot_time) 567 ) 568 569 #define DEFINE_NET_EVENT(name) \ 570 DEFINE_EVENT(nfsd_net_class, nfsd_##name, \ 571 TP_PROTO(const struct nfsd_net *nn), \ 572 TP_ARGS(nn)) 573 574 DEFINE_NET_EVENT(grace_start); 575 DEFINE_NET_EVENT(grace_complete); 576 577 TRACE_EVENT(nfsd_writeverf_reset, 578 TP_PROTO( 579 const struct nfsd_net *nn, 580 const struct svc_rqst *rqstp, 581 int error 582 ), 583 TP_ARGS(nn, rqstp, error), 584 TP_STRUCT__entry( 585 __field(unsigned long long, boot_time) 586 __field(u32, xid) 587 __field(int, error) 588 __array(unsigned char, verifier, NFS4_VERIFIER_SIZE) 589 ), 590 TP_fast_assign( 591 __entry->boot_time = nn->boot_time; 592 __entry->xid = be32_to_cpu(rqstp->rq_xid); 593 __entry->error = error; 594 595 /* avoid seqlock inside TP_fast_assign */ 596 memcpy(__entry->verifier, nn->writeverf, 597 NFS4_VERIFIER_SIZE); 598 ), 599 TP_printk("boot_time=%16llx xid=0x%08x error=%d new verifier=0x%s", 600 __entry->boot_time, __entry->xid, __entry->error, 601 __print_hex_str(__entry->verifier, NFS4_VERIFIER_SIZE) 602 ) 603 ); 604 605 TRACE_EVENT(nfsd_clid_cred_mismatch, 606 TP_PROTO( 607 const struct nfs4_client *clp, 608 const struct svc_rqst *rqstp 609 ), 610 TP_ARGS(clp, rqstp), 611 TP_STRUCT__entry( 612 __field(u32, cl_boot) 613 __field(u32, cl_id) 614 __field(unsigned long, cl_flavor) 615 __field(unsigned long, new_flavor) 616 __array(unsigned char, addr, sizeof(struct sockaddr_in6)) 617 ), 618 TP_fast_assign( 619 __entry->cl_boot = clp->cl_clientid.cl_boot; 620 __entry->cl_id = clp->cl_clientid.cl_id; 621 __entry->cl_flavor = clp->cl_cred.cr_flavor; 622 __entry->new_flavor = rqstp->rq_cred.cr_flavor; 623 memcpy(__entry->addr, &rqstp->rq_xprt->xpt_remote, 624 sizeof(struct sockaddr_in6)); 625 ), 626 TP_printk("client %08x:%08x flavor=%s, conflict=%s from addr=%pISpc", 627 __entry->cl_boot, __entry->cl_id, 628 show_nfsd_authflavor(__entry->cl_flavor), 629 show_nfsd_authflavor(__entry->new_flavor), __entry->addr 630 ) 631 ) 632 633 TRACE_EVENT(nfsd_clid_verf_mismatch, 634 TP_PROTO( 635 const struct nfs4_client *clp, 636 const struct svc_rqst *rqstp, 637 const nfs4_verifier *verf 638 ), 639 TP_ARGS(clp, rqstp, verf), 640 TP_STRUCT__entry( 641 __field(u32, cl_boot) 642 __field(u32, cl_id) 643 __array(unsigned char, cl_verifier, NFS4_VERIFIER_SIZE) 644 __array(unsigned char, new_verifier, NFS4_VERIFIER_SIZE) 645 __array(unsigned char, addr, sizeof(struct sockaddr_in6)) 646 ), 647 TP_fast_assign( 648 __entry->cl_boot = clp->cl_clientid.cl_boot; 649 __entry->cl_id = clp->cl_clientid.cl_id; 650 memcpy(__entry->cl_verifier, (void *)&clp->cl_verifier, 651 NFS4_VERIFIER_SIZE); 652 memcpy(__entry->new_verifier, (void *)verf, 653 NFS4_VERIFIER_SIZE); 654 memcpy(__entry->addr, &rqstp->rq_xprt->xpt_remote, 655 sizeof(struct sockaddr_in6)); 656 ), 657 TP_printk("client %08x:%08x verf=0x%s, updated=0x%s from addr=%pISpc", 658 __entry->cl_boot, __entry->cl_id, 659 __print_hex_str(__entry->cl_verifier, NFS4_VERIFIER_SIZE), 660 __print_hex_str(__entry->new_verifier, NFS4_VERIFIER_SIZE), 661 __entry->addr 662 ) 663 ); 664 665 DECLARE_EVENT_CLASS(nfsd_clid_class, 666 TP_PROTO(const struct nfs4_client *clp), 667 TP_ARGS(clp), 668 TP_STRUCT__entry( 669 __field(u32, cl_boot) 670 __field(u32, cl_id) 671 __array(unsigned char, addr, sizeof(struct sockaddr_in6)) 672 __field(unsigned long, flavor) 673 __array(unsigned char, verifier, NFS4_VERIFIER_SIZE) 674 __string_len(name, name, clp->cl_name.len) 675 ), 676 TP_fast_assign( 677 __entry->cl_boot = clp->cl_clientid.cl_boot; 678 __entry->cl_id = clp->cl_clientid.cl_id; 679 memcpy(__entry->addr, &clp->cl_addr, 680 sizeof(struct sockaddr_in6)); 681 __entry->flavor = clp->cl_cred.cr_flavor; 682 memcpy(__entry->verifier, (void *)&clp->cl_verifier, 683 NFS4_VERIFIER_SIZE); 684 __assign_str_len(name, clp->cl_name.data, clp->cl_name.len); 685 ), 686 TP_printk("addr=%pISpc name='%s' verifier=0x%s flavor=%s client=%08x:%08x", 687 __entry->addr, __get_str(name), 688 __print_hex_str(__entry->verifier, NFS4_VERIFIER_SIZE), 689 show_nfsd_authflavor(__entry->flavor), 690 __entry->cl_boot, __entry->cl_id) 691 ); 692 693 #define DEFINE_CLID_EVENT(name) \ 694 DEFINE_EVENT(nfsd_clid_class, nfsd_clid_##name, \ 695 TP_PROTO(const struct nfs4_client *clp), \ 696 TP_ARGS(clp)) 697 698 DEFINE_CLID_EVENT(fresh); 699 DEFINE_CLID_EVENT(confirmed_r); 700 701 /* 702 * from fs/nfsd/filecache.h 703 */ 704 TRACE_DEFINE_ENUM(NFSD_FILE_HASHED); 705 TRACE_DEFINE_ENUM(NFSD_FILE_PENDING); 706 TRACE_DEFINE_ENUM(NFSD_FILE_BREAK_READ); 707 TRACE_DEFINE_ENUM(NFSD_FILE_BREAK_WRITE); 708 TRACE_DEFINE_ENUM(NFSD_FILE_REFERENCED); 709 710 #define show_nf_flags(val) \ 711 __print_flags(val, "|", \ 712 { 1 << NFSD_FILE_HASHED, "HASHED" }, \ 713 { 1 << NFSD_FILE_PENDING, "PENDING" }, \ 714 { 1 << NFSD_FILE_BREAK_READ, "BREAK_READ" }, \ 715 { 1 << NFSD_FILE_BREAK_WRITE, "BREAK_WRITE" }, \ 716 { 1 << NFSD_FILE_REFERENCED, "REFERENCED"}) 717 718 DECLARE_EVENT_CLASS(nfsd_file_class, 719 TP_PROTO(struct nfsd_file *nf), 720 TP_ARGS(nf), 721 TP_STRUCT__entry( 722 __field(unsigned int, nf_hashval) 723 __field(void *, nf_inode) 724 __field(int, nf_ref) 725 __field(unsigned long, nf_flags) 726 __field(unsigned char, nf_may) 727 __field(struct file *, nf_file) 728 ), 729 TP_fast_assign( 730 __entry->nf_hashval = nf->nf_hashval; 731 __entry->nf_inode = nf->nf_inode; 732 __entry->nf_ref = refcount_read(&nf->nf_ref); 733 __entry->nf_flags = nf->nf_flags; 734 __entry->nf_may = nf->nf_may; 735 __entry->nf_file = nf->nf_file; 736 ), 737 TP_printk("hash=0x%x inode=%p ref=%d flags=%s may=%s file=%p", 738 __entry->nf_hashval, 739 __entry->nf_inode, 740 __entry->nf_ref, 741 show_nf_flags(__entry->nf_flags), 742 show_nfsd_may_flags(__entry->nf_may), 743 __entry->nf_file) 744 ) 745 746 #define DEFINE_NFSD_FILE_EVENT(name) \ 747 DEFINE_EVENT(nfsd_file_class, name, \ 748 TP_PROTO(struct nfsd_file *nf), \ 749 TP_ARGS(nf)) 750 751 DEFINE_NFSD_FILE_EVENT(nfsd_file_alloc); 752 DEFINE_NFSD_FILE_EVENT(nfsd_file_put_final); 753 DEFINE_NFSD_FILE_EVENT(nfsd_file_unhash); 754 DEFINE_NFSD_FILE_EVENT(nfsd_file_put); 755 DEFINE_NFSD_FILE_EVENT(nfsd_file_unhash_and_release_locked); 756 757 TRACE_EVENT(nfsd_file_acquire, 758 TP_PROTO(struct svc_rqst *rqstp, unsigned int hash, 759 struct inode *inode, unsigned int may_flags, 760 struct nfsd_file *nf, __be32 status), 761 762 TP_ARGS(rqstp, hash, inode, may_flags, nf, status), 763 764 TP_STRUCT__entry( 765 __field(u32, xid) 766 __field(unsigned int, hash) 767 __field(void *, inode) 768 __field(unsigned long, may_flags) 769 __field(int, nf_ref) 770 __field(unsigned long, nf_flags) 771 __field(unsigned long, nf_may) 772 __field(struct file *, nf_file) 773 __field(u32, status) 774 ), 775 776 TP_fast_assign( 777 __entry->xid = be32_to_cpu(rqstp->rq_xid); 778 __entry->hash = hash; 779 __entry->inode = inode; 780 __entry->may_flags = may_flags; 781 __entry->nf_ref = nf ? refcount_read(&nf->nf_ref) : 0; 782 __entry->nf_flags = nf ? nf->nf_flags : 0; 783 __entry->nf_may = nf ? nf->nf_may : 0; 784 __entry->nf_file = nf ? nf->nf_file : NULL; 785 __entry->status = be32_to_cpu(status); 786 ), 787 788 TP_printk("xid=0x%x hash=0x%x inode=%p may_flags=%s ref=%d nf_flags=%s nf_may=%s nf_file=%p status=%u", 789 __entry->xid, __entry->hash, __entry->inode, 790 show_nfsd_may_flags(__entry->may_flags), 791 __entry->nf_ref, show_nf_flags(__entry->nf_flags), 792 show_nfsd_may_flags(__entry->nf_may), 793 __entry->nf_file, __entry->status) 794 ); 795 796 DECLARE_EVENT_CLASS(nfsd_file_search_class, 797 TP_PROTO(struct inode *inode, unsigned int hash, int found), 798 TP_ARGS(inode, hash, found), 799 TP_STRUCT__entry( 800 __field(struct inode *, inode) 801 __field(unsigned int, hash) 802 __field(int, found) 803 ), 804 TP_fast_assign( 805 __entry->inode = inode; 806 __entry->hash = hash; 807 __entry->found = found; 808 ), 809 TP_printk("hash=0x%x inode=%p found=%d", __entry->hash, 810 __entry->inode, __entry->found) 811 ); 812 813 #define DEFINE_NFSD_FILE_SEARCH_EVENT(name) \ 814 DEFINE_EVENT(nfsd_file_search_class, name, \ 815 TP_PROTO(struct inode *inode, unsigned int hash, int found), \ 816 TP_ARGS(inode, hash, found)) 817 818 DEFINE_NFSD_FILE_SEARCH_EVENT(nfsd_file_close_inode_sync); 819 DEFINE_NFSD_FILE_SEARCH_EVENT(nfsd_file_close_inode); 820 DEFINE_NFSD_FILE_SEARCH_EVENT(nfsd_file_is_cached); 821 822 TRACE_EVENT(nfsd_file_fsnotify_handle_event, 823 TP_PROTO(struct inode *inode, u32 mask), 824 TP_ARGS(inode, mask), 825 TP_STRUCT__entry( 826 __field(struct inode *, inode) 827 __field(unsigned int, nlink) 828 __field(umode_t, mode) 829 __field(u32, mask) 830 ), 831 TP_fast_assign( 832 __entry->inode = inode; 833 __entry->nlink = inode->i_nlink; 834 __entry->mode = inode->i_mode; 835 __entry->mask = mask; 836 ), 837 TP_printk("inode=%p nlink=%u mode=0%ho mask=0x%x", __entry->inode, 838 __entry->nlink, __entry->mode, __entry->mask) 839 ); 840 841 #include "cache.h" 842 843 TRACE_DEFINE_ENUM(RC_DROPIT); 844 TRACE_DEFINE_ENUM(RC_REPLY); 845 TRACE_DEFINE_ENUM(RC_DOIT); 846 847 #define show_drc_retval(x) \ 848 __print_symbolic(x, \ 849 { RC_DROPIT, "DROPIT" }, \ 850 { RC_REPLY, "REPLY" }, \ 851 { RC_DOIT, "DOIT" }) 852 853 TRACE_EVENT(nfsd_drc_found, 854 TP_PROTO( 855 const struct nfsd_net *nn, 856 const struct svc_rqst *rqstp, 857 int result 858 ), 859 TP_ARGS(nn, rqstp, result), 860 TP_STRUCT__entry( 861 __field(unsigned long long, boot_time) 862 __field(unsigned long, result) 863 __field(u32, xid) 864 ), 865 TP_fast_assign( 866 __entry->boot_time = nn->boot_time; 867 __entry->result = result; 868 __entry->xid = be32_to_cpu(rqstp->rq_xid); 869 ), 870 TP_printk("boot_time=%16llx xid=0x%08x result=%s", 871 __entry->boot_time, __entry->xid, 872 show_drc_retval(__entry->result)) 873 874 ); 875 876 TRACE_EVENT(nfsd_drc_mismatch, 877 TP_PROTO( 878 const struct nfsd_net *nn, 879 const struct svc_cacherep *key, 880 const struct svc_cacherep *rp 881 ), 882 TP_ARGS(nn, key, rp), 883 TP_STRUCT__entry( 884 __field(unsigned long long, boot_time) 885 __field(u32, xid) 886 __field(u32, cached) 887 __field(u32, ingress) 888 ), 889 TP_fast_assign( 890 __entry->boot_time = nn->boot_time; 891 __entry->xid = be32_to_cpu(key->c_key.k_xid); 892 __entry->cached = (__force u32)key->c_key.k_csum; 893 __entry->ingress = (__force u32)rp->c_key.k_csum; 894 ), 895 TP_printk("boot_time=%16llx xid=0x%08x cached-csum=0x%08x ingress-csum=0x%08x", 896 __entry->boot_time, __entry->xid, __entry->cached, 897 __entry->ingress) 898 ); 899 900 TRACE_EVENT(nfsd_cb_args, 901 TP_PROTO( 902 const struct nfs4_client *clp, 903 const struct nfs4_cb_conn *conn 904 ), 905 TP_ARGS(clp, conn), 906 TP_STRUCT__entry( 907 __field(u32, cl_boot) 908 __field(u32, cl_id) 909 __field(u32, prog) 910 __field(u32, ident) 911 __array(unsigned char, addr, sizeof(struct sockaddr_in6)) 912 ), 913 TP_fast_assign( 914 __entry->cl_boot = clp->cl_clientid.cl_boot; 915 __entry->cl_id = clp->cl_clientid.cl_id; 916 __entry->prog = conn->cb_prog; 917 __entry->ident = conn->cb_ident; 918 memcpy(__entry->addr, &conn->cb_addr, 919 sizeof(struct sockaddr_in6)); 920 ), 921 TP_printk("addr=%pISpc client %08x:%08x prog=%u ident=%u", 922 __entry->addr, __entry->cl_boot, __entry->cl_id, 923 __entry->prog, __entry->ident) 924 ); 925 926 TRACE_EVENT(nfsd_cb_nodelegs, 927 TP_PROTO(const struct nfs4_client *clp), 928 TP_ARGS(clp), 929 TP_STRUCT__entry( 930 __field(u32, cl_boot) 931 __field(u32, cl_id) 932 ), 933 TP_fast_assign( 934 __entry->cl_boot = clp->cl_clientid.cl_boot; 935 __entry->cl_id = clp->cl_clientid.cl_id; 936 ), 937 TP_printk("client %08x:%08x", __entry->cl_boot, __entry->cl_id) 938 ) 939 940 #define show_cb_state(val) \ 941 __print_symbolic(val, \ 942 { NFSD4_CB_UP, "UP" }, \ 943 { NFSD4_CB_UNKNOWN, "UNKNOWN" }, \ 944 { NFSD4_CB_DOWN, "DOWN" }, \ 945 { NFSD4_CB_FAULT, "FAULT"}) 946 947 DECLARE_EVENT_CLASS(nfsd_cb_class, 948 TP_PROTO(const struct nfs4_client *clp), 949 TP_ARGS(clp), 950 TP_STRUCT__entry( 951 __field(unsigned long, state) 952 __field(u32, cl_boot) 953 __field(u32, cl_id) 954 __array(unsigned char, addr, sizeof(struct sockaddr_in6)) 955 ), 956 TP_fast_assign( 957 __entry->state = clp->cl_cb_state; 958 __entry->cl_boot = clp->cl_clientid.cl_boot; 959 __entry->cl_id = clp->cl_clientid.cl_id; 960 memcpy(__entry->addr, &clp->cl_cb_conn.cb_addr, 961 sizeof(struct sockaddr_in6)); 962 ), 963 TP_printk("addr=%pISpc client %08x:%08x state=%s", 964 __entry->addr, __entry->cl_boot, __entry->cl_id, 965 show_cb_state(__entry->state)) 966 ); 967 968 #define DEFINE_NFSD_CB_EVENT(name) \ 969 DEFINE_EVENT(nfsd_cb_class, nfsd_cb_##name, \ 970 TP_PROTO(const struct nfs4_client *clp), \ 971 TP_ARGS(clp)) 972 973 DEFINE_NFSD_CB_EVENT(state); 974 DEFINE_NFSD_CB_EVENT(probe); 975 DEFINE_NFSD_CB_EVENT(lost); 976 DEFINE_NFSD_CB_EVENT(shutdown); 977 978 TRACE_DEFINE_ENUM(RPC_AUTH_NULL); 979 TRACE_DEFINE_ENUM(RPC_AUTH_UNIX); 980 TRACE_DEFINE_ENUM(RPC_AUTH_GSS); 981 TRACE_DEFINE_ENUM(RPC_AUTH_GSS_KRB5); 982 TRACE_DEFINE_ENUM(RPC_AUTH_GSS_KRB5I); 983 TRACE_DEFINE_ENUM(RPC_AUTH_GSS_KRB5P); 984 985 #define show_nfsd_authflavor(val) \ 986 __print_symbolic(val, \ 987 { RPC_AUTH_NULL, "none" }, \ 988 { RPC_AUTH_UNIX, "sys" }, \ 989 { RPC_AUTH_GSS, "gss" }, \ 990 { RPC_AUTH_GSS_KRB5, "krb5" }, \ 991 { RPC_AUTH_GSS_KRB5I, "krb5i" }, \ 992 { RPC_AUTH_GSS_KRB5P, "krb5p" }) 993 994 TRACE_EVENT(nfsd_cb_setup, 995 TP_PROTO(const struct nfs4_client *clp, 996 const char *netid, 997 rpc_authflavor_t authflavor 998 ), 999 TP_ARGS(clp, netid, authflavor), 1000 TP_STRUCT__entry( 1001 __field(u32, cl_boot) 1002 __field(u32, cl_id) 1003 __field(unsigned long, authflavor) 1004 __array(unsigned char, addr, sizeof(struct sockaddr_in6)) 1005 __array(unsigned char, netid, 8) 1006 ), 1007 TP_fast_assign( 1008 __entry->cl_boot = clp->cl_clientid.cl_boot; 1009 __entry->cl_id = clp->cl_clientid.cl_id; 1010 strlcpy(__entry->netid, netid, sizeof(__entry->netid)); 1011 __entry->authflavor = authflavor; 1012 memcpy(__entry->addr, &clp->cl_cb_conn.cb_addr, 1013 sizeof(struct sockaddr_in6)); 1014 ), 1015 TP_printk("addr=%pISpc client %08x:%08x proto=%s flavor=%s", 1016 __entry->addr, __entry->cl_boot, __entry->cl_id, 1017 __entry->netid, show_nfsd_authflavor(__entry->authflavor)) 1018 ); 1019 1020 TRACE_EVENT(nfsd_cb_setup_err, 1021 TP_PROTO( 1022 const struct nfs4_client *clp, 1023 long error 1024 ), 1025 TP_ARGS(clp, error), 1026 TP_STRUCT__entry( 1027 __field(long, error) 1028 __field(u32, cl_boot) 1029 __field(u32, cl_id) 1030 __array(unsigned char, addr, sizeof(struct sockaddr_in6)) 1031 ), 1032 TP_fast_assign( 1033 __entry->error = error; 1034 __entry->cl_boot = clp->cl_clientid.cl_boot; 1035 __entry->cl_id = clp->cl_clientid.cl_id; 1036 memcpy(__entry->addr, &clp->cl_cb_conn.cb_addr, 1037 sizeof(struct sockaddr_in6)); 1038 ), 1039 TP_printk("addr=%pISpc client %08x:%08x error=%ld", 1040 __entry->addr, __entry->cl_boot, __entry->cl_id, __entry->error) 1041 ); 1042 1043 TRACE_EVENT(nfsd_cb_recall, 1044 TP_PROTO( 1045 const struct nfs4_stid *stid 1046 ), 1047 TP_ARGS(stid), 1048 TP_STRUCT__entry( 1049 __field(u32, cl_boot) 1050 __field(u32, cl_id) 1051 __field(u32, si_id) 1052 __field(u32, si_generation) 1053 __array(unsigned char, addr, sizeof(struct sockaddr_in6)) 1054 ), 1055 TP_fast_assign( 1056 const stateid_t *stp = &stid->sc_stateid; 1057 const struct nfs4_client *clp = stid->sc_client; 1058 1059 __entry->cl_boot = stp->si_opaque.so_clid.cl_boot; 1060 __entry->cl_id = stp->si_opaque.so_clid.cl_id; 1061 __entry->si_id = stp->si_opaque.so_id; 1062 __entry->si_generation = stp->si_generation; 1063 if (clp) 1064 memcpy(__entry->addr, &clp->cl_cb_conn.cb_addr, 1065 sizeof(struct sockaddr_in6)); 1066 else 1067 memset(__entry->addr, 0, sizeof(struct sockaddr_in6)); 1068 ), 1069 TP_printk("addr=%pISpc client %08x:%08x stateid %08x:%08x", 1070 __entry->addr, __entry->cl_boot, __entry->cl_id, 1071 __entry->si_id, __entry->si_generation) 1072 ); 1073 1074 TRACE_EVENT(nfsd_cb_notify_lock, 1075 TP_PROTO( 1076 const struct nfs4_lockowner *lo, 1077 const struct nfsd4_blocked_lock *nbl 1078 ), 1079 TP_ARGS(lo, nbl), 1080 TP_STRUCT__entry( 1081 __field(u32, cl_boot) 1082 __field(u32, cl_id) 1083 __field(u32, fh_hash) 1084 __array(unsigned char, addr, sizeof(struct sockaddr_in6)) 1085 ), 1086 TP_fast_assign( 1087 const struct nfs4_client *clp = lo->lo_owner.so_client; 1088 1089 __entry->cl_boot = clp->cl_clientid.cl_boot; 1090 __entry->cl_id = clp->cl_clientid.cl_id; 1091 __entry->fh_hash = knfsd_fh_hash(&nbl->nbl_fh); 1092 memcpy(__entry->addr, &clp->cl_cb_conn.cb_addr, 1093 sizeof(struct sockaddr_in6)); 1094 ), 1095 TP_printk("addr=%pISpc client %08x:%08x fh_hash=0x%08x", 1096 __entry->addr, __entry->cl_boot, __entry->cl_id, 1097 __entry->fh_hash) 1098 ); 1099 1100 TRACE_EVENT(nfsd_cb_offload, 1101 TP_PROTO( 1102 const struct nfs4_client *clp, 1103 const stateid_t *stp, 1104 const struct knfsd_fh *fh, 1105 u64 count, 1106 __be32 status 1107 ), 1108 TP_ARGS(clp, stp, fh, count, status), 1109 TP_STRUCT__entry( 1110 __field(u32, cl_boot) 1111 __field(u32, cl_id) 1112 __field(u32, si_id) 1113 __field(u32, si_generation) 1114 __field(u32, fh_hash) 1115 __field(int, status) 1116 __field(u64, count) 1117 __array(unsigned char, addr, sizeof(struct sockaddr_in6)) 1118 ), 1119 TP_fast_assign( 1120 __entry->cl_boot = stp->si_opaque.so_clid.cl_boot; 1121 __entry->cl_id = stp->si_opaque.so_clid.cl_id; 1122 __entry->si_id = stp->si_opaque.so_id; 1123 __entry->si_generation = stp->si_generation; 1124 __entry->fh_hash = knfsd_fh_hash(fh); 1125 __entry->status = be32_to_cpu(status); 1126 __entry->count = count; 1127 memcpy(__entry->addr, &clp->cl_cb_conn.cb_addr, 1128 sizeof(struct sockaddr_in6)); 1129 ), 1130 TP_printk("addr=%pISpc client %08x:%08x stateid %08x:%08x fh_hash=0x%08x count=%llu status=%d", 1131 __entry->addr, __entry->cl_boot, __entry->cl_id, 1132 __entry->si_id, __entry->si_generation, 1133 __entry->fh_hash, __entry->count, __entry->status) 1134 ); 1135 1136 #endif /* _NFSD_TRACE_H */ 1137 1138 #undef TRACE_INCLUDE_PATH 1139 #define TRACE_INCLUDE_PATH . 1140 #define TRACE_INCLUDE_FILE trace 1141 #include <trace/define_trace.h> 1142