After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 538264 - Want better zip performance and support
Want better zip performance and support
Status: RESOLVED WONTFIX
Product: gvfs
Classification: Core
Component: archive backend
unspecified
Other Linux
: Normal enhancement
: ---
Assigned To: gvfs-maint
gvfs-maint
Depends on:
Blocks:
 
 
Reported: 2008-06-14 06:52 UTC by Alexander Doe
Modified: 2014-03-24 23:48 UTC
See Also:
GNOME target: ---
GNOME version: Unversioned Enhancement


Attachments
fuse-zip and gvfs-fuse performance comparison (1.83 KB, text/plain)
2008-06-14 06:53 UTC, Alexander Doe
Details

Description Alexander Doe 2008-06-14 06:52:08 UTC
I want to suggest rewriting gvfs's zip slave with fuse-zip backend. fuse-zip if a FUSE file system for ZIP archivez with write support. You can download it at http://fuse-zip.googlecode.com. At this moment FUSE are present for linux 2.4.x, 2.6.x, FreeBSD, Solaris, Mac OS X. There are experimental implementations for Microsoft Windows platform.

Unlike current archive backend, fuse-zip provides a full access to ZIP archive including write support.

As shown with tests, accessing archive with fuse-zip are many times faster than accessing it vis gvfs-fuse.
Comment 1 Alexander Doe 2008-06-14 06:53:48 UTC
Created attachment 112720 [details]
fuse-zip and gvfs-fuse performance comparison
Comment 2 Alexander Larsson 2008-09-25 12:50:26 UTC
You can't just use another fuse filesystem as backing for a gvfs backend. However, it would be possible to (re)use the same zip code that fuse-zip uses. 
Comment 3 Alexander Doe 2008-09-25 16:22:56 UTC
> You can't just use another fuse filesystem as backing for a gvfs backend.

Why? I think that it is very simple: you need simply redirect vfs calls to real filesystem operations.
Comment 4 David Zeuthen (not reading bugmail) 2008-09-25 16:45:09 UTC
(In reply to comment #3)
> > You can't just use another fuse filesystem as backing for a gvfs backend.
> 
> Why? I think that it is very simple: you need simply redirect vfs calls to real
> filesystem operations.
> 

Some questions for brainstorming

 - How many extra context switches is this going to add?
 - How easy will it be to maintain / debug?

If you think hard about these and other issues I think you're going to end up agreeing with what Alex said in comment 2.
Comment 5 Alexander Doe 2008-09-25 18:08:30 UTC
> How many extra context switches is this going to add?

As you can find in performance comparison, fuse-zip is faster than current zip implementation in gvfs even with extra context switches.

> How easy will it be to maintain / debug?

Also you can write "glue" code to redirect vfs calls to real filesystem _once_ and use it with many FUSE file systems.

About debugging: because all operations with zip file structure located in a separate process, it is easy to locate bugs in both gvfs module and fuse filesystem.
Comment 6 Alexander Larsson 2009-03-10 16:17:51 UTC
Its not *impossible* to make a backend that mounts a zip file with another fuse filesystem and proxy everything to that. Its just a very bad idea. It won't work on things not supporting fuse. It will use multiple levels of indirection causing problems both wrt performance and behaviour.

I'm not against having better zip support, but using fuse-zip for it is not gonna happen.
Comment 7 Alexander Doe 2009-03-10 17:26:21 UTC
I think that the majority of virtual file systems provided by gvfs are covered by FUSE-based file systems.
So, the easiest way is using FUSE for all cases. AFAIK, migration can be done transparently because any gvfs filesystem can be mounted over FUSE.
Comment 8 Bastien Nocera 2009-03-11 01:07:58 UTC
(In reply to comment #7)
> I think that the majority of virtual file systems provided by gvfs are covered
> by FUSE-based file systems.

And would be badly integrated when used with gvfs. And wouldn't work on systems where fuse isn't available.

> So, the easiest way is using FUSE for all cases. AFAIK, migration can be done
> transparently because any gvfs filesystem can be mounted over FUSE.

Which isn't possible, as mentioned above.
Comment 9 Tomas Bzatek 2010-03-30 13:14:18 UTC
FYI, zip support in libarchive continues to grow and stabilizes every release, recently a write support has been added (see related bug 589617). Better to fix bugs in libarchive directly than porting to different filesystem. Libarchive 3.0 is planned to be released in half a year and noticeable performance boost is expected.
Comment 10 Ildar 2011-07-11 10:44:13 UTC
(In reply to comment #5)
> Also you can write "glue" code to redirect vfs calls to real filesystem _once_
> and use it with many FUSE file systems.

Alexander,
you'd better:
1. write a script for mounting FUSE (1)
2. vote for nautilus support of unmounting FUSE (2)

That would be more clear approach.

(1) Just like mine: http://johan-notes.blogspot.com/2011/07/isomountsh-iso.html
(2) https://bugzilla.gnome.org/show_bug.cgi?id=607706
Comment 11 Ross Lagerwall 2014-03-24 23:48:36 UTC
Closing as WONTFIX. See bug 589682 for a bug about improving archive performance.