@@ -26,6 +26,7 @@ struct dir2_bad {
};
static struct dir2_bad dir2_bad;
+pthread_mutex_t dir2_bad_lock = PTHREAD_MUTEX_INITIALIZER;
static void
dir2_add_badlist(
@@ -33,6 +34,7 @@ dir2_add_badlist(
{
xfs_ino_t *itab;
+ pthread_mutex_lock(&dir2_bad_lock);
itab = realloc(dir2_bad.itab, (dir2_bad.nr + 1) * sizeof(xfs_ino_t));
if (!itab) {
do_error(
@@ -42,18 +44,25 @@ _("malloc failed (%zu bytes) dir2_add_badlist:ino %" PRIu64 "\n"),
}
itab[dir2_bad.nr++] = ino;
dir2_bad.itab = itab;
+ pthread_mutex_unlock(&dir2_bad_lock);
}
bool
dir2_is_badino(
xfs_ino_t ino)
{
- unsigned int i;
+ unsigned int i;
+ bool ret = false;
- for (i = 0; i < dir2_bad.nr; ++i)
- if (dir2_bad.itab[i] == ino)
- return true;
- return false;
+ pthread_mutex_lock(&dir2_bad_lock);
+ for (i = 0; i < dir2_bad.nr; ++i) {
+ if (dir2_bad.itab[i] == ino) {
+ ret = true;
+ break;
+ }
+ }
+ pthread_mutex_unlock(&dir2_bad_lock);
+ return ret;
}
/*