OpenSolaris

Printable Version Enter a New Search
Bug ID 6656655
Synopsis zdb should be able to display blkptr signatures
State 10-Fix Delivered (Fix available in build)
Category:Subcategory utility:zfs
Keywords
Responsible Engineer Eric Kustarz
Reported Against
Duplicate Of
Introduced In
Commit to Fix snv_87
Fixed In snv_87
Release Fixed solaris_nevada(snv_87) , solaris_10u6(s10u6_03) (Bug ID:2162004)
Related Bugs
Submit Date 29-January-2008
Last Update Date 9-April-2008
Description
zdb(1M) should take a new option, '-S', to display blkptr signatures, such as:
heavy# zdb -SS bigIO
0       8       7       512     0:0:0:0 3
0       8       7       512     0:0:0:0 3
0       8       7       512     0:0:0:0 3
0       11      7       512     b3f8e66e7:42045f7cf1c:c7548b48ced9:19c6e6bf11cb73       3
0       10      7       5120    13a31f0bb95:35c329dae9c71:5b0c77808d7d6c2:2f19464669f73e0f      3
0       10      7       4608    13b2209a295:2e9cc4c3f463f:4647c570afedfac:ee230a1ed862dc1d      3
...

Where the columns represent: level, type, checksum algorithm, PSIZE, actual checksum, and
number of DVAs.

Better yet and in addition, we can add a stable USDT probe (zdb:::bp-signature) that would
have a blkptr_t* as its argument.  Then users can utilize aggregations to better parse
the data.

For example, you could use the USDT probe to display the total size of user data and the
relevant blkptr signatures of just user data, such as (this is on a very simple pool):
heavy# dtrace -ZCs user_dedup.d -q -c 'zdb -S bigIO'           
4096
3       0       19      6       512     a6b6a65:0:14d6d4ca0:0
2       0       19      6       512     a736569706f63:0:14e6cad2e0dec60:0
1       0       19      6       1024    0:0:0:0
1       0       19      6       512     6720736569706f63:a7975:e40e6cad2e0dec60:14f2ea0

heavy# 

Where the tabbed separated columns represent count (same signatures), level, type, checksum
algorithm, PSIZE, checksum.  For example, the first row tells us that we have three of the
exact same bkptr signatures.

Users can then parse that information further to do interesting things...
Turns out using dtrace isn't a good solution - for large pools, its just too memory
intensive.

So we'll just have zdb print out the signatures.
Work Around
N/A
Comments
N/A