Notes:
All fuse operations are implemented. ioctl() and poll() are untested,
thus, probably won't work properly. Please contact me if you can test
these features, now I have a little bit more time for the project.
Itegrated features from other folks' patches. Thanks for Grant Gardner
(GG) and Yonatan Maman (YM)
Pathces:
YM-1: ruby_19_yonatan.pathc
* allow rfuse-ng to compile under ruby 1.9.2
This version actually does not compile. But good try. Maybe later.
GG-1: 0001-allow-nil-for-readder-filler.patch
* allow readdir to push "nil" as the stat value into filler (fuse will
then call getattr() when required)
* allow open to place a ruby object into fuse_file_info->fh and be
cleaned up again in release
GG-2: 0002-exception-backtraces-and-ruby-filehandle-object-in-o.patch
* tweak the error handling to log the caught exception and its
backtrace
* The error handling part will not print any output if the thrown
exception responds_to?(:errno) since I gather that would be expected
(eg ENOENT)
GG-3: 0003-Add-fd-and-process-calls-to-RFuse-object.patch
This one allows you to run the event loop in ruby instead of calling
fuse_loop() which is useful if you want to install your own signal handlers
and cleanup nicely if fuse is unmounted externally.
eg...
def FuseFS.run
unless @fuse
raise "fuse is not mounted
end
begin
#Get the /dev/fuse fd
io = IO.for_fd(@fuse.fd)
rescue Errno::EBADF
raise "fuse not mounted"
end
@running = true
while @running
begin
IO.select([io])
# Process a fuse command, returns -1 if fuse has been
unmounted remotely.
if (@fuse.process() < 0)
@running = false
end
rescue Errno::EBADF
#We've tried to select on a dead fd...
@running = false
end
end
end
BUGS to fix:
Parameters are not handled correctly to fuse_mount, see test-ruby.rb
for details.
Changes:
All fuse operations are implemented. ioctl() and poll() are untested,
thus, probably won't work properly. Please contact me if you can test
these features, now I have a little bit more time for the project.
Itegrated features from other folks' patches. Thanks for Grant Gardner
(GG) and Yonatan Maman (YM)
Pathces:
YM-1: ruby_19_yonatan.pathc
* allow rfuse-ng to compile under ruby 1.9.2
This version actually does not compile. But good try. Maybe later.
GG-1: 0001-allow-nil-for-readder-filler.patch
* allow readdir to push "nil" as the stat value into filler (fuse will
then call getattr() when required)
* allow open to place a ruby object into fuse_file_info->fh and be
cleaned up again in release
GG-2: 0002-exception-backtraces-and-ruby-filehandle-object-in-o.patch
* tweak the error handling to log the caught exception and its
backtrace
* The error handling part will not print any output if the thrown
exception responds_to?(:errno) since I gather that would be expected
(eg ENOENT)
GG-3: 0003-Add-fd-and-process-calls-to-RFuse-object.patch
This one allows you to run the event loop in ruby instead of calling
fuse_loop() which is useful if you want to install your own signal handlers
and cleanup nicely if fuse is unmounted externally.
eg...
def FuseFS.run
unless @fuse
raise "fuse is not mounted
end
begin
#Get the /dev/fuse fd
io = IO.for_fd(@fuse.fd)
rescue Errno::EBADF
raise "fuse not mounted"
end
@running = true
while @running
begin
IO.select([io])
# Process a fuse command, returns -1 if fuse has been
unmounted remotely.
if (@fuse.process() < 0)
@running = false
end
rescue Errno::EBADF
#We've tried to select on a dead fd...
@running = false
end
end
end
BUGS to fix:
Parameters are not handled correctly to fuse_mount, see test-ruby.rb
for details.
|