Whamcloud - gitweb
Branch HEAD
authorliuy <liuy>
Thu, 2 Aug 2007 08:02:26 +0000 (08:02 +0000)
committerliuy <liuy>
Thu, 2 Aug 2007 08:02:26 +0000 (08:02 +0000)
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
lustre/tests/conf-sanity.sh

index 8508670..f8c875b 100644 (file)
@@ -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;
                         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;
 
         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) {
 
         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:
         }
 
  out:
-        OBD_FREE(idarray, size);
+        if (idarray)
+                OBD_VFREE(idarray, size);
         RETURN(rc);
 }
 EXPORT_SYMBOL(llog_cat_initialize);
         RETURN(rc);
 }
 EXPORT_SYMBOL(llog_cat_initialize);
index 2c628cf..21548e5 100644 (file)
@@ -1144,6 +1144,29 @@ test_32b() {
 }
 run_test 32b "Upgrade from 1.4 with writeconf"
 
 }
 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
 umount_client $MOUNT   
 cleanup_nocli
 cleanup_krb5_env