mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-25 02:49:32 +03:00
Add zap_prefetch() interface
Provide a generic interface to prefetch ZAP entries by name. This functionality is being added for external consumers such as Lustre. It is based of the existing zap_prefetch_uint64() version which is used by the deduplication code. Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Richard Yao <ryao@gentoo.org> Closes #4061
This commit is contained in:
parent
917b8c5cec
commit
072484504f
@ -213,6 +213,7 @@ int zap_lookup_norm(objset_t *ds, uint64_t zapobj, const char *name,
|
|||||||
int zap_lookup_uint64(objset_t *os, uint64_t zapobj, const uint64_t *key,
|
int zap_lookup_uint64(objset_t *os, uint64_t zapobj, const uint64_t *key,
|
||||||
int key_numints, uint64_t integer_size, uint64_t num_integers, void *buf);
|
int key_numints, uint64_t integer_size, uint64_t num_integers, void *buf);
|
||||||
int zap_contains(objset_t *ds, uint64_t zapobj, const char *name);
|
int zap_contains(objset_t *ds, uint64_t zapobj, const char *name);
|
||||||
|
int zap_prefetch(objset_t *os, uint64_t zapobj, const char *name);
|
||||||
int zap_prefetch_uint64(objset_t *os, uint64_t zapobj, const uint64_t *key,
|
int zap_prefetch_uint64(objset_t *os, uint64_t zapobj, const uint64_t *key,
|
||||||
int key_numints);
|
int key_numints);
|
||||||
|
|
||||||
|
@ -813,6 +813,28 @@ zap_lookup_norm(objset_t *os, uint64_t zapobj, const char *name,
|
|||||||
return (err);
|
return (err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
zap_prefetch(objset_t *os, uint64_t zapobj, const char *name)
|
||||||
|
{
|
||||||
|
zap_t *zap;
|
||||||
|
int err;
|
||||||
|
zap_name_t *zn;
|
||||||
|
|
||||||
|
err = zap_lockdir(os, zapobj, NULL, RW_READER, TRUE, FALSE, &zap);
|
||||||
|
if (err)
|
||||||
|
return (err);
|
||||||
|
zn = zap_name_alloc(zap, name, MT_EXACT);
|
||||||
|
if (zn == NULL) {
|
||||||
|
zap_unlockdir(zap);
|
||||||
|
return (SET_ERROR(ENOTSUP));
|
||||||
|
}
|
||||||
|
|
||||||
|
fzap_prefetch(zn);
|
||||||
|
zap_name_free(zn);
|
||||||
|
zap_unlockdir(zap);
|
||||||
|
return (err);
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
zap_prefetch_uint64(objset_t *os, uint64_t zapobj, const uint64_t *key,
|
zap_prefetch_uint64(objset_t *os, uint64_t zapobj, const uint64_t *key,
|
||||||
int key_numints)
|
int key_numints)
|
||||||
@ -1427,6 +1449,7 @@ EXPORT_SYMBOL(zap_lookup);
|
|||||||
EXPORT_SYMBOL(zap_lookup_norm);
|
EXPORT_SYMBOL(zap_lookup_norm);
|
||||||
EXPORT_SYMBOL(zap_lookup_uint64);
|
EXPORT_SYMBOL(zap_lookup_uint64);
|
||||||
EXPORT_SYMBOL(zap_contains);
|
EXPORT_SYMBOL(zap_contains);
|
||||||
|
EXPORT_SYMBOL(zap_prefetch);
|
||||||
EXPORT_SYMBOL(zap_prefetch_uint64);
|
EXPORT_SYMBOL(zap_prefetch_uint64);
|
||||||
EXPORT_SYMBOL(zap_count_write);
|
EXPORT_SYMBOL(zap_count_write);
|
||||||
EXPORT_SYMBOL(zap_add);
|
EXPORT_SYMBOL(zap_add);
|
||||||
|
Loading…
Reference in New Issue
Block a user