summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Szeredi <mszeredi@suse.cz>2014-07-15 11:57:37 +0200
committerMiklos Szeredi <mszeredi@suse.cz>2014-07-22 06:36:01 +0200
commit4163109fd5bfe67973262610dd95ae60888c92e9 (patch)
tree8607e0320068ac4a32afedc485b5e751302cf733
parent4e8f86d4d6de46cb2404eab37268c3b53308cb3a (diff)
downloadfuse-4163109fd5bfe67973262610dd95ae60888c92e9.tar.gz
libfuse: document deadlock avoidance for fuse_notify_inval_entry()
and fuse_notify_delete() Reported by Han-Wen Nienhuys
-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 4c3d136..b8ccda9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,9 @@
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 2036717..caf4020 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