gstreamer/plugins/elements
Sebastian Dröge eec9bd8db3 filesink: Implement workaround for some (network) filesystems that spuriously return EACCES on write
This seems to happen when another client is accessing the file at the
same time, and retrying after a short amount of time solves it.

Sometimes partial data is written at that point already but we have no
idea how much it is, or if what was written is correct (it sometimes
isn't) so we always first seek back to the current position and repeat
the whole failed write.

It happens at least on Linux and macOS on SMB/CIFS and NFS file systems.

Between write attempts that failed with EACCES we wait 10ms, and after
enough consecutive tries that failed with EACCES we simply time out.

In theory a valid EACCES for files to which we simply have no access
should've happened already during the call to open(), except for NFS
(see open(2)).

This can be enabled with the new max-transient-error-timeout property, and
a new o-sync boolean property was added to open the file in O_SYNC mode
as without that it's not guaranteed that we get EACCES for the actual
writev() call that failed but might only get it at a later time.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/305
2019-05-16 14:15:02 +03:00
..
.gitignore ignore more 2005-06-17 09:12:33 +00:00
gstcapsfilter.c Port to hotdoc 2019-05-13 16:34:09 -04:00
gstcapsfilter.h capsfilter: optimisation: avoid unnecessary gst_pad_has_current_caps() checks 2016-03-24 14:48:40 +02:00
gstconcat.c concat: Improve debug output a bit by printing pad names 2018-08-29 19:26:04 +03:00
gstconcat.h concat: Add adjust-base property 2015-06-22 14:11:30 +02:00
gstdataurisrc.c Port gtk-doc comments to their equivalent markdown syntax 2017-01-27 16:36:38 -03:00
gstdataurisrc.h Fix FSF address 2012-11-04 00:09:59 +00:00
gstdownloadbuffer.c downloadbuffer: Don't hold the mutex while posint the download-complete message 2017-12-21 13:47:52 +02:00
gstdownloadbuffer.h downloadbuffer: remove unused struct member 2017-07-26 14:20:44 +01:00
gstelements.c Port to hotdoc 2019-05-13 16:34:09 -04:00
gstelements_private.c filesink: Implement workaround for some (network) filesystems that spuriously return EACCES on write 2019-05-16 14:15:02 +03:00
gstelements_private.h filesink: Implement workaround for some (network) filesystems that spuriously return EACCES on write 2019-05-16 14:15:02 +03:00
gstfakesink.c Port gtk-doc comments to their equivalent markdown syntax 2017-01-27 16:36:38 -03:00
gstfakesink.h Revert "Potential GstContext regression" 2013-09-24 12:47:52 +02:00
gstfakesrc.c Port gtk-doc comments to their equivalent markdown syntax 2017-01-27 16:36:38 -03:00
gstfakesrc.h Port gtk-doc comments to their equivalent markdown syntax 2017-01-27 16:36:38 -03:00
gstfdsink.c filesink: Implement workaround for some (network) filesystems that spuriously return EACCES on write 2019-05-16 14:15:02 +03:00
gstfdsink.h fdsink: Block in preroll_wait on unlock 2016-11-23 11:58:43 -05:00
gstfdsrc.c plugins: Don't force 64-bit file/seek functions variants on android 2018-03-02 18:25:21 +11:00
gstfdsrc.h Fix FSF address 2012-11-03 20:44:48 +00:00
gstfilesink.c filesink: Implement workaround for some (network) filesystems that spuriously return EACCES on write 2019-05-16 14:15:02 +03:00
gstfilesink.h filesink: Implement workaround for some (network) filesystems that spuriously return EACCES on write 2019-05-16 14:15:02 +03:00
gstfilesrc.c plugins: Don't force 64-bit file/seek functions variants on android 2018-03-02 18:25:21 +11:00
gstfilesrc.h Fix FSF address 2012-11-03 20:44:48 +00:00
gstfunnel.c gstbasetranform: replace GST_BASE_TRANSFORM with GST_BASE_TRANSFORM_CAST 2017-11-24 13:39:39 +01:00
gstfunnel.h gstbasetranform: replace GST_BASE_TRANSFORM with GST_BASE_TRANSFORM_CAST 2017-11-24 13:39:39 +01:00
gstidentity.c identity: fixes to the eos-after and error-after properties 2018-12-18 22:55:28 +00:00
gstidentity.h identity: fixes to the eos-after and error-after properties 2018-12-18 22:55:28 +00:00
gstinputselector.c input-selector: Let context queries pass through 2018-11-28 11:00:21 +00:00
gstinputselector.h inputselector: Only try to push the first EOS received 2015-04-24 17:19:49 -03:00
gstmultiqueue.c multiqueue: Don't clamp running times for position calculation 2018-10-22 15:28:45 +02:00
gstmultiqueue.h multiqueue: Make min-interleave-time a configurable property 2017-03-09 12:09:57 +11:00
gstoutputselector.c inputselector, outputselector: add guards for wrong pads being set as active pads 2018-04-17 18:57:17 +01:00
gstoutputselector.h docs: add missing docs, fixing doc errors 2013-12-03 00:11:59 +00:00
gstqueue.c doc: Fix and add some missing docstrings 2019-05-13 11:33:49 -04:00
gstqueue.h queue/queue2: Protect against spurious condition variable wakeups 2016-12-13 21:03:54 +02:00
gstqueue2.c queue2: Add details of query in debug log 2018-12-17 09:41:45 +01:00
gstqueue2.h query: add a new bitrate query 2018-11-07 15:04:14 +00:00
gstsparsefile.c plugins: Don't force 64-bit file/seek functions variants on android 2018-03-02 18:25:21 +11:00
gstsparsefile.h elements: don't depend on libgio just for g_io_error_from_errno() 2014-05-13 20:06:48 +01:00
gststreamiddemux.c Port gtk-doc comments to their equivalent markdown syntax 2017-01-27 16:36:38 -03:00
gststreamiddemux.h docs: add StreamidDemux to documentation 2015-07-08 17:07:49 +01:00
gsttee.c Fix typos in comments and docs 2018-05-01 11:18:03 +01:00
gsttee.h tee: Add allow-not-linked property 2015-03-26 10:46:26 +01:00
gsttypefindelement.c typefind: cleanup (un)reffing of several objects. 2018-11-09 08:44:11 +00:00
gsttypefindelement.h docs: order and canonicalize the -sections.txt file 2015-07-03 11:52:22 +02:00
gstvalve.c Port gtk-doc comments to their equivalent markdown syntax 2017-01-27 16:36:38 -03:00
gstvalve.h Fix FSF address 2012-11-03 20:44:48 +00:00
Makefile.am Remove plugin specific static build option 2017-05-16 13:29:38 -04:00
meson.build Port to hotdoc 2019-05-13 16:34:09 -04:00