+static void
+estimate_one(
+ disk_t * dp)
+{
+ char *hostname = dp->host->hostname;
+ char *diskname = dp->name;
+ char *qhost = quote_string(hostname);
+ char *qdisk = quote_string(diskname);
+ info_t info;
+ int stats;
+ gint64 size;
+
+ get_info(hostname, diskname, &info);
+
+ size = internal_server_estimate(dp, &info, 0, &stats);
+ if (stats) {
+ printf("%s %s %d %jd\n", qhost, qdisk, 0, (intmax_t)size);
+ }
+
+ if (info.last_level > 0) {
+ size = internal_server_estimate(dp, &info, info.last_level, &stats);
+ if (stats) {
+ printf("%s %s %d %jd\n", qhost, qdisk, info.last_level,
+ (intmax_t)size);
+ }
+ }
+
+ if (info.last_level > -1) {
+ size = internal_server_estimate(dp, &info, info.last_level+1, &stats);
+ if (stats) {
+ printf("%s %s %d %jd\n", qhost, qdisk, info.last_level+1,
+ (intmax_t)size);
+ }
+ }
+
+ amfree(qhost);
+ amfree(qdisk);
+}
+
+
+static void
+estimate(
+ int argc,
+ char ** argv)
+{
+ disk_t *dp;
+
+ if(argc >= 4)
+ diskloop(argc, argv, "estimate", estimate_one);
+ else
+ for(dp = diskq.head; dp != NULL; dp = dp->next)
+ estimate_one(dp);
+}
+
+
+/* ----------------------------------------------- */
+
+