On Mon, Jan 20, 2020 at 7:52 PM Dr. David Alan Gilbert <[email protected]> wrote: > * Philippe Mathieu-Daudé ([email protected]) wrote: > > We can unref both old/new inodes with the same mutex lock. > > > > Signed-off-by: Philippe Mathieu-Daudé <[email protected]> > > --- > > Based-on: <[email protected]> > > "virtiofs daemon" > > https://www.mail-archive.com/[email protected]/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 / [email protected] / Manchester, UK
