+ memset(rbuf, 0x44, len);
+ memset(rbuf + 2048, 0x69, 512);
+ if (memcmp(wbuf, rbuf, len)) {
+ printf("Data mismatch on line %d\n", __LINE__);
+ return 1;
+ }
+
+ /* read test */
+ if (lseek64(fd, 512, SEEK_SET) < 0) {
+ printf("Cannot seek %s\n", strerror(errno));
+ return 1;
+ }
+ memset(rbuf, 0xba, len);
+ rc = read(fd, rbuf + 1024, 512);
+ if (rc != 512) {
+ printf("Read error: %s (rc = %d)\n", strerror(errno), rc);
+ return 1;
+ }
+
+ memset(wbuf, 0xba, len);
+ memset(wbuf + 1024, 0x69, 512);
+
+ verify(rbuf, wbuf, len);
+#if 0
+ if (memcmp(wbuf, rbuf, len)) {
+ printf("Data mismatch on line %d\n", __LINE__);
+ return 1;
+ }
+#endif
+
+ /* read back the whole block, to see that it's untouched. */