It looks like the assert() below and the comment in mdcache_lru_clean() may not be valid in all cases. For example, if cache is getting cleaned in the context of the LRU background thread, the op_ctx will be NULL and the code may get into the 'else' part (lru_run() -> lru_run_lane() -> _mdcache_lru_unref() -> mdcache_lru_clean()):
Do any of the calls after the 'if-else' block use 'op_ctx'? If those don't us 'op_ctx', the 'else' part can be safely removed, right? if (export_id >= 0 && op_ctx != NULL && op_ctx->ctx_export != NULL && op_ctx->ctx_export->export_id != export_id) { ........ } else { /* We MUST have a valid op_ctx based on the conditions * we could get here. first_export_id coild be -1 or it * could match the current op_ctx export. In either case * we will trust the current op_ctx. */ assert(op_ctx); assert(op_ctx->ctx_export); LogFullDebug(COMPONENT_CACHE_INODE, "Trusting op_ctx export id %"PRIu16, op_ctx->ctx_export->export_id); .... ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Nfs-ganesha-devel mailing list Nfs-ganesha-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nfs-ganesha-devel