[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 105/104] virtiofsd: Unref old/new inodes with the same mutex
From: |
Dr. David Alan Gilbert |
Subject: |
Re: [PATCH 105/104] virtiofsd: Unref old/new inodes with the same mutex lock in lo_rename() |
Date: |
Mon, 20 Jan 2020 18:52:11 +0000 |
User-agent: |
Mutt/1.13.0 (2019-11-30) |
* Philippe Mathieu-Daudé (address@hidden) wrote:
> We can unref both old/new inodes with the same mutex lock.
>
> Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
> ---
> Based-on: <address@hidden>
> "virtiofs daemon"
> https://www.mail-archive.com/address@hidden/msg664652.html
>
> tools/virtiofsd/passthrough_ll.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/tools/virtiofsd/passthrough_ll.c
> b/tools/virtiofsd/passthrough_ll.c
> index 57f58aef26..5c717cb5a1 100644
> --- a/tools/virtiofsd/passthrough_ll.c
> +++ b/tools/virtiofsd/passthrough_ll.c
> @@ -1461,8 +1461,10 @@ static void lo_rename(fuse_req_t req, fuse_ino_t
> parent, const char *name,
> }
>
> out:
> - unref_inode_lolocked(lo, oldinode, 1);
> - unref_inode_lolocked(lo, newinode, 1);
> + pthread_mutex_lock(&lo->mutex);
> + unref_inode(lo, oldinode, 1);
> + unref_inode(lo, newinode, 1);
> + pthread_mutex_unlock(&lo->mutex);
While that would work; I'd rather keep that code simpler and the
same as every other normal operation - we only use the unref_inode
in one other place and that's because we're iterating the hash table
while deleting stuff.
Dave
> lo_inode_put(lo, &oldinode);
> lo_inode_put(lo, &newinode);
> lo_inode_put(lo, &parent_inode);
> --
> 2.21.1
>
--
Dr. David Alan Gilbert / address@hidden / Manchester, UK