Add proper error handling for the case where a thread can not be

created.  Instead of asserting we simply abort the test, wait for
any tasks we created to finish, and return -ESRCH back to the user
space component.



git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@175 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
This commit is contained in:
behlendo 2008-11-05 21:43:37 +00:00
parent 36833ea4e4
commit 7ea1cbf5b2
1 changed files with 12 additions and 5 deletions

View File

@ -582,7 +582,7 @@ splat_kmem_test8_sc(struct file *file, void *arg, int size, int count)
kthread_t *thr;
struct timespec start, stop, delta;
char cache_name[32];
int i, j, threads = 32;
int i, j, rc = 0, threads = 32;
kcp.kcp_magic = SPLAT_KMEM_TEST_MAGIC;
kcp.kcp_file = file;
@ -611,7 +611,8 @@ splat_kmem_test8_sc(struct file *file, void *arg, int size, int count)
splat_vprint(file, SPLAT_KMEM_TEST8_NAME,
"Unable to create '%s' cache\n",
SPLAT_KMEM_CACHE_NAME);
return -ENOMEM;
rc = -ENOMEM;
break;
}
start = current_kernel_time();
@ -619,7 +620,10 @@ splat_kmem_test8_sc(struct file *file, void *arg, int size, int count)
for (j = 0; j < threads; j++) {
thr = thread_create(NULL, 0, splat_kmem_test8_thread,
&kcp, 0, &p0, TS_RUN, minclsyspri);
ASSERT(thr != NULL);
if (thr == NULL) {
rc = -ESRCH;
break;
}
spin_lock(&kcp.kcp_lock);
kcp.kcp_threads++;
spin_unlock(&kcp.kcp_lock);
@ -644,11 +648,14 @@ splat_kmem_test8_sc(struct file *file, void *arg, int size, int count)
kmem_cache_destroy(kcp.kcp_cache);
if (kcp.kcp_rc)
if (!rc && kcp.kcp_rc)
rc = kcp.kcp_rc;
if (rc)
break;
}
return kcp.kcp_rc;
return rc;
}
static int