Exemplo n.º 1
0
int lov_alloc_memmd(struct lov_stripe_md **lsmp, int stripe_count,
                    int pattern, int magic)
{
    int i, lsm_size;
    ENTRY;

    CDEBUG(D_INFO, "alloc lsm, stripe_count %d\n", stripe_count);

    *lsmp = lsm_alloc_plain(stripe_count, &lsm_size);
    if (!*lsmp) {
        CERROR("can't allocate lsmp stripe_count %d\n", stripe_count);
        RETURN(-ENOMEM);
    }

    cfs_spin_lock_init(&(*lsmp)->lsm_lock);
    (*lsmp)->lsm_magic = magic;
    (*lsmp)->lsm_stripe_count = stripe_count;
    (*lsmp)->lsm_maxbytes = LUSTRE_STRIPE_MAXBYTES * stripe_count;
    (*lsmp)->lsm_pattern = pattern;
    (*lsmp)->lsm_pool_name[0] = '\0';
    (*lsmp)->lsm_oinfo[0]->loi_ost_idx = ~0;

    for (i = 0; i < stripe_count; i++)
        loi_init((*lsmp)->lsm_oinfo[i]);

    RETURN(lsm_size);
}
Exemplo n.º 2
0
int lov_alloc_memmd(struct lov_stripe_md **lsmp, __u16 stripe_count,
		    int pattern, int magic)
{
	int i, lsm_size;

	CDEBUG(D_INFO, "alloc lsm, stripe_count %d\n", stripe_count);

	*lsmp = lsm_alloc_plain(stripe_count, &lsm_size);
	if (!*lsmp) {
		CERROR("can't allocate lsmp stripe_count %d\n", stripe_count);
		return -ENOMEM;
	}

	atomic_set(&(*lsmp)->lsm_refc, 1);
	spin_lock_init(&(*lsmp)->lsm_lock);
	(*lsmp)->lsm_magic = magic;
	(*lsmp)->lsm_stripe_count = stripe_count;
	(*lsmp)->lsm_maxbytes = LUSTRE_STRIPE_MAXBYTES * stripe_count;
	(*lsmp)->lsm_pattern = pattern;
	(*lsmp)->lsm_pool_name[0] = '\0';
	(*lsmp)->lsm_layout_gen = 0;
	if (stripe_count > 0)
		(*lsmp)->lsm_oinfo[0]->loi_ost_idx = ~0;

	for (i = 0; i < stripe_count; i++)
		loi_init((*lsmp)->lsm_oinfo[i]);

	return lsm_size;
}
Exemplo n.º 3
0
static struct lov_stripe_md *lov_lsm_alloc(u16 stripe_count, u32 pattern,
					   u32 magic)
{
	struct lov_stripe_md *lsm;
	unsigned int i;

	CDEBUG(D_INFO, "alloc lsm, stripe_count %u\n", stripe_count);

	lsm = lsm_alloc_plain(stripe_count);
	if (!lsm) {
		CERROR("cannot allocate LSM stripe_count %u\n", stripe_count);
		return ERR_PTR(-ENOMEM);
	}

	atomic_set(&lsm->lsm_refc, 1);
	spin_lock_init(&lsm->lsm_lock);
	lsm->lsm_magic = magic;
	lsm->lsm_stripe_count = stripe_count;
	lsm->lsm_maxbytes = LUSTRE_EXT3_STRIPE_MAXBYTES * stripe_count;
	lsm->lsm_pattern = pattern;
	lsm->lsm_pool_name[0] = '\0';
	lsm->lsm_layout_gen = 0;
	if (stripe_count > 0)
		lsm->lsm_oinfo[0]->loi_ost_idx = ~0;

	for (i = 0; i < stripe_count; i++)
		loi_init(lsm->lsm_oinfo[i]);

	return lsm;
}