pnfsblock: lseg alloc and free
Signed-off-by: Fred Isaman <iisaman@citi.umich.edu> [pnfsblock: fix bug getting pnfs_layout_type in translate_devid().] Signed-off-by: Tao Guo <guotao@nrchpc.ac.cn> Signed-off-by: Benny Halevy <bhalevy@panasas.com> Signed-off-by: Zhang Jingwang <Jingwang.Zhang@emc.com> Signed-off-by: Benny Halevy <bhalevy@tonian.com> Signed-off-by: Jim Rees <rees@umich.edu> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
025a70ed65
commit
a60d2ebd93
|
@ -115,16 +115,35 @@ static struct pnfs_layout_hdr *bl_alloc_layout_hdr(struct inode *inode,
|
|||
return &bl->bl_layout;
|
||||
}
|
||||
|
||||
static void
|
||||
bl_free_lseg(struct pnfs_layout_segment *lseg)
|
||||
static void bl_free_lseg(struct pnfs_layout_segment *lseg)
|
||||
{
|
||||
dprintk("%s enter\n", __func__);
|
||||
kfree(lseg);
|
||||
}
|
||||
|
||||
static struct pnfs_layout_segment *
|
||||
bl_alloc_lseg(struct pnfs_layout_hdr *lo,
|
||||
struct nfs4_layoutget_res *lgr, gfp_t gfp_flags)
|
||||
/* We pretty much ignore lseg, and store all data layout wide, so we
|
||||
* can correctly merge.
|
||||
*/
|
||||
static struct pnfs_layout_segment *bl_alloc_lseg(struct pnfs_layout_hdr *lo,
|
||||
struct nfs4_layoutget_res *lgr,
|
||||
gfp_t gfp_flags)
|
||||
{
|
||||
return NULL;
|
||||
struct pnfs_layout_segment *lseg;
|
||||
int status;
|
||||
|
||||
dprintk("%s enter\n", __func__);
|
||||
lseg = kzalloc(sizeof(*lseg), gfp_flags);
|
||||
if (!lseg)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
status = nfs4_blk_process_layoutget(lo, lgr, gfp_flags);
|
||||
if (status) {
|
||||
/* We don't want to call the full-blown bl_free_lseg,
|
||||
* since on error extents were not touched.
|
||||
*/
|
||||
kfree(lseg);
|
||||
return ERR_PTR(status);
|
||||
}
|
||||
return lseg;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -96,6 +96,12 @@ static inline struct pnfs_block_layout *BLK_LO2EXT(struct pnfs_layout_hdr *lo)
|
|||
return container_of(lo, struct pnfs_block_layout, bl_layout);
|
||||
}
|
||||
|
||||
static inline struct pnfs_block_layout *
|
||||
BLK_LSEG2EXT(struct pnfs_layout_segment *lseg)
|
||||
{
|
||||
return BLK_LO2EXT(lseg->pls_layout);
|
||||
}
|
||||
|
||||
struct bl_dev_msg {
|
||||
int status;
|
||||
uint32_t major, minor;
|
||||
|
|
|
@ -189,3 +189,11 @@ out:
|
|||
kfree(msg.data);
|
||||
return rv;
|
||||
}
|
||||
|
||||
int
|
||||
nfs4_blk_process_layoutget(struct pnfs_layout_hdr *lo,
|
||||
struct nfs4_layoutget_res *lgr, gfp_t gfp_flags)
|
||||
{
|
||||
/* STUB */
|
||||
return -EIO;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue