+static int user_summary_loop_function(struct osl_row *row, void *data)
+{
+ struct user_summary_info *usi = data;
+ uint64_t num;
+ int ret;
+
+ ret = get_num_user_files(row, usi->ui, &num);
+ if (ret < 0)
+ goto err;
+ usi->ui->files += num;
+ ret = get_num_user_bytes(row, usi->ui, &num);
+ if (ret < 0)
+ goto err;
+ usi->ui->bytes += num;
+ usi->ui->dirs++;
+ return 1;
+err:
+ usi->ret = ret;
+ usi->osl_errno = (ret == -E_OSL)? osl_errno : 0;
+ return -1;
+}
+
+static int compute_user_summary(struct user_info *ui, __a_unused void *data)
+{
+ struct user_summary_info usi = {.ui = ui};
+
+ return adu_loop_reverse(ui->table, UT_BYTES, &usi, user_summary_loop_function,
+ &usi.ret, &usi.osl_errno);
+}
+
+static int print_user_summary_line(struct user_info *ui, void *data)