From 3c7f8db77c1051e2a43e4a2f94526a333f69d349 Mon Sep 17 00:00:00 2001 From: liuy <liuy> Date: Thu, 2 Aug 2007 06:40:27 +0000 Subject: [PATCH] Branch b1_6 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/ChangeLog | 5 +++++ lustre/obdclass/llog_obd.c | 13 ++++++++----- lustre/tests/conf-sanity.sh | 23 +++++++++++++++++++++++ 3 files changed, 36 insertions(+), 5 deletions(-) diff --git a/lustre/ChangeLog b/lustre/ChangeLog index 3ce0b4513c..fffb62ea79 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -60,6 +60,11 @@ Bugzilla : 12606 Description: don't use GFP_* in generic Lustre code. Details : Use cfs_alloc_* functions and CFS_* flags for code portability. +Severity : normal +Bugzilla : 12333 +Description: obdclass is limited by single OBD_ALLOC(idarray) +Details : replace OBD_ALLOC/OBD_FREE with OBD_VMALLOC/OBD_VFREE + -------------------------------------------------------------------------------- 2007-07-30 Cluster File Systems, Inc. <info@clusterfs.com> diff --git a/lustre/obdclass/llog_obd.c b/lustre/obdclass/llog_obd.c index ff52ef622b..46fdca0bba 100644 --- a/lustre/obdclass/llog_obd.c +++ b/lustre/obdclass/llog_obd.c @@ -366,14 +366,16 @@ int llog_cat_initialize(struct obd_device *obd, 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) { @@ -394,7 +396,8 @@ int llog_cat_initialize(struct obd_device *obd, int count, } 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 034fb6b01e..f207d81822 100644 --- a/lustre/tests/conf-sanity.sh +++ b/lustre/tests/conf-sanity.sh @@ -1127,6 +1127,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 -- GitLab