aurelien.degremont@cea.fr
2007-Jun-18  03:26 UTC
[Lustre-devel] [Bug 12330] ASSERTION(thread_id < filter->fo_iobuf_count) failed
Please don''t reply to lustre-devel. Instead, comment in Bugzilla by
using the following link:
https://bugzilla.lustre.org/show_bug.cgi?id=12330
We also hit it, with Lustre 1.6.0, on a small test configuration, doing
ceaseless  small I/O (~200 MB/s) on 2 OSS, with large stripecount (46, each file
was striped on each OST).
We think this is a similar problem with "ASSERTION(thread->t_id <
OSS_THREAD_MAX)" fixed in 1.6.0. 
The thread_id count starts from 1, and not from 0, as a consequence, the check
must be done with "<=" (Not sure also that thread_id >= 0 is
relevant here.)
--- lustre/obdfilter/filter.c.orig      2007-06-18 11:21:13.000000000 +0200
+++ lustre/obdfilter/filter.c   2007-06-18 11:21:22.000000000 +0200
@@ -1572,7 +1572,7 @@ void *filter_iobuf_get(struct filter_obd
         struct filter_iobuf **pool_place = NULL;
         if (thread_id >= 0) {
-                LASSERT(thread_id < filter->fo_iobuf_count);
+                LASSERT(thread_id <= filter->fo_iobuf_count);
                 pool = *(pool_place =
&filter->fo_iobuf_pool[thread_id]);
         }