- struct osl_row *row;
- struct osl_object obj = {.data = &dir_num, .size = sizeof(dir_num)};
-
- int ret = osl_get_row(t, UT_DIR_NUM, &obj, &row);
-
- if (ret < 0 && ret != -E_RB_KEY_NOT_FOUND)
- return ret;
- if (ret < 0) { /* this is the first file we add */
- struct osl_object objects[NUM_UT_COLUMNS];
- uint64_t num_files = 1;
-
- objects[UT_DIR_NUM].data = &dir_num;
- objects[UT_DIR_NUM].size = sizeof(dir_num);
- objects[UT_BYTES].data = add;
- objects[UT_BYTES].size = sizeof(*add);
- objects[UT_FILES].data = &num_files;
- objects[UT_FILES].size = sizeof(num_files);
- INFO_LOG("######################### ret: %d\n", ret);
- ret = osl_add_row(t, objects);
- INFO_LOG("######################### ret: %d\n", ret);
- return ret;
- } else { /* add size and increment file count */
- uint64_t num;
- struct osl_object obj1, obj2 = {.data = &num, .size = sizeof(num)};
-
- ret = osl_get_object(t, row, UT_BYTES, &obj1);
- if (ret < 0)
- return ret;
- num = *(uint64_t *)obj1.data + *add;
- ret = osl_update_object(t, row, UT_BYTES, &obj2);
- if (ret < 0)
- return ret;
- ret = osl_get_object(t, row, UT_FILES, &obj1);
- if (ret < 0)
- return ret;
- num = *(uint64_t *)obj1.data + 1;
- return osl_update_object(t, row, UT_FILES, &obj2);
- }