Whamcloud - gitweb
LU-14009 osd: missing ldiskfs_htree_unlock() 37/40137/4
authorAlex Zhuravlev <bzzz@whamcloud.com>
Sun, 4 Oct 2020 10:41:26 +0000 (13:41 +0300)
committerOleg Drokin <green@whamcloud.com>
Thu, 19 Nov 2020 11:00:18 +0000 (11:00 +0000)
in osd_ldiskfs_it_fill()

Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com>
Change-Id: I5d2242e0864cbaa72af096b263d8758966a6be22
Reviewed-on: https://review.whamcloud.com/40137
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Alexey Lyashkov <alexey.lyashkov@hpe.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/osd-ldiskfs/osd_handler.c

index 554a26d..5c8c843 100644 (file)
@@ -6690,18 +6690,13 @@ static int osd_ldiskfs_it_fill(const struct lu_env *env,
        filp->f_cred = current_cred();
        rc = osd_security_file_alloc(filp);
        if (rc)
-               RETURN(rc);
+               GOTO(unlock, rc);
 
        filp->f_flags |= O_NOATIME;
        filp->f_mode |= FMODE_NONOTIFY;
        rc = iterate_dir(filp, &buf.ctx);
        if (rc)
-               RETURN(rc);
-
-       if (hlock != NULL)
-               ldiskfs_htree_unlock(hlock);
-       else
-               up_read(&obj->oo_ext_idx_sem);
+               GOTO(unlock, rc);
 
        if (it->oie_rd_dirent == 0) {
                /*
@@ -6715,6 +6710,11 @@ static int osd_ldiskfs_it_fill(const struct lu_env *env,
                it->oie_dirent = it->oie_buf;
                it->oie_it_dirent = 1;
        }
+unlock:
+       if (hlock != NULL)
+               ldiskfs_htree_unlock(hlock);
+       else
+               up_read(&obj->oo_ext_idx_sem);
 
        RETURN(rc);
 }