Lines Matching +full:write +full:- +full:0
4 # is available through the dbufs kstat and may be post-processed as
15 # or https://opensource.org/licenses/CDDL-1.0.
66 "pool": [15, -1, "pool name"],
67 "objset": [6, -1, "dataset identification number"],
68 "object": [10, -1, "object number"],
69 "level": [5, -1, "indirection level of buffer"],
70 "blkid": [8, -1, "block number of buffer"],
74 "meta": [4, -1, "is this buffer metadata?"],
75 "state": [5, -1, "state of buffer (read, cached, etc)"],
77 "dbc": [3, -1, "in dbuf cache"],
78 "list": [4, -1, "which ARC list contains this buffer"],
79 "atype": [7, -1, "ARC header type (data or metadata)"],
80 "flags": [9, -1, "ARC read flags"],
81 "count": [5, -1, "ARC data count"],
83 "access": [10, -1, "time this ARC buffer was last accessed"],
89 "l2_dattr": [8, -1, "L2ARC disk address/offset"],
91 "l2_comp": [21, -1, "L2ARC compression algorithm for buffer"],
93 "dtype": [27, -1, "dnode type"],
94 "btype": [27, -1, "bonus buffer type"],
98 "lvls": [6, -1, "number of indirection levels"],
112 cmd = ("Usage: dbufstat [-bdhnrtvx] [-i file] [-f fields] [-o file] "
113 "[-s string] [-F filter]\n")
114 raw = 0
119 # Requires py-sysctl on FreeBSD
123 dbufs = sysctl.filter("kstat.zfs.misc.dbufs")[0].value
125 return "-"
133 cnt = 0
135 if cnt == 0:
136 sys.stderr.write("\t")
138 sys.stderr.write(",\n\t")
139 cnt = 0
141 sys.stderr.write(", ")
143 sys.stderr.write("%s" % key)
146 sys.stderr.write("\n\n")
150 sys.stderr.write("%s\n" % cmd)
152 sys.stderr.write("Field definitions incompatible with '-b' option:\n")
155 sys.stderr.write("Field definitions incompatible with '-d' option:\n")
158 sys.stderr.write("Field definitions incompatible with '-t' option:\n")
161 sys.stderr.write("Field definitions are as follows:\n")
163 sys.stderr.write("%11s : %s\n" % (key, cols[key][2]))
164 sys.stderr.write("\n")
166 sys.exit(0)
170 sys.stderr.write("%s\n" % cmd)
171 sys.stderr.write("\t -b : Print table of information for each dbuf\n")
172 sys.stderr.write("\t -d : Print table of information for each dnode\n")
173 sys.stderr.write("\t -h : Print this help message\n")
174 sys.stderr.write("\t -n : Exclude header from output\n")
175 sys.stderr.write("\t -r : Print raw values\n")
176 sys.stderr.write("\t -t : Print table of information for each dnode type"
178 sys.stderr.write("\t -v : List all possible field headers and definitions"
180 sys.stderr.write("\t -x : Print extended stats\n")
181 sys.stderr.write("\t -i : Redirect input from the specified file\n")
182 sys.stderr.write("\t -f : Specify specific fields to print (see -v)\n")
183 sys.stderr.write("\t -o : Redirect output to the specified file\n")
184 sys.stderr.write("\t -s : Override default field separator with custom "
186 sys.stderr.write("\t -F : Filter output by value or regex\n")
187 sys.stderr.write("\nExamples:\n")
188 sys.stderr.write("\tdbufstat -d -o /tmp/d.log\n")
189 sys.stderr.write("\tdbufstat -t -s \",\" -o /tmp/t.log\n")
190 sys.stderr.write("\tdbufstat -v\n")
191 sys.stderr.write("\tdbufstat -d -f pool,object,objset,dsize,cached\n")
192 sys.stderr.write("\tdbufstat -bx -F dbc=1,objset=54,pool=testpool\n")
193 sys.stderr.write("\n")
198 def prettynum(sz, scale, num=0):
202 index = 0
203 save = 0
205 if raw or scale == -1:
208 # Rounding error, return 0
209 elif 0 < num < 1:
210 num = 0
217 if index == 0:
221 return "%*.1f%s" % (sz - 1, num, suffix[index])
223 return "%*d%s" % (sz - 1, num, suffix[index])
232 sys.stdout.write("%s%s" % (
233 prettynum(cols[col][0], cols[col][1], v[col]), sep))
234 sys.stdout.write("\n")
246 sys.stdout.write("%*s%s" % (cols[col][0], col, sep))
247 sys.stdout.write("\n")
319 0x80: "DMU_OTN_UINT8_DATA",
320 0xc0: "DMU_OTN_UINT8_METADATA",
321 0x81: "DMU_OTN_UINT16_DATA",
322 0xc1: "DMU_OTN_UINT16_METADATA",
323 0x82: "DMU_OTN_UINT32_DATA",
324 0xc2: "DMU_OTN_UINT32_METADATA",
325 0x83: "DMU_OTN_UINT64_DATA",
326 0xc3: "DMU_OTN_UINT64_METADATA",
327 0x84: "DMU_OTN_ZAP_DATA",
328 0xc4: "DMU_OTN_ZAP_METADATA",
329 0xa0: "DMU_OTN_UINT8_ENC_DATA",
330 0xe0: "DMU_OTN_UINT8_ENC_METADATA",
331 0xa1: "DMU_OTN_UINT16_ENC_DATA",
332 0xe1: "DMU_OTN_UINT16_ENC_METADATA",
333 0xa2: "DMU_OTN_UINT32_ENC_DATA",
334 0xe2: "DMU_OTN_UINT32_ENC_METADATA",
335 0xa3: "DMU_OTN_UINT64_ENC_DATA",
336 0xe3: "DMU_OTN_UINT64_ENC_METADATA",
337 0xa4: "DMU_OTN_ZAP_ENC_DATA",
338 0xe4: "DMU_OTN_ZAP_ENC_METADATA"}
340 # If "-rr" option is used, don't convert to string representation
364 # If "-rr" option is used, don't convert to string representation
415 d[pool][objset][key]['bonus'] = 0
416 d[pool][objset][key]['cached'] = 0
417 d[pool][objset][key]['direct'] = 0
418 d[pool][objset][key]['indirect'] = 0
419 d[pool][objset][key]['spill'] = 0
423 if blkid == -1:
425 elif blkid == -2:
428 if level == 0:
441 if len(filters) == 0:
446 val = prettynum(cols[key][0], cols[key][1], vals[key]).strip()
563 if opt in ('-b', '--buffers'):
565 if opt in ('-d', '--dnodes'):
567 if opt in ('-f', '--columns'):
569 if opt in ('-h', '--help'):
571 if opt in ('-i', '--infile'):
573 if opt in ('-o', '--outfile'):
575 if opt in ('-r', '--raw'):
577 if opt in ('-s', '--separator'):
579 if opt in ('-t', '--types'):
581 if opt in ('-v', '--verbose'):
583 if opt in ('-x', '--extended'):
585 if opt in ('-n', '--noheader'):
587 if opt in ('-F', '--filter'):
594 sys.stderr.write("Invalid filter '%s'.\n" % fil)
597 if f[0] not in cols:
598 sys.stderr.write("Invalid field '%s' in filter.\n" % f[0])
601 if f[0] in filters:
602 sys.stderr.write("Field '%s' specified multiple times in "
603 "filter.\n" % f[0])
609 sys.stderr.write("Invalid regex for field '%s' in "
610 "filter.\n" % f[0])
613 filters[f[0]] = f[1]
646 if len(invalid) > 0:
647 sys.stderr.write("Invalid column definition! -- %s\n" % invalid)
650 if len(incompat) > 0:
651 sys.stderr.write("Incompatible field specified! -- %s\n" %
661 sys.stderr.write("Cannot open %s for writing\n" % ofile)
667 if ifile != "-":
672 sys.stderr.write("Cannot open %s for reading\n" % ifile)