patches for ninefs/npfs, however little progress

8 views
Skip to first unread message

Georg Lehner

unread,
Apr 4, 2010, 7:45:11 AM4/4/10
to nin...@googlegroups.com
Hello!

while trying to figure out what problem is causing Visio to not open
files on ninefs
i have worked through almost the whole ninefs.c and touched even npfs.

In ninefs.c i added to the debugging facilities by implementing two
levels of debugging output. '-d' gives
diagnostic output when an error condition is found and a second '-d'
prints traces of all Dokan function
calls. The trace output is prefixed with the Dokan Context, so one can
follow operation on one file
handle. For the _CreateFile function i have implemented an extensive
dissection of the various parameters

Next cvtError() has been extented to handle and diagnose more error
return values form npfs.

toFileInfo() and toFindData() implement a first attempt to feedback a
"Read Only" attribute to Windows
if we have no rights to write a specific file.

I fiddled with DokanFileInfo->IsDirectory, and it seems not to hurt
except in _CreateFile.

_GetVolumeInformation() seemed easy to implement, but breaks even
listing a directory from the
commandline,(?!) - never mind, maybe a Dokan issue.

Handling generic acess modes in _CreateFile does also not work out.

_LockFile and _UnlockFile have been tempered with, but this i will tell
in another post.

- - -

Since cvtError() returned consistently '-1' for different error
conditions, i went over to
npfs/libnpfsclient and npfs/libnpfs. Since npc_create() was the first
candidate to review, i walked the
call-paths through and checked every place for (un)sensible error
codes. On my way i found some
unhandled error situations (open.c, walk.c, fsys.c) and tried to do
something sensible about them.

The source of the indiscriminate '-1' error conditions however was the
deserialization of Rerror messages
received from the server. I guessed, that the task of libnpfs as a
"Plan9 to Unix/Windows" adaption
library should be to interpret information from Plan9 to Unix (sic) and
put a simpleminded mapper
routine into npfs/libnpfs/np.c which does just this for some ename's
encountered along the way.

- - -

You can download the respective patches, tagged as "Episode" 5 at
http://www.magma.com.ni/sw/ninefs

ninefs5.exe .. executable
ninefs5.c .. source file
ninefs12_jorge5.patch .. svn patch against revision 12 of ninefs
npfs58_jorge5.patch .. svn patch against revision 58 of npfs
ntmake.cmd .. put into the npfs directory. If run in a "Windows XP x86
Checked Build Environment"
Dos box, npfs is rebuilt.

- - -

While i hope, that all the work makes ninefs (and npfs) a little bit
more stable, it is rather despairing
that ninefs is not really usable yet:

- Visio can still not open or create files on ninefs
- When copying a large file tree, ninefs keeps crashing

Regards,

Jorge-Le�n


Reply all
Reply to author
Forward
0 new messages