From 13fc65ed6be4ad4d08a4f57d031b37aead6673a6 Mon Sep 17 00:00:00 2001 From: Giuseppe Scrivano Date: Mon, 15 Jul 2019 11:02:25 +0200 Subject: [PATCH] main: make xattr operations parallel release the lock once the fd is open. Signed-off-by: Giuseppe Scrivano --- main.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/main.c b/main.c index f0ab27c..ab0c66e 100644 --- a/main.c +++ b/main.c @@ -1918,6 +1918,8 @@ ovl_listxattr (fuse_req_t req, fuse_ino_t ino, size_t size) return; } + l = release_big_lock (); + len = flistxattr (fd, buf, size); if (len < 0) fuse_reply_err (req, errno); @@ -1964,6 +1966,8 @@ ovl_getxattr (fuse_req_t req, fuse_ino_t ino, const char *name, size_t size) return; } + l = release_big_lock (); + len = fgetxattr (fd, name, buf, size); if (len < 0) fuse_reply_err (req, errno); @@ -2582,6 +2586,8 @@ ovl_setxattr (fuse_req_t req, fuse_ino_t ino, const char *name, return; } + l = release_big_lock (); + if (fsetxattr (fd, name, value, size, flags) < 0) { fuse_reply_err (req, errno); @@ -2623,6 +2629,8 @@ ovl_removexattr (fuse_req_t req, fuse_ino_t ino, const char *name) return; } + l = release_big_lock (); + if (fremovexattr (fd, name) < 0) { close (fd); @@ -2973,6 +2981,8 @@ handle_eloop: } } + l = release_big_lock (); + memset (times, 0, sizeof (times)); times[0].tv_sec = UTIME_OMIT; times[1].tv_sec = UTIME_OMIT;