From patchwork Thu May 1 23:16:23 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Darrick Wong X-Patchwork-Id: 344863 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id DC30814010A for ; Fri, 2 May 2014 09:16:28 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752655AbaEAXQ2 (ORCPT ); Thu, 1 May 2014 19:16:28 -0400 Received: from aserp1040.oracle.com ([141.146.126.69]:39671 "EHLO aserp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751014AbaEAXQ2 (ORCPT ); Thu, 1 May 2014 19:16:28 -0400 Received: from acsinet21.oracle.com (acsinet21.oracle.com [141.146.126.237]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s41NGQV8018164 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 1 May 2014 23:16:26 GMT Received: from userz7022.oracle.com (userz7022.oracle.com [156.151.31.86]) by acsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s41NGPPg014790 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 1 May 2014 23:16:26 GMT Received: from abhmp0014.oracle.com (abhmp0014.oracle.com [141.146.116.20]) by userz7022.oracle.com (8.14.5+Sun/8.14.4) with ESMTP id s41NGPmH010664; Thu, 1 May 2014 23:16:25 GMT Received: from localhost (/10.145.179.157) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 01 May 2014 16:16:24 -0700 Subject: [PATCH 36/37] tests: test date handling From: "Darrick J. Wong" To: tytso@mit.edu, darrick.wong@oracle.com Cc: linux-ext4@vger.kernel.org Date: Thu, 01 May 2014 16:16:23 -0700 Message-ID: <20140501231623.31890.62827.stgit@birch.djwong.org> In-Reply-To: <20140501231222.31890.82860.stgit@birch.djwong.org> References: <20140501231222.31890.82860.stgit@birch.djwong.org> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Source-IP: acsinet21.oracle.com [141.146.126.237] Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Test our ability to handle the entire range of valid dates. Signed-off-by: Darrick J. Wong --- tests/metadata-checksum-test.sh | 59 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/tests/metadata-checksum-test.sh b/tests/metadata-checksum-test.sh index ad1b219..a17bfd2 100755 --- a/tests/metadata-checksum-test.sh +++ b/tests/metadata-checksum-test.sh @@ -3749,6 +3749,65 @@ ${fsck_cmd} -C0 -f -n "${DEV}" ${E2FSPROGS}/debugfs/debugfs -R 'ex /fragfile' "${DEV}" | tail -n 15 } +##################################### +function date_test { +msg "date_test" + +rm -rf /tmp/ls.before /tmp/ls.after /tmp/debugfs.diff + +INODE_SIZE="$(${E2FSPROGS}/misc/dumpe2fs -h "${DEV}" | grep 'Inode size:' | awk '{print $3}')" +if [ "${INODE_SIZE}" -gt 128 ]; then + LAST_YEAR=2430 +else + LAST_YEAR=2030 +fi + +# Write dates +${mount_cmd} ${MOUNT_OPTS} "${DEV}" "${MNT}" -t ext4 -o journal_checksum +seq 1910 20 "${LAST_YEAR}" | while read year; do + DATE="${year}-01-01 00:00:00.000000000" + FNAME="$(echo "${DATE}" | tr '[ \-:.]' '____')" + touch -d "${DATE}" "${MNT}/${FNAME}" + echo "${FNAME} ${DATE}" >> /tmp/ls.before +done +umount "${MNT}" +${fsck_cmd} -C0 -f -n "${DEV}" + +# debugfs +seq 1910 20 "${LAST_YEAR}" | while read year; do + DATE="${year}-01-01 00:00:00.000000000" + FNAME="$(echo "${DATE}" | tr '[ \-:.]' '____')" + echo "${FNAME}" "$(${E2FSPROGS}/debugfs/debugfs -R "stat ${FNAME}" "${DEV}" | grep 'mtime:')" +done > /tmp/debugfs.before + +# Re-read from kernel +${mount_cmd} ${MOUNT_OPTS} "${DEV}" "${MNT}" -t ext4 -o journal_checksum +seq 1910 20 "${LAST_YEAR}" | while read year; do + DATE="${year}-01-01 00:00:00.000000000" + FNAME="$(echo "${DATE}" | tr '[ \-:.]' '____')" + FDATE="$(stat -c '%y' "${MNT}/${FNAME}" | sed -e 's/......$//g')" + echo "${FNAME}" "${FDATE}" >> /tmp/ls.after +done +umount "${MNT}" + +# Did the kernel work? +diff -u /tmp/ls.before /tmp/ls.after > /tmp/ls.diff || true + +# Does debugfs work? +touch /tmp/debugfs.diff +cat /tmp/debugfs.before | sed -e 's/^\(....\).*\(....\)$/\1 \2/g' | while read date fdate crap; do + if [ "${date}" != "${fdate}" ]; then + echo "${date} != ${fdate}" >> /tmp/debugfs.diff + fi +done + +if [ "$(cat /tmp/debugfs.diff /tmp/ls.diff | wc -l)" -gt 0 ]; then + echo "BROKEN DATE HANDLING" + cat /tmp/debugfs.diff /tmp/ls.diff + false +fi +} + # This test should be the last one (before speed tests, anyway) #### ALL SPEED TESTS GO AT THE END