Package: gphotofs
Version: 0.4.0-3
Severity: normal

Hello,

I noticed that when something is loading large files from a gphotofs
mounted directory, all access to that directory is frozen. I.e. any
other FUSE operation on that dir gets locked.

I had a look with strace at what is happening there and found that an
"open" call of some client program to a file is stuck (means: openat
function of the fuse module). While the "open" call is not finished, the
memory usage of gphotofs process is growing, untill suddenly openat is
released and then the data flows in a storm from the memory buffer to
the reading process. And only then the fuse filesystem is released, all
other processes that were hung at that directory are released and can
continue.

Then I had a look at the gphotofs.c and found the confirmation. The
authors are using gp_camera_file_get right in the open implementation,
instead of gp_camera_file_get_info.

I guess they are doing it because it's the only way to read data and
there is no API function for partial data read which could be used in
the "read" implementation later. But then... please, do NOT read the
whole thing in the _open_ call. _open_ is supposed to be quick. Please
shift the file reading code into the first read call.

Regards,
Eduard.

PS: I had a closer look at libgphoto and apparently there is really no
concept of a streaming object or any other preparation for partial
reads without using memory buffers. It's not even possible to specify a
custom allocator (where somebody could use mmap to create a buffer).
So... yeah, multi-gigabyte video files are happy to be rotated through
the VM swap if the user does not have gigabytes of RAM (NOT).


-- System Information:
Debian Release: 6.0
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.37-rc7-git2 (SMP w/4 CPU cores; PREEMPT)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages gphotofs depends on:
ii  fuse-utils                  2.8.4-1.1    Filesystem in USErspace (utilities
ii  libc6                       2.11.2-7     Embedded GNU C Library: Shared lib
ii  libexif12                   0.6.19-1     library to parse EXIF files
ii  libfuse2                    2.8.4-1.1    Filesystem in USErspace library
ii  libglib2.0-0                2.24.2-1     The GLib library of C routines
ii  libgphoto2-2                2.4.10.1-0.1 gphoto2 digital camera library
ii  libgphoto2-port0            2.4.10.1-0.1 gphoto2 digital camera port librar
ii  libusb-0.1-4                2:0.1.12-16  userspace USB programming library

gphotofs recommends no packages.

gphotofs suggests no packages.

-- no debconf information

-- 
<elominat> gibts eigentlich einen noob chan??
<Kane32> das ganze quakenet



-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Reply via email to