From 0ed515c281646dc3b03631a8e7cf95fbb475392e Mon Sep 17 00:00:00 2001 From: liuy <liuy> Date: Thu, 2 Aug 2007 08:02:26 +0000 Subject: [PATCH] Branch HEAD b=12333 i=green, nathan Description: obdclass is limited by single OBD_ALLOC(idarray) Details : replace OBD_ALLOC/OBD_FREE with OBD_VMALLOC/OBD_VFREE --- lustre/obdclass/llog_obd.c | 13 ++++++++----- lustre/tests/conf-sanity.sh | 23 +++++++++++++++++++++++ 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/lustre/obdclass/llog_obd.c b/lustre/obdclass/llog_obd.c index 85086708ae..f8c875b005 100644 --- a/lustre/obdclass/llog_obd.c +++ b/lustre/obdclass/llog_obd.c @@ -330,14 +330,16 @@ int llog_cat_initialize(struct obd_device *obd, struct obd_llogs *llogs, int count, struct obd_uuid *uuid) { char name[32] = CATLIST; - struct llog_catid *idarray; + struct llog_catid *idarray = NULL; int size = sizeof(*idarray) * count; int rc; ENTRY; - OBD_ALLOC(idarray, size); - if (!idarray) - RETURN(-ENOMEM); + if (count) { + OBD_VMALLOC(idarray, size); + if (!idarray) + RETURN(-ENOMEM); + } rc = llog_get_cat_list(obd, obd, name, count, idarray); if (rc) { @@ -358,7 +360,8 @@ int llog_cat_initialize(struct obd_device *obd, struct obd_llogs *llogs, } out: - OBD_FREE(idarray, size); + if (idarray) + OBD_VFREE(idarray, size); RETURN(rc); } EXPORT_SYMBOL(llog_cat_initialize); diff --git a/lustre/tests/conf-sanity.sh b/lustre/tests/conf-sanity.sh index 2c628cfc15..21548e5e83 100644 --- a/lustre/tests/conf-sanity.sh +++ b/lustre/tests/conf-sanity.sh @@ -1144,6 +1144,29 @@ test_32b() { } run_test 32b "Upgrade from 1.4 with writeconf" +test_33() { # bug 12333 + local FSNAME2=test1234 + local fs2mds_HOST=$mds_HOST + local fs2ost_HOST=$ost_HOST + local fs2mdsdev=${MDSDEV}_2 + local fs2ostdev=$(ostdevname 1)_2 + add fs2mds $MDS_MKFS_OPTS --fsname=${FSNAME2} --reformat $fs2mdsdev || exit 10 + add fs2ost $OST_MKFS_OPTS --fsname=${FSNAME2} --index=8191 --mgsnode=`hostname`@tcp --reformat $fs2ostdev || exit 10 + + start fs2mds $fs2mdsdev $MDS_MOUNT_OPTS + start fs2ost $fs2ostdev $OST_MOUNT_OPTS + mkdir -p $MOUNT2 + mount -t lustre $MGSNID:/${FSNAME2} $MOUNT2 || return 1 + echo "ok." + + umount -d $MOUNT2 + stop fs2ost -f + stop fs2mds -f + rm -rf $MOUNT2 $fs2mdsdev $fs2ostdev + cleanup_nocli || return 6 +} +run_test 33 "Mount ost with a large index number" + umount_client $MOUNT cleanup_nocli cleanup_krb5_env -- GitLab