You're supposed to pass the up_export that was in the fsal_up_vector that was passed in during the create_export() call. So in RGW's case, it should be export.up_ops->up_export that is passed.
Daniel On 01/20/2017 11:06 PM, Matt Benjamin wrote: > Responding to myself, in part: > > Looks like fsal_export.super_export "works" but presumes there is one, or at > least would if I can safely decide whether to pass super_export if present? > Or something. > > Matt > > ----- Original Message ----- >> From: "Matt Benjamin" <mbenja...@redhat.com> >> To: "NFS Ganesha Developers" <nfs-ganesha-devel@lists.sourceforge.net> >> Cc: "Daniel Gryniewicz" <d...@redhat.com> >> Sent: Friday, January 20, 2017 10:41:50 PM >> Subject: segv in mdc_up_invalidate (synchronous upcall) >> >> >> try-expire ev: >> <event:type=READDIR;fid=8337928933562504833:9160472602707183340;ts=<timespec:13073251;314548264>> >> ev rgw_fh: 0x7ffff4498620 >> [Switching to Thread 0x7fffb3bfe700 (LWP 23792)] >> Hi nfs-ganesha devs who know and love FSAL_MDCACHE, >> >> I'm prototyping an upcall in RGW, and I've quickly hit a fault in >> mdc_up_invalidate. It appears clear what's happening: up_ops.invalidate is >> mdc_up_invalidate, for which the export argument is expected to be an mdc >> view of export--but I've passed my own export handle. >> >> Am I supposed to be recovering an mdc export handle address somewhere, or is >> mdc_up_invalidate being unreasonable? >> >> Thanks, >> >> Matt >> >> Breakpoint 1, rgw_fs_invalidate (handle=0x7ffff4493700, fh_hk=...) at >> /home/mbenjamin/dev/rgw/nfs-ganesha/src/FSAL/FSAL_RGW/up.c:90 >> 90 status = up_ops->invalidate(&export->export, &fh_desc, upflags); >> (gdb) s >> mdc_up_invalidate (export=0x7ffff4493700, handle=0x7fffb3bfd1b0, flags=5) at >> /home/mbenjamin/dev/rgw/nfs-ganesha/src/FSAL/Stackable_FSALs/FSAL_MDCACHE/mdcache_up.c:47 >> 47 struct req_op_context *save_ctx, req_ctx = {0}; >> (gdb) n >> 49 struct mdcache_fsal_export *myself = mdc_export(export); >> (gdb) n >> 51 req_ctx.fsal_export = &myself->export; >> (gdb) n >> 52 save_ctx = op_ctx; >> (gdb) n >> 53 op_ctx = &req_ctx; >> (gdb) n >> 55 key.fsal = export->sub_export->fsal; >> (gdb) n >> >> Program received signal SIGSEGV, Segmentation fault. >> 0x0000000000521363 in mdc_up_invalidate (export=0x7ffff4493700, >> handle=0x7fffb3bfd1b0, flags=5) >> at >> >> /home/mbenjamin/dev/rgw/nfs-ganesha/src/FSAL/Stackable_FSALs/FSAL_MDCACHE/mdcache_up.c:55 >> 55 key.fsal = export->sub_export->fsal; >> (gdb) p export >> $5 = (struct fsal_export *) 0x7ffff4493700 >> (gdb) p export->sub_export >> $6 = (struct fsal_export *) 0x0 >> >> -- >> Matt Benjamin >> Red Hat, Inc. >> 315 West Huron Street, Suite 140A >> Ann Arbor, Michigan 48103 >> >> http://www.redhat.com/en/technologies/storage >> >> tel. 734-821-5101 >> fax. 734-769-8938 >> cel. 734-216-5309 >> > ------------------------------------------------------------------------------ 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