From: nathan Date: Thu, 26 Feb 2009 19:51:45 +0000 (+0000) Subject: b=18606 X-Git-Tag: 1.8.0~92 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=3d311fe7d115c4f40828b8b29499f229bf2f8004;p=fs%2Flustre-release.git b=18606 i=adigler i=johann use pool of "all" if specified pool is empty --- diff --git a/lustre/lov/lov_pack.c b/lustre/lov/lov_pack.c index 6dcdd3a..1cd8ef8 100644 --- a/lustre/lov/lov_pack.c +++ b/lustre/lov/lov_pack.c @@ -484,20 +484,18 @@ int lov_setstripe(struct obd_export *exp, struct lov_stripe_md **lsmp, struct pool_desc *pool; pool = lov_find_pool(lov, lumv3.lmm_pool_name); - if (pool == NULL) - RETURN(-EINVAL); - - if (lumv1->lmm_stripe_offset != - (typeof(lumv1->lmm_stripe_offset))(-1)) { - rc = lov_check_index_in_pool(lumv1->lmm_stripe_offset, - pool); - if (rc < 0) - RETURN(-EINVAL); + if (pool != NULL) { + if (lumv1->lmm_stripe_offset != + (typeof(lumv1->lmm_stripe_offset))(-1)) { + rc = lov_check_index_in_pool( + lumv1->lmm_stripe_offset, pool); + if (rc < 0) + RETURN(-EINVAL); + } + + if (stripe_count > pool_tgt_count(pool)) + stripe_count = pool_tgt_count(pool); } - - if (stripe_count > pool_tgt_count(pool)) - stripe_count = pool_tgt_count(pool); - } rc = lov_alloc_memmd(lsmp, stripe_count, lumv1->lmm_pattern, lmm_magic); diff --git a/lustre/tests/sanity.sh b/lustre/tests/sanity.sh index b3e9b78..75822ce 100644 --- a/lustre/tests/sanity.sh +++ b/lustre/tests/sanity.sh @@ -5851,6 +5851,9 @@ test_200h() { done wait_update $HOSTNAME "lctl get_param -n lov.$FSNAME-*.pools.$POOL" ""\ || error "Pool $FSNAME.$POOL cannot be drained" + # striping on an empty pool should fall back to "pool of everything" + $SETSTRIPE -p $POOL ${POOL_FILE}/$tfile || \ + error "failed to create file with empty pool" } run_test 200h "Remove all targets from a pool =========================="