summaryrefslogtreecommitdiff
path: root/daemon/mount.c
Commit message (Collapse)AuthorAgeFilesLines
* mount: Replace deprecated functionwip/oholy/ci-libsoup3Ondrej Holy2021-10-151-1/+1
| | | | | | The `g_spawn_check_exit_status` function is deprecated now and `g_spawn_check_wait_status` should be used instead. Let's make that change and bump the glib dependency accordingly.
* admin: Fix mount operation hang caused by pkexec failureOndrej Holy2021-06-071-1/+25
| | | | | | | | | Currently, the mount operation for the admin backend can hang when the authentication dialog is dismissed for example. This is because `pkexec` exits before spawning the `gvfsd-admin` daemon. Let's catch that case and return the "Permission denied" error. Fixes: https://gitlab.gnome.org/GNOME/gvfs/-/issues/565
* daemon: Prevent spawning new daemons if outgoing operation existsOndrej Holy2018-11-191-0/+26
| | | | | | | | | | | | | | | | A new daemon is always spawned if MountLocation method (or LookupMount for automounted) is called and the respective mount isn't registered yet. This is not usually an issue, because the redundant daemons are consequently terminated. However, this is a problem if mount operations hang for some reason. This may happen e.g. with trash backend due to stale NFS mounts. Consequently, new and new daemons are spawned which may lead to system failures due to lack of system resources. See the following downstream bug report: https://bugzilla.redhat.com/show_bug.cgi?id=1632960 Let's fix that behavior simply by preventing spawning of new daemons if respective outgoing mount operations exist. https://gitlab.gnome.org/GNOME/gvfs/merge_requests/19
* daemon: Fix admin backend spawningOndrej Holy2018-02-161-6/+28
| | | | | | | | | pkexec fails on some systems with "Refusing to render service to dead parents.", which is caused by double forking when spawning the process. Let's prevent this by G_SPAWN_DO_NOT_REAP_CHILD flag and clean up manually using g_child_watch_add. https://bugzilla.gnome.org/show_bug.cgi?id=793445
* admin: Require mounting for each client explicitlyOndrej Holy2017-08-041-3/+34
| | | | | | | | | | | | | | | | | | | | | | The admin backend is pretty special, because it can't use GMountOperation for authorization and polkit prompt is shown for each client. This leads to unwanted behavior because the admin prompt might be shown unexpectedly (e.g. when obtaining info for recently used files). Let's require mounting explicitly for each client. So each client gets G_IO_ERROR_NOT_MOUNTED if it hasn't called g_file_mountable_mount before. It works nicely for most of the apps which I tested (e.g. with Nautilus, GEdit, Totem, Evince, GIMP, LibreOffice). However, this requires changes for some applications, which expects that the file is already mounted (e.g. EOG). Unfortunatelly, it breaks utils like "gio list" because it fails with "The specified location is not mounted" error and "gio mount admin:///" doesn't help, because it has different PID. This isn't ideal, but it is better than the unexpected password prompts... https://bugzilla.gnome.org/show_bug.cgi?id=771285
* Do not sent user invisible mounts if not neededOndrej Holy2017-06-061-6/+37
| | | | | | | | | | | g_volume_monitor_get() might be really slow if there is too many mounts, because the list of the mounts is send over D-Bus. It can simply happen due to user invisible mounts, e.g. http. User invisible mounts are ignored by the volume monitor, so it is useless to send them over D-Bus. Improve the D-Bus API and don't send the user invisible mounts if it is not needed. https://bugzilla.gnome.org/show_bug.cgi?id=775600
* Add missing newline characters in g_debugOndrej Holy2016-12-151-1/+1
| | | | | | | Unfortunately, g_debug uses custom handler in GVfs which requires additional new line character. Commit a7b0a65 and commit 1d67090 changed g_warning to g_debug, but forgot to add additional new line characters.
* mount: Do not spam journal by useless warningsOndrej Holy2016-12-151-1/+1
| | | | | | | | | | The following warning is printed if mount failed from whatever reason: dbus_mount_reply: Error from org.gtk.vfs.Mountable.mount(): ... It is expected that mount may fail for various reasons and it is not definitely anything critical what needs to be always printed. It happens regularly with smbbrowse, whenf we are not in smb environment, or the workgroup is misconfigured. Let's use g_debug instead of g_warning.
* daemon: Allow controlling debug output from main daemonRoss Lagerwall2016-01-181-1/+8
| | | | | | | | | | | | | | | | | | Allow controlling whether backends spawned from the main daemon start with debug output enabled by adding a --debug command-line parameter and responding to the SIGUSR2 signal. Note that sending SIGUSR2 to the main daemon does not affect any already spawned backends. E.g. to capture the login debugging from the sftp backend without having to restart the main daemon: $ pkill -x -USR2 gvfsd $ gvfs-mount sftp://... $ journalctl -n 40 If --debug is given on the command-line, debug output is enabled for spawned daemons by default. Sending SIGUSR2 will then turn it off. https://bugzilla.gnome.org/show_bug.cgi?id=740660
* mount: fix compilation warningOndrej Holy2013-09-261-1/+0
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=591228
* Fix some compiler warningsTomas Bzatek2013-02-061-1/+2
|
* daemon: Implement proper org.gtk.vfs.MountTracker.UnregisterMount()Tomas Bzatek2013-02-051-1/+26
| | | | | | | | | | | | | | | | | | | | | | | | A proper unmount method was missing from the daemon interface as it was basically not needed. The mount tracker was watching mounts on the bus and if child disappeared, that event was treated as unmount. With recent introduction of gvfs test suite we started using man-in-the-middle program for connecting to private SMB server. However, certain libsmbclient versions are forking gvfs backends (gvfsd-smb in this case) which makes d-bus confused and name owner tracking doesn't work as expected. Moreover the forked process got stuck due to internal samba LIBSMB_PROG handling after the original process did its job and unmount was triggered from user side. The original process exited just fine but the forked one was blocking the name on the bus probably and gvfs mount tracker was fooled. Eventually the stuck libsmbclient call times out and exits gracefully. This happens with samba-3.6.9 This patch adds proper unmount call to indicate the backend is going away so even if there are leftovers, user is indicated a proper unmount. https://bugzilla.gnome.org/show_bug.cgi?id=691568
* Use g_list_free_full() where applicableTomas Bzatek2013-01-171-2/+1
|
* Allow specifying directory and extensions for mount filesAlexander Larsson2012-10-121-2/+11
| | | | | This will be used by the test framework to run tests against the in-tree build.
* Don't use the display name to make the unique mount pointWilliam Jon McCann2012-08-301-7/+2
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=682878
* Add support for getting symbolic iconsWilliam Jon McCann2012-08-301-2/+7
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=681458
* Strip dbus error strings from GError after all dbus calls.Alexander Larsson2012-08-241-0/+1
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=682384
* Fix races when mounting the same mount in parallel.Alexander Larsson2012-08-231-5/+23
| | | | | | | | Whenever we get ALREADY_MOUNTED during a mount we just treat it as a success. This fixes for instance multiple parallel calls to automounted mounts like http.
* gdbus: Remove debug printsTomas Bzatek2012-07-311-32/+0
|
* gdbus: Use casting macros where possibleTomas Bzatek2012-07-311-1/+1
|
* gdbus: Use g_clear_object() where appropriateTomas Bzatek2012-07-311-2/+1
|
* gdbus: Construct proxies without connecting signals and propertiesTomas Bzatek2012-07-311-1/+1
| | | | | Use G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS and G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES flags where applicable.
* gdbus: Fix mount tracker signals emittingTomas Bzatek2012-07-311-41/+5
| | | | This allows clients to react on GVfs mounts appearing and disappearing.
* gdbus: Treat empty non-NULL strings for the "ay" type as NULLTomas Bzatek2012-07-311-1/+1
| | | | | | | | | | A fallout of port away from convenient G_DBUS_TYPE_CSTRING type and _g_dbus_message_append_args() + _g_dbus_message_iter_get_args() functions that masked NULL strings as non-NULL empty strings ("") for transferring over d-bus and on the other side reconstructed the original value. Portions of other code treat non-NULL strings differently even if they were empty. This fixes e.g. opening http URLs via gvfs-open.
* gdbus: Silence unmount failuresTomas Bzatek2012-07-311-0/+1
| | | | | | | | | | ...and fix wrong typecast due to using an object we haven't reff'ed. The failure we're making silent were coming from a failed d-bus call to mount tracker. Also turned out the org.gtk.vfs.MountTracker.unregisterMount() has never been implemented, daemon mounttracker is watching for clients disconnects anyway.
* gdbus: Tweak mount finalizationTomas Bzatek2012-07-311-4/+20
|
* gdbus: Handle not yet spawned mountablesTomas Bzatek2012-07-311-14/+9
| | | | This makes http backend working again.
* gdbus: Fix mismerged structTomas Bzatek2012-07-311-2/+3
|
* gdbus: Core daemon and client portTomas Bzatek2012-07-311-721/+494
| | | | | | | | | | | Port of most of the gvfs core, few bits still missing. Lot of debug prints around, will be removed in further commits. Same amount of TODOs and FIXMEs. Notes: * kill serials? * get rid of mainloops where applicable (copy/move progress callback, enumerator) * fix keyring integration * use gdbus builtin fd passing within gvfsdaemon.c, kill the extra_fd stuff
* Update the Address of the FSFFelix Möller2012-07-301-2/+2
| | | | | | | | | | | | | | | Updating the address of the FSF. This has been done by: while read file; do sed -i 's:59 Temple Place:51 Franklin Street:' $file sed -i 's:Suite 330:Fifth Floor:' $file sed -i 's:02111-1307:02110-1301:' $file done https://bugzilla.gnome.org/show_bug.cgi?id=656598 Signed-off-by: Tomas Bzatek <tbzatek@redhat.com>
* Keep using ~/.gvfs as fallbackAlexander Larsson2012-03-151-1/+5
| | | | | | | | If runtime dir is not specifically set we don't fall back to ~/.cache/gvfs, as that unnecessarily invalidates all existing documentation and scripts using ~/.gvfs. However, if it is set, we still use it.
* Use user runtime dir for gvfs mountsWilliam Jon McCann2012-02-071-1/+1
| | | | | | https://bugzilla.gnome.org/show_bug.cgi?id=646391 Signed-off-by: Tomas Bzatek <tbzatek@redhat.com>
* daemon: Do not unref NULL mount specTomas Bzatek2011-11-141-1/+2
| | | | This is going away with GDBus port, but still...
* Remove duplicate include of glib.hKjartan Maraas2011-05-241-1/+0
|
* Don't leak dbus messagesAlexander Larsson2011-04-151-7/+21
| | | | | We're missing a lot of dbus_message_unref after sending messages, add them.
* Cleanups and fixes for compiler warningsKjartan Maraas2011-03-171-1/+1
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=641856
* Rename gdbusutils.h to avoid conflict with GIO1.6.2Matthias Clasen2010-05-271-1/+1
| | | | This makes gvfs build with recent glib again, see bug #619537
* Fix warningAlexander Larsson2009-12-011-1/+2
|
* Add "default location" support for mountsChristian Kellner2009-11-261-3/+15
| | | | | | | | | | | The "default location" of the given mount is a path that reflects the main entry point for the user (e.g. the home directory, or the root of the volume). Backends can use g_vfs_backend_set_default_location () to set the default location (before registering the mount). https://bugzilla.gnome.org/show_bug.cgi?id=561998
* Convert all spew to g_debug()Alexander Larsson2009-03-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2009-03-06 Alexander Larsson <alexl@redhat.com> * daemon/daemon-main.c: * daemon/gvfsbackend.c: * daemon/gvfsbackendburn.c: * daemon/gvfsbackenddav.c: * daemon/gvfsbackendhttp.c: * daemon/gvfsbackendobexftp.c: * daemon/gvfsbackendtrash.c: * daemon/gvfsdaemon.c: * daemon/gvfsjobcloseread.c: * daemon/gvfsjobclosewrite.c: * daemon/gvfsjobcopy.c: * daemon/gvfsjobdbus.c: * daemon/gvfsjobenumerate.c: * daemon/gvfsjobmount.c: * daemon/gvfsjobmove.c: * daemon/gvfsjobpull.c: * daemon/gvfsjobpush.c: * daemon/gvfsjobread.c: * daemon/gvfsjobseekread.c: * daemon/gvfsjobseekwrite.c: * daemon/gvfsjobunmount.c: * daemon/gvfsjobwrite.c: * daemon/mount.c: Convert all spew to g_debug() svn path=/trunk/; revision=2297
* Bug 563788 – GNOME Goal: Clean up GLib and GTK+ includesBastien Nocera2009-02-051-1/+1
| | | | | | | | | | | | | | | | | | 2009-02-05 Bastien Nocera <hadess@hadess.net> Bug 563788 – GNOME Goal: Clean up GLib and GTK+ includes * client/gvfsuriutils.h: * daemon/gvfsbackendburn.c: * daemon/gvfsbackendcomputer.c: * daemon/gvfsbackenddnssd.c: * daemon/gvfsbackendnetwork.c: * daemon/gvfsdaemonutils.c: * daemon/mount.c: Fix build for single GTK+ include, patch from Luis Menina <liberforce@freeside.fr> (Closes: #563788) svn path=/trunk/; revision=2201
* Reverse map fuse paths to gvfs uris in g_file_new_for_path().Alexander Larsson2008-09-261-15/+88
| | | | | | | | | | | | | | 2008-09-26 Alexander Larsson <alexl@redhat.com> * client/gdaemonvfs.[ch]: * common/gvfsdaemonprotocol.h: * daemon/mount.c: Reverse map fuse paths to gvfs uris in g_file_new_for_path(). svn path=/trunk/; revision=2031
* Use g_set_error_literal where appropriate. Bug #539167.Christian Persch2008-08-021-5/+5
| | | | svn path=/trunk/; revision=1847
* Add x-content/* support to daemon mounts. Right now a backend can only setDavid Zeuthen2008-07-291-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2008-07-29 David Zeuthen <davidz@redhat.com> * client/gdaemonmount.c: * common/gmounttracker.c: * common/gmounttracker.h: * daemon/gvfsbackend.c: * daemon/gvfsbackend.h: * daemon/gvfsbackendcdda.c: * daemon/gvfsbackendgphoto2.c: * daemon/mount.c: Add x-content/* support to daemon mounts. Right now a backend can only set the x-content/* type ahead of time. We might want to add support dynamically obtaining it too (e.g. support force_rescan). * monitor/hal/ghalmount.c: * monitor/hal/ghalvolume.c: * monitor/hal/ghalvolumemonitor.c: * monitor/hal/hal-utils.c: * monitor/hal/hal-utils.h: Add x-content/* support to the HAL volume monitor. * monitor/proxy/gproxymount.c: * monitor/proxy/gproxymount.h: * monitor/proxy/gproxyvolumemonitor.c: * monitor/proxy/gproxyvolumemonitor.h: * monitor/proxy/gvfsproxyvolumemonitordaemon.c: Add x-content/* support to proxy volume monitor. Also fix a number of bugs the initial implementation had. * programs/gvfs-mount.c: Print out x-content-types. svn path=/trunk/; revision=1845
* Fix memory leak.Carlos Garcia Campos2008-03-031-0/+1
| | | | | | | | | 2008-03-03 Carlos Garcia Campos <carlosgc@gnome.org> * daemon/mount.c: (read_mountable_config): Fix memory leak. svn path=/trunk/; revision=1513
* Add _g_dbus_message_iter_append_args_valist andAlexander Larsson2008-03-031-0/+113
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2008-03-03 Alexander Larsson <alexl@redhat.com> * common/gdbusutils.[ch]: Add _g_dbus_message_iter_append_args_valist and _g_dbus_message_iter_append_args. * common/gvfsdaemonprotocol.h: Add G_VFS_DBUS_MOUNTTRACKER_OP_LIST_MOUNTABLE_INFO * client/Makefile.am: * client/gdaemonvfs.c: Use listMountableInfo to get supported uri schemes and information for default uri handling. Handle default port in uris and if host_is_inet normalize hostnames, including removing ipv6 brackets. * client/sftpuri.c: Removed, as the previous work replaces it * daemon/gvfsdaemonutils.c: (gvfs_file_info_populate_content_types): Fix uninitialized variable warning. * daemon/mount.c: Read new mountfile info and implement list_mountable_info. * daemon/sftp.mount.in: Add info for sftp svn path=/trunk/; revision=1508
* Save errno befor making other calls. Be safe when calling g_set_error()Alexander Larsson2008-02-111-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 2008-02-11 Alexander Larsson <alexl@redhat.com> * client/gdaemonfile.c: * client/gdaemonfileinputstream.c: * client/gdaemonfileoutputstream.c: * common/gsysutils.c: * common/gvfsdaemonprotocol.c: * daemon/gvfsbackendburn.c: * daemon/gvfsbackendcdda.c: * daemon/gvfsbackenddav.c: * daemon/gvfsbackendsftp.c: * daemon/gvfsbackendsmb.c: * daemon/gvfsbackendsmbbrowse.c: * daemon/gvfsbackendtest.c: * daemon/gvfsdaemonutils.c: * daemon/gvfsjob.c: * daemon/mount.c: * daemon/pty_open.c: Save errno befor making other calls. Be safe when calling g_set_error() Patch from Christian Persch (#514822) svn path=/trunk/; revision=1254
* Update for releaseAlexander Larsson2008-01-211-2/+0
| | | | | | | | | | | | | | | | | | 2008-01-21 Alexander Larsson <alexl@redhat.com> * NEWS: Update for release * daemon/Makefile.am: * daemon/main.c: Autospawn fuse on daemon start. * daemon/mount.c: (read_mountable_config): Remove debug spew svn path=/trunk/; revision=1158
* Reload the list of mountables on SIGUSR1Alexander Larsson2008-01-211-0/+59
| | | | | | | | | | 2008-01-21 Alexander Larsson <alexl@redhat.com> * daemon/mount.c: Reload the list of mountables on SIGUSR1 svn path=/trunk/; revision=1156
* Add the cdda:// backend for Compact Disc Digital Audio discs.David Zeuthen2007-12-191-4/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2007-12-19 David Zeuthen <davidz@redhat.com> Add the cdda:// backend for Compact Disc Digital Audio discs. Allow a backend to specify the fuse name directly instead of using the display name Make GDaemonVolumeMonitor and GDaemonMount use the new adopt_orphan_mount() function on GVolumeMonitor in gio. Also, since a GMount now can be associated with a GVolume, implement eject(). Add a new gvfs-less program. Make gvfs-mount capable of unmounting as well. HAL backend changes: attempt to unmount all mounts from enclosing volumes and fail the ejection if one of the unmount operations fails. Use new adopt_orphan_mount() from gio to adopt cdda:// volumes for audio discs. Emit the 'eject-button' signal on GDrive. Various other fixes. * client/gdaemonfile.c: (g_daemon_file_find_enclosing_mount): * client/gdaemonmount.c: (g_daemon_mount_finalize), (g_daemon_mount_new), (g_daemon_mount_get_volume), (g_daemon_mount_get_drive), (g_daemon_mount_can_eject), (foreign_volume_removed), (g_daemon_mount_set_foreign_volume), (eject_wrapper_callback), (g_daemon_mount_eject), (g_daemon_mount_eject_finish), (g_daemon_mount_mount_iface_init): * client/gdaemonmount.h: * client/gdaemonvolumemonitor.c: (mount_added), (mount_removed), (g_daemon_volume_monitor_init): * client/gvfsfusedaemon.c: (file_handle_close_stream), (free_file_handle_for_path), (mount_record_new): * common/gmounttracker.c: (g_mount_info_dup), (g_mount_info_unref), (g_mount_info_from_dbus): * common/gmounttracker.h: * configure.ac: * daemon/Makefile.am: * daemon/gvfsbackend.c: (g_vfs_backend_finalize), (g_vfs_backend_init), (g_vfs_backend_set_fuse_name), (g_vfs_backend_get_fuse_name), (g_vfs_backend_register_mount): * daemon/gvfsbackend.h: * daemon/gvfsjobunmount.c: (unregister_mount_callback), (send_reply): * daemon/mount.c: (vfs_mount_free), (vfs_mount_to_dbus), (register_mount), (list_mounts): * hal/ghaldrive.c: (g_hal_drive_finalize), (hal_condition), (g_hal_drive_new), (spawn_cb), (g_hal_drive_eject_do), (free_unmount_mounts_op), (_eject_unmount_mounts_cb), (_eject_unmount_mounts), (g_hal_drive_eject): * hal/ghalmount.c: (g_hal_mount_finalize), (unmount_cb), (unmount_read_error), (unmount_do), (g_hal_mount_unmount), (eject_wrapper_callback), (g_hal_mount_eject), (g_hal_mount_eject_finish): * hal/ghalvolume.c: (g_hal_volume_finalize), (do_update_from_hal), (g_hal_volume_new), (g_hal_volume_get_mount), (foreign_mount_unmounted), (g_hal_volume_adopt_foreign_mount), (g_hal_volume_has_foreign_mount_root), (spawn_cb), (mount_foreign_callback), (g_hal_volume_mount), (g_hal_volume_mount_finish), (eject_wrapper_callback), (g_hal_volume_eject), (g_hal_volume_eject_finish): * hal/ghalvolume.h: * hal/ghalvolumemonitor.c: (adopt_orphan_mount), (g_hal_volume_monitor_class_init), (update_volumes), (update_mounts), (update_discs): * hal/hal-device.c: (hal_device_class_init), (_hal_device_hal_condition): * hal/hal-device.h: * hal/hal-marshal.list: * hal/hal-pool.c: (hal_pool_class_init), (_hal_condition), (hal_pool_new): * hal/hal-pool.h: * programs/Makefile.am: * programs/gvfs-mount.c: (unmount_done_cb), (unmount), (main): svn path=/trunk/; revision=1052