From: Paul N. <pa...@ps...> - 2009-01-19 23:23:16
|
So I think I've solved my problem. It seems that I was unclear on the fuse_reply_* api. I was using fuse_reply_entry() instead of fuse_reply_create()! I'm still new to the low level routines so I'm not surprised I made this mistake. However, debugging would have been easier had fuse not accepted a reply from what turned out to be the incorrect function. paul Paul Nowoczynski wrote: > Hi, > I'm working on a low-level interface and I've come across a problem with > create() ops where my app sees an EIO. The filesystem backend appears > to perform the correct operations and the fuse lib reports a 0 rc before > reporting to the kernel. > > After confirming that I was returning the correct inode number and mode, > I did some digging and discovered that the problem is in kernel/dev.c. > The copy_out_args() call is returning -EINVAL because this test is failing: > > if (reqsize < nbytes || (reqsize > nbytes && !out->argvar)) > return -EINVAL; > > Using printk I obtained the values for reqsize and friends: > reqsize=152 nbytes=136 out->argvar=0 > > I have a feeling that this error is being caused by an inconsistency > between the fuse kernel module and the library or headers. But I've > verified that kernel module, libs, and headers are all based on the same > version (2.7.2). > > Does anyone have a good suggestion? I'm running a suse kernel - > 2.6.16-27-0.9 and I doubt that upgrading it is an option.. > thanks, > paul > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by: > SourcForge Community > SourceForge wants to tell your story. > http://p.sf.net/sfu/sf-spreadtheword > _______________________________________________ > fuse-devel mailing list > fus...@li... > https://lists.sourceforge.net/lists/listinfo/fuse-devel > |