diff --git a/HOWTO b/HOWTO
index 3bda021..e693d7a 100644
--- a/HOWTO
+++ b/HOWTO
@@ -577,6 +577,9 @@
 			crc32	Use a crc32 sum of the data area and store
 				it in the header of each block.
 
+			crc16	Use a crc16 sum of the data area and store
+				it in the header of each block.
+
 			null	Only pretend to verify. Useful for testing
 				internals with ioengine=null, not for much
 				else.
diff --git a/Makefile b/Makefile
index 61cdb66..05d735f 100644
--- a/Makefile
+++ b/Makefile
@@ -6,8 +6,8 @@
 PROGS	= fio
 SCRIPTS = fio_generate_plots
 OBJS = gettime.o fio.o ioengines.o init.o stat.o log.o time.o md5.o crc32.o \
-	filesetup.o eta.o verify.o memory.o io_u.o parse.o mutex.o options.o \
-	rbtree.o diskutil.o fifo.o blktrace.o
+	crc16.o filesetup.o eta.o verify.o memory.o io_u.o parse.o mutex.o \
+	options.o rbtree.o diskutil.o fifo.o blktrace.o
 
 OBJS += engines/cpu.o
 OBJS += engines/libaio.o
diff --git a/crc16.c b/crc16.c
new file mode 100644
index 0000000..ac7983a
--- /dev/null
+++ b/crc16.c
@@ -0,0 +1,53 @@
+/*
+ *      crc16.c
+ *
+ * This source code is licensed under the GNU General Public License,
+ * Version 2. See the file COPYING for more details.
+ */
+
+#include "crc16.h"
+
+/** CRC table for the CRC-16. The poly is 0x8005 (x^16 + x^15 + x^2 + 1) */
+unsigned short const crc16_table[256] = {
+	0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241,
+	0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440,
+	0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40,
+	0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841,
+	0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40,
+	0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41,
+	0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641,
+	0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040,
+	0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240,
+	0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441,
+	0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41,
+	0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840,
+	0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41,
+	0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40,
+	0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640,
+	0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041,
+	0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240,
+	0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441,
+	0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41,
+	0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840,
+	0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41,
+	0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40,
+	0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640,
+	0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041,
+	0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241,
+	0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440,
+	0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40,
+	0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841,
+	0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40,
+	0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41,
+	0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641,
+	0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040
+};
+
+unsigned short crc16(unsigned char const *buffer, unsigned int len)
+{
+	unsigned short crc = 0;
+
+	while (len--)
+		crc = crc16_byte(crc, *buffer++);
+	return crc;
+}
diff --git a/crc16.h b/crc16.h
new file mode 100644
index 0000000..841378d
--- /dev/null
+++ b/crc16.h
@@ -0,0 +1,28 @@
+/*
+ *	crc16.h - CRC-16 routine
+ *
+ * Implements the standard CRC-16:
+ *   Width 16
+ *   Poly  0x8005 (x^16 + x^15 + x^2 + 1)
+ *   Init  0
+ *
+ * Copyright (c) 2005 Ben Gardner <bgardner@wabtec.com>
+ *
+ * This source code is licensed under the GNU General Public License,
+ * Version 2. See the file COPYING for more details.
+ */
+
+#ifndef __CRC16_H
+#define __CRC16_H
+
+extern unsigned short const crc16_table[256];
+
+extern unsigned short crc16(const unsigned char *buffer, unsigned int len);
+
+static inline unsigned short crc16_byte(unsigned short crc,
+					const unsigned char data)
+{
+	return (crc >> 8) ^ crc16_table[(crc ^ data) & 0xff];
+}
+
+#endif /* __CRC16_H */
diff --git a/fio.h b/fio.h
index 8319a7a..fa3f568 100644
--- a/fio.h
+++ b/fio.h
@@ -19,6 +19,7 @@
 #include "rbtree.h"
 #include "md5.h"
 #include "crc32.h"
+#include "crc16.h"
 #include "arch/arch.h"
 #include "os/os.h"
 #include "mutex.h"
@@ -193,6 +194,7 @@
 	VERIFY_NONE = 0,		/* no verification */
 	VERIFY_MD5,			/* md5 sum data blocks */
 	VERIFY_CRC32,			/* crc32 sum data blocks */
+	VERIFY_CRC16,			/* crc16 sum data blocks */
 	VERIFY_NULL,			/* pretend to verify */
 };
 
@@ -206,6 +208,7 @@
 	union {
 		char md5_digest[MD5_HASH_WORDS * 4];
 		unsigned long crc32;
+		unsigned short crc16;
 	};
 };
 
diff --git a/options.c b/options.c
index 04ed548..cf42a6d 100644
--- a/options.c
+++ b/options.c
@@ -573,6 +573,10 @@
 			    .oval = VERIFY_CRC32,
 			    .help = "Use crc32 checksums for verification",
 			  },
+			  { .ival = "crc16",
+			    .oval = VERIFY_CRC16,
+			    .help = "Use crc16 checksums for verification",
+			  },
 			  { .ival = "md5",
 			    .oval = VERIFY_MD5,
 			    .help = "Use md5 checksums for verification",
diff --git a/verify.c b/verify.c
index 243b663..cca070c 100644
--- a/verify.c
+++ b/verify.c
@@ -42,9 +42,26 @@
 	log_info("\n");
 }
 
+static int verify_io_u_crc16(struct verify_header *hdr, struct io_u *io_u)
+{
+	unsigned char *p = io_u->buf;
+	unsigned short c;
+
+	p += sizeof(*hdr);
+	c = crc16(p, hdr->len - sizeof(*hdr));
+
+	if (c != hdr->crc16) {
+		log_err("crc16: verify failed at %llu/%lu\n", io_u->offset, io_u->buflen);
+		log_err("crc16: wanted %lx, got %x\n", hdr->crc32, c);
+		return 1;
+	}
+
+	return 0;
+}
+
 static int verify_io_u_crc32(struct verify_header *hdr, struct io_u *io_u)
 {
-	unsigned char *p = (unsigned char *) io_u->buf;
+	unsigned char *p = io_u->buf;
 	unsigned long c;
 
 	p += sizeof(*hdr);
@@ -61,7 +78,7 @@
 
 static int verify_io_u_md5(struct verify_header *hdr, struct io_u *io_u)
 {
-	unsigned char *p = (unsigned char *) io_u->buf;
+	unsigned char *p = io_u->buf;
 	struct md5_ctx md5_ctx;
 
 	memset(&md5_ctx, 0, sizeof(md5_ctx));
@@ -95,6 +112,8 @@
 		ret = verify_io_u_md5(hdr, io_u);
 	else if (hdr->verify_type == VERIFY_CRC32)
 		ret = verify_io_u_crc32(hdr, io_u);
+	else if (hdr->verify_type == VERIFY_CRC16)
+		ret = verify_io_u_crc16(hdr, io_u);
 	else {
 		log_err("Bad verify type %u\n", hdr->verify_type);
 		ret = 1;
@@ -106,6 +125,11 @@
 	return 0;
 }
 
+static void fill_crc16(struct verify_header *hdr, void *p, unsigned int len)
+{
+	hdr->crc16 = crc16(p, len);
+}
+
 static void fill_crc32(struct verify_header *hdr, void *p, unsigned int len)
 {
 	hdr->crc32 = crc32(p, len);
@@ -143,6 +167,9 @@
 	} else if (td->o.verify == VERIFY_CRC32) {
 		fill_crc32(&hdr, p, io_u->buflen - sizeof(hdr));
 		hdr.verify_type = VERIFY_CRC32;
+	} else if (td->o.verify == VERIFY_CRC16) {
+		fill_crc16(&hdr, p, io_u->buflen - sizeof(hdr));
+		hdr.verify_type = VERIFY_CRC16;
 	}
 
 	memcpy(io_u->buf, &hdr, sizeof(hdr));
