summaryrefslogtreecommitdiffstats
path: root/include/sys/dmu.h
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2013-10-02 17:11:19 -0700
committerBrian Behlendorf <[email protected]>2013-10-25 13:59:40 -0700
commite0b0ca983d6897bcddf05af2c0e5d01ff66f90db (patch)
treed6d3251e89a67f1a915f1a071313271e061af359 /include/sys/dmu.h
parent2d37239a28b8b2ddc0e8312093f8d8810c6351fa (diff)
Add visibility in to cached dbufs
Currently there is no mechanism to inspect which dbufs are being cached by the system. There are some coarse counters in arcstats by they only give a rough idea of what's being cached. This patch aims to improve the current situation by adding a new dbufs kstat. When read this new kstat will walk all cached dbufs linked in to the dbuf_hash. For each dbuf it will dump detailed information about the buffer. It will also dump additional information about the referenced arc buffer and its related dnode. This provides a more complete view in to exactly what is being cached. With this generic infrastructure in place utilities can be written to post-process the data to understand exactly how the caching is working. For example, the data could be processed to show a list of all cached dnodes and how much space they're consuming. Or a similar list could be generated based on dnode type. Many other ways to interpret the data exist based on what kinds of questions you're trying to answer. Signed-off-by: Brian Behlendorf <[email protected]> Signed-off-by: Prakash Surya <[email protected]>
Diffstat (limited to 'include/sys/dmu.h')
-rw-r--r--include/sys/dmu.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/sys/dmu.h b/include/sys/dmu.h
index b0db7604d..fd1460d5c 100644
--- a/include/sys/dmu.h
+++ b/include/sys/dmu.h
@@ -660,6 +660,7 @@ extern const dmu_object_byteswap_info_t dmu_ot_byteswap[DMU_BSWAP_NUMFUNCS];
* If doi is NULL, just indicates whether the object exists.
*/
int dmu_object_info(objset_t *os, uint64_t object, dmu_object_info_t *doi);
+void __dmu_object_info_from_dnode(struct dnode *dn, dmu_object_info_t *doi);
void dmu_object_info_from_dnode(struct dnode *dn, dmu_object_info_t *doi);
void dmu_object_info_from_db(dmu_buf_t *db, dmu_object_info_t *doi);
void dmu_object_size_from_db(dmu_buf_t *db, uint32_t *blksize,