mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-10 07:50:04 +00:00
pNFS: Add a helper to allocate the array of buckets
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
This commit is contained in:
parent
19573c939a
commit
d7242c4641
@ -366,6 +366,9 @@ bool nfs4_test_deviceid_unavailable(struct nfs4_deviceid_node *node);
|
||||
void nfs4_deviceid_purge_client(const struct nfs_client *);
|
||||
|
||||
/* pnfs_nfs.c */
|
||||
struct pnfs_commit_array *pnfs_alloc_commit_array(size_t n, gfp_t gfp_flags);
|
||||
void pnfs_free_commit_array(struct pnfs_commit_array *p);
|
||||
|
||||
void pnfs_generic_clear_request_commit(struct nfs_page *req,
|
||||
struct nfs_commit_info *cinfo);
|
||||
void pnfs_generic_commit_release(void *calldata);
|
||||
|
@ -87,6 +87,37 @@ out:
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pnfs_generic_clear_request_commit);
|
||||
|
||||
struct pnfs_commit_array *
|
||||
pnfs_alloc_commit_array(size_t n, gfp_t gfp_flags)
|
||||
{
|
||||
struct pnfs_commit_array *p;
|
||||
struct pnfs_commit_bucket *b;
|
||||
|
||||
p = kmalloc(struct_size(p, buckets, n), gfp_flags);
|
||||
if (!p)
|
||||
return NULL;
|
||||
p->nbuckets = n;
|
||||
INIT_LIST_HEAD(&p->cinfo_list);
|
||||
INIT_LIST_HEAD(&p->lseg_list);
|
||||
p->lseg = NULL;
|
||||
for (b = &p->buckets[0]; n != 0; b++, n--) {
|
||||
INIT_LIST_HEAD(&b->written);
|
||||
INIT_LIST_HEAD(&b->committing);
|
||||
b->wlseg = NULL;
|
||||
b->clseg = NULL;
|
||||
b->direct_verf.committed = NFS_INVALID_STABLE_HOW;
|
||||
}
|
||||
return p;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pnfs_alloc_commit_array);
|
||||
|
||||
void
|
||||
pnfs_free_commit_array(struct pnfs_commit_array *p)
|
||||
{
|
||||
kfree_rcu(p, rcu);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pnfs_free_commit_array);
|
||||
|
||||
static int
|
||||
pnfs_generic_scan_ds_commit_list(struct pnfs_commit_bucket *bucket,
|
||||
struct nfs_commit_info *cinfo,
|
||||
|
@ -1270,10 +1270,19 @@ struct pnfs_commit_bucket {
|
||||
struct nfs_writeverf direct_verf;
|
||||
};
|
||||
|
||||
struct pnfs_commit_array {
|
||||
struct list_head cinfo_list;
|
||||
struct list_head lseg_list;
|
||||
struct pnfs_layout_segment *lseg;
|
||||
struct rcu_head rcu;
|
||||
unsigned int nbuckets;
|
||||
struct pnfs_commit_bucket buckets[];
|
||||
};
|
||||
|
||||
struct pnfs_ds_commit_info {
|
||||
int nwritten;
|
||||
int ncommitting;
|
||||
int nbuckets;
|
||||
unsigned int nwritten;
|
||||
unsigned int ncommitting;
|
||||
unsigned int nbuckets;
|
||||
struct pnfs_commit_bucket *buckets;
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user