On Mon, Jan 20, 2020 at 7:52 PM Dr. David Alan Gilbert <dgilb...@redhat.com> wrote: > * Philippe Mathieu-Daudé (phi...@redhat.com) wrote: > > We can unref both old/new inodes with the same mutex lock. > > > > Signed-off-by: Philippe Mathieu-Daudé <phi...@redhat.com> > > --- > > Based-on: <20191212163904.159893-1-dgilb...@redhat.com> > > "virtiofs daemon" > > https://www.mail-archive.com/qemu-devel@nongnu.org/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.
OK I understand. > Dave > > > lo_inode_put(lo, &oldinode); > > lo_inode_put(lo, &newinode); > > lo_inode_put(lo, &parent_inode); > > -- > > 2.21.1 > > > -- > Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK