#!/usr/sbin/dtrace -s nfsv4:::spe-i-check_open { printf("%d (%d) from %s is checking %s", (uid_t)arg0, (gid_t)arg1, stringof(arg3), stringof(arg2)); } nfsv4:::spe-i-policy_eval { printf("Policy %d %s with error %d from %s", (uint_t)arg0, (boolean_t)arg1 ? "matched" : "did not match", (int)arg2, stringof(arg3)); } ::nfs41_spe_allocate:entry { self->addr = (struct netbuf *)arg2; self->stripe_count = (count4 *)arg4; self->unit_size = (uint32_t *)arg5; self->mds_sids = (mds_sid **)arg6; self->loaded_sids = 0; } ::nfs41_spe_allocate:return /args[1] == 0/ { printf("Policy has %d stripes and %u block size", *self->stripe_count, *self->unit_size); } ::nfs41_spe_allocate:return /args[1] != 0/ { printf("No matching policy"); } ::mds_ds_path_to_mds_sid:entry { self->ustring = (utf8string *)arg0; self->ss_name = stringof(self->ustring->utf8string_val); self->mds_sid = (struct mds_sid *)arg1; } ::mds_ds_path_to_mds_sid:return /args[1] == 0/ { ss_name = (char *)alloca(self->ustring->utf8string_len + 1); bcopy(self->ustring->utf8string_val, ss_name, self->ustring->utf8string_len); ss_name[self->ustring->utf8string_len + 1] = '\0'; printf("mds_sid[%d] = %s", self->loaded_sids++, stringof(ss_name)); } ::mds_ds_path_to_mds_sid:return /args[1] != 0/ { ss_name = (char *)alloca(self->ustring->utf8string_len + 1); bcopy(self->ustring->utf8string_val, ss_name, self->ustring->utf8string_len); ss_name[self->ustring->utf8string_len + 1] = '\0'; printf("ERROR - could not find a matching pgi for %s", stringof(ss_name)); }