Mercurial > nomad
changeset 778:1c8072796692
objstore: return number of dirents found from lookup entry function
This will be useful for unlinking.
Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
author | Josef 'Jeff' Sipek <jeffpc@josefsipek.net> |
---|---|
date | Mon, 30 Mar 2020 23:03:05 -0400 |
parents | 0b4ffdbf3b3f |
children | 4767ca9d2c3e |
files | src/objstore/dir.h src/objstore/obj_dir.c src/objstore/obj_dir_create.c |
diffstat | 3 files changed, 9 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/objstore/dir.h Mon Mar 30 23:02:06 2020 -0400 +++ b/src/objstore/dir.h Mon Mar 30 23:03:05 2020 -0400 @@ -216,7 +216,7 @@ extern int dir_lookup_entry(struct objver *dirver, const char *name, uint8_t *raw, bool one, struct ndirent_mem *ent, - uint64_t *_off); + uint64_t *_off, uint16_t *_ndirents); extern void dirent_cpu2be(struct ndirent_phys *phys, const struct ndirent_mem *mem); extern void dirent_be2cpu(struct ndirent_mem *mem, const struct ndirent_phys *phys);
--- a/src/objstore/obj_dir.c Mon Mar 30 23:02:06 2020 -0400 +++ b/src/objstore/obj_dir.c Mon Mar 30 23:03:05 2020 -0400 @@ -89,7 +89,8 @@ } int dir_lookup_entry(struct objver *dirver, const char *name, uint8_t *raw, - bool one, struct ndirent_mem *ent, uint64_t *_off) + bool one, struct ndirent_mem *ent, uint64_t *_off, + uint16_t *_ndirents) { const size_t namelen = strlen(name); uint16_t ndirents; @@ -130,6 +131,8 @@ if (_off) *_off = off; + if (_ndirents) + *_ndirents = ndirents; return 0; } @@ -149,7 +152,7 @@ struct buffer tgtbuf; int ret; - ret = dir_lookup_entry(dirver, name, raw, true, &ent, NULL); + ret = dir_lookup_entry(dirver, name, raw, true, &ent, NULL, NULL); if (ret) return ret; @@ -185,7 +188,7 @@ size_t i; int ret; - ret = dir_lookup_entry(dirver, name, raw, false, &ent, NULL); + ret = dir_lookup_entry(dirver, name, raw, false, &ent, NULL, NULL); if (ret) return ret; @@ -330,7 +333,7 @@ uint64_t diroff; int ret; - ret = dir_lookup_entry(dirver, name, raw, false, &ent, &diroff); + ret = dir_lookup_entry(dirver, name, raw, false, &ent, &diroff, NULL); if (ret) return ret;
--- a/src/objstore/obj_dir_create.c Mon Mar 30 23:02:06 2020 -0400 +++ b/src/objstore/obj_dir_create.c Mon Mar 30 23:03:05 2020 -0400 @@ -135,7 +135,7 @@ uint64_t diroff; int ret; - ret = dir_lookup_entry(dirver, name, raw, false, &ent, &diroff); + ret = dir_lookup_entry(dirver, name, raw, false, &ent, &diroff, NULL); if (!ret) return -EEXIST; if (ret != -ENOENT)