> Yeah, probably. > > Daniel > > On 08/04/2017 10:55 AM, Pradeep wrote: > > For the first export, saved_ctx will be NULL. So the assignment at > > line 1161 makes op_ctx also NULL. So when mdcache_lru_unref() is > > called, op_ctx will be NULL. This will cause the assert in > > mdcache_lru_clean() abort. > > > > Perhaps we can move the assignment in line 1161 after > mdcache_lru_unref() call?
That sounds like a good fix. The put_gsh_export(export); also needs to be moved so there is a valid export reference for the mdcache_lru_unref() call. Frank > > On 8/4/17, Daniel Gryniewicz <d...@redhat.com> wrote: > >> Yep. We save the old context, run our loop, and then restore the old > >> context. > >> > >> On 08/04/2017 10:45 AM, Pradeep wrote: > >>> Thanks Daniel. I see it being initialized. But then it is > >>> overwritten from saved_ctx, right? > >>> > >>> https://github.com/nfs-ganesha/nfs- > ganesha/blob/next/src/FSAL/Stacka > >>> ble_FSALs/FSAL_MDCACHE/mdcache_lru.c#L1161 > >>> > >>> On 8/4/17, Daniel Gryniewicz <d...@redhat.com> wrote: > >>>> Here: > >>>> > >>>> https://github.com/nfs-ganesha/nfs- > ganesha/blob/next/src/FSAL/Stack > >>>> able_FSALs/FSAL_MDCACHE/mdcache_lru.c#L1127 > >>>> > >>>> On 08/04/2017 10:36 AM, Pradeep wrote: > >>>>> Hi Daniel, > >>>>> > >>>>> I could not find where op_ctx gets populated in lru_run_lane(). > >>>>> I'm using 2.5.1. > >>>>> > >>>>> https://github.com/nfs-ganesha/nfs- > ganesha/blob/next/src/FSAL/Stac > >>>>> kable_FSALs/FSAL_MDCACHE/mdcache_lru.c#L1019 > >>>>> > >>>>> On 8/4/17, Daniel Gryniewicz <d...@redhat.com> wrote: > >>>>>> It should be valid. lru_run_lane() sets up op_ctx, so it should > >>>>>> be set correctly even in the LRU thread case. > >>>>>> > >>>>>> Daniel > >>>>>> > >>>>>> On 08/04/2017 09:54 AM, Pradeep wrote: > >>>>>>> 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 > >>>>>>> > >>>>>> > >>>>>> > >>>>>> ----------------------------------------------------------------- > >>>>>> ------------- 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 > >>>>>> > >>>> > >>>> > >> > >> > > > ---------------------------------------------------------------------------- -- > 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 --- This email has been checked for viruses by Avast antivirus software. https://www.avast.com/antivirus ------------------------------------------------------------------------------ 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