- void *buf = bix->data_buf;
- struct sd_dif_tuple *sdt = bix->prot_buf;
- struct niobuf_local *lnb = find_lnb(bix);
- __u16 *guard_buf = lnb ? lnb->lnb_guards : NULL;
- sector_t sector = bix->sector;
- unsigned int i;
- __u16 csum;
-
- for (i = 0 ; i < bix->data_size ; i += bix->sector_size, sdt++) {
- /* Unwritten sectors */
- if (sdt->app_tag == 0xffff && sdt->ref_tag == 0xffffffff)
- return 0;
-
- csum = fn(buf, bix->sector_size);
-
- if (sdt->guard_tag != csum) {
- CERROR("%s: guard tag error on sector %lu " \
- "(rcvd %04x, data %04x)\n", bix->disk_name,
- (unsigned long)sector,
- be16_to_cpu(sdt->guard_tag), be16_to_cpu(csum));
- return -EIO;
- }
-
- if (guard_buf) {
- *guard_buf = csum;
- guard_buf++;
- }
-
- buf += bix->sector_size;
- sector++;
- }