aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiklos Szeredi <mszeredi@suse.cz>2014-07-15 11:57:37 +0200
committerDan Pasanen <dan.pasanen@gmail.com>2015-10-28 21:00:17 -0500
commit13a440a3b11b0cbb9e2d48dda2366bbecb06fb67 (patch)
tree0b4a28545299358b4c7a7b4241ec96b18244d3a5
parent1a82d78d098af16f4bc8694e09957336bc589341 (diff)
downloadandroid_external_fuse-13a440a3b11b0cbb9e2d48dda2366bbecb06fb67.tar.gz
android_external_fuse-13a440a3b11b0cbb9e2d48dda2366bbecb06fb67.tar.bz2
android_external_fuse-13a440a3b11b0cbb9e2d48dda2366bbecb06fb67.zip
libfuse: document deadlock avoidance for fuse_notify_inval_entry()
and fuse_notify_delete() Reported by Han-Wen Nienhuys Change-Id: Iecdc980b9ae69675cd73f93103a5f7538bb780d0
-rw-r--r--ChangeLog3
-rw-r--r--include/fuse_lowlevel.h8
2 files changed, 11 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 01ec2dd..7618b14 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2014-07-15 Miklos Szeredi <miklos@szeredi.hu>
+ * libfuse: document deadlock avoidance for
+ fuse_notify_inval_entry() and fuse_notify_delete()
+
* fusermount, libfuse: send value as unsigned in "user_id=" and
"group_id=" options. Uids/gids larger than 2147483647 would
result in EINVAL when mounting the filesystem. This also needs a
diff --git a/include/fuse_lowlevel.h b/include/fuse_lowlevel.h
index 3ba3b4c..6971f73 100644
--- a/include/fuse_lowlevel.h
+++ b/include/fuse_lowlevel.h
@@ -1335,6 +1335,10 @@ int fuse_lowlevel_notify_inval_inode(struct fuse_chan *ch, fuse_ino_t ino,
* Notify to invalidate parent attributes and the dentry matching
* parent/name
*
+ * To avoid a deadlock don't call this function from a filesystem operation and
+ * don't call it with a lock held that can also be held by a filesystem
+ * operation.
+ *
* @param ch the channel through which to send the invalidation
* @param parent inode number
* @param name file name
@@ -1349,6 +1353,10 @@ int fuse_lowlevel_notify_inval_entry(struct fuse_chan *ch, fuse_ino_t parent,
* parent/name if the dentry's inode number matches child (otherwise it
* will invalidate the matching dentry).
*
+ * To avoid a deadlock don't call this function from a filesystem operation and
+ * don't call it with a lock held that can also be held by a filesystem
+ * operation.
+ *
* @param ch the channel through which to send the notification
* @param parent inode number
* @param child inode number