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

Reply via email to