diff --git a/bin/patches/regex_builder.patch b/bin/patches/regex_builder.patch
new file mode 100644
index 0000000..b29bf4a
--- /dev/null
+++ b/bin/patches/regex_builder.patch
@@ -0,0 +1,77 @@
+--- os_testr/regex_builder.py	2018-04-25 11:33:36.330640993 +0300
++++ os_testr/regex_builder.py	2018-04-25 11:33:54.878627168 +0300
+@@ -71,34 +71,46 @@
+     return '|'.join(lines)
+ 
+ 
+-def construct_regex(blacklist_file, whitelist_file, regex, print_exclude):
+-    """Deprecated, please use testlist_builder.construct_list instead."""
+-    if not blacklist_file:
++def get_regex_from_blacklist_file(file_path, print_exclude=False):
++    exclude_regex = ''
++    with open(file_path, 'r') as black_file:
+         exclude_regex = ''
+-    else:
+-        with open(blacklist_file, 'r') as black_file:
+-            exclude_regex = ''
+-            for line in black_file:
+-                raw_line = line.strip()
+-                split_line = raw_line.split('#')
+-                # Before the # is the regex
+-                line_regex = split_line[0].strip()
+-                if len(split_line) > 1:
+-                    # After the # is a comment
+-                    comment = split_line[1].strip()
++        for line in black_file:
++            raw_line = line.strip()
++            split_line = raw_line.split('#')
++            # Before the # is the regex
++            line_regex = split_line[0].strip()
++            if len(split_line) > 1:
++                # After the # is a comment
++                comment = split_line[1].strip()
++            else:
++                comment = ''
++            if line_regex:
++                if print_exclude:
++                    print_skips(line_regex, comment)
++                if exclude_regex:
++                    exclude_regex = '|'.join([line_regex, exclude_regex])
+                 else:
+-                    comment = ''
+-                if line_regex:
+-                    if print_exclude:
+-                        print_skips(line_regex, comment)
+-                    if exclude_regex:
+-                        exclude_regex = '|'.join([line_regex, exclude_regex])
+-                    else:
+-                        exclude_regex = line_regex
+-            if exclude_regex:
+-                exclude_regex = "^((?!" + exclude_regex + ").)*$"
+-    if regex:
+-        exclude_regex += regex
+-    if whitelist_file:
+-        exclude_regex += '%s' % get_regex_from_whitelist_file(whitelist_file)
++                    exclude_regex = line_regex
++        if exclude_regex:
++            exclude_regex = "(?!" + exclude_regex + ")"
+     return exclude_regex
++
++
++def construct_regex(blacklist_file, whitelist_file, regex, print_exclude):
++    """Deprecated, please use testlist_builder.construct_list instead."""
++    bregex = ''
++    wregex = ''
++    pregex = ''
++
++    if blacklist_file:
++        bregex = get_regex_from_blacklist_file(blacklist_file, print_exclude)
++    if whitelist_file:
++        wregex = get_regex_from_whitelist_file(whitelist_file)
++    if regex:
++        pregex = regex
++    combined_regex = '^%s.*(%s).*$' % (bregex, '|'.join(
++        filter(None, [pregex, wregex])
++    ))
++
++    return combined_regex
diff --git a/bin/run_tempest.sh b/bin/run_tempest.sh
index 2c2138e..0bcec09 100755
--- a/bin/run_tempest.sh
+++ b/bin/run_tempest.sh
@@ -13,15 +13,17 @@
     report='report_'`date +%F_%H-%M`
 fi
 
-log=$LOG_DIR/$report.log
+log=$LOG_DIR/${report}.log
 
 cd $LOG_DIR
 rm -rf env
 tempest init env | tee -a $log
 cd env
-tempest run $ARGS | tee -a $log
 
-if [[ "$ARGS" =~ '-r ' || "$ARGS" =~ '--regex' || "$ARGS" =~ '-s' || "$ARGS" =~ '-w' || "$ARGS" =~ '' ]]; then
+cp /var/lib/tempest/skiplists/*.list $LOG_DIR/env
+
+tempest run $ARGS | tee -a ${log}
+
+if [[ "$ARGS" =~ '-r ' || "$ARGS" =~ '--regex' || "$ARGS" =~ '-s' || "$ARGS" =~ '--smoke' || "$ARGS" =~ '--blacklist-file' || "$ARGS" =~ '-w' || "$ARGS" == '' ]]; then
     testr last --subunit | subunit2junitxml > $LOG_DIR/$report.xml || true
 fi
-
diff --git a/bin/skiplists/mcp_pike_lvm_skip.list b/bin/skiplists/mcp_pike_lvm_skip.list
new file mode 100644
index 0000000..564201c
--- /dev/null
+++ b/bin/skiplists/mcp_pike_lvm_skip.list
@@ -0,0 +1 @@
+manila_tempest_tests.tests.api.admin.test_share_types_negative.ShareTypesAdminNegativeTest.test_create_share_type_with_description_in_wrong_version
