Return version tags in directory listing
This commit is contained in:
@@ -950,6 +950,14 @@ static void process_event_for_list(ToastyFS *toasty,
|
||||
|
||||
// Parse each list item
|
||||
for (uint32_t i = 0; i < item_count; i++) {
|
||||
|
||||
uint64_t gen;
|
||||
if (!binary_read(&reader, &gen, sizeof(gen))) {
|
||||
toasty->operations[opidx].result = (ToastyResult) { .type=TOASTY_RESULT_LIST_ERROR, .user=toasty->operations[opidx].user };
|
||||
sys_free(entities);
|
||||
return;
|
||||
}
|
||||
|
||||
uint8_t is_dir;
|
||||
if (!binary_read(&reader, &is_dir, sizeof(is_dir))) {
|
||||
toasty->operations[opidx].result = (ToastyResult) { .type=TOASTY_RESULT_LIST_ERROR, .user=toasty->operations[opidx].user };
|
||||
@@ -971,6 +979,7 @@ static void process_event_for_list(ToastyFS *toasty,
|
||||
return;
|
||||
}
|
||||
|
||||
entities[i].vtag = gen;
|
||||
entities[i].is_dir = is_dir;
|
||||
|
||||
if (name_len > sizeof(entities[i].name)-1) {
|
||||
|
||||
@@ -257,6 +257,7 @@ int file_tree_list(FileTree *ft, string path,
|
||||
|
||||
items[i].name_len = name_cpy;
|
||||
items[i].is_dir = c->is_dir;
|
||||
items[i].gen = c->gen;
|
||||
}
|
||||
|
||||
assert(e->gen != NO_GENERATION);
|
||||
|
||||
@@ -51,6 +51,7 @@ typedef struct {
|
||||
char name[1<<8];
|
||||
int name_len;
|
||||
bool is_dir;
|
||||
uint64_t gen;
|
||||
} ListItem;
|
||||
|
||||
#define MAX_COMPS 32
|
||||
|
||||
@@ -362,6 +362,8 @@ process_client_list(MetadataServer *state, int conn_idx, ByteView msg)
|
||||
|
||||
for (int i = 0; i < ret && i < MAX_LIST_SIZE; i++) {
|
||||
|
||||
message_write(&writer, &items[i].gen, sizeof(items[i].gen));
|
||||
|
||||
uint8_t is_dir = items[i].is_dir;
|
||||
message_write(&writer, &is_dir, sizeof(is_dir));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user