Whamcloud - gitweb
LU-13723 lustre: Convert ERR_PTR(PTR_ERR()) to ERR_CAST()
[fs/lustre-release.git] / lustre / obdclass / integrity.c
index c203fee..e6528f1 100644 (file)
@@ -31,6 +31,7 @@
 #include <obd_class.h>
 #include <obd_cksum.h>
 
+#if IS_ENABLED(CONFIG_CRC_T10DIF)
 __u16 obd_dif_crc_fn(void *data, unsigned int len)
 {
        return cpu_to_be16(crc_t10dif(data, len));
@@ -49,14 +50,15 @@ int obd_page_dif_generate_buffer(const char *obd_name, struct page *page,
                                 int *used_number, int sector_size,
                                 obd_dif_csum_fn *fn)
 {
-       unsigned int i;
+       unsigned int i = offset;
+       unsigned int end = offset + length;
        char *data_buf;
        __u16 *guard_buf = guard_start;
        unsigned int data_size;
        int used = 0;
 
        data_buf = kmap(page) + offset;
-       for (i = 0; i < length; i += sector_size) {
+       while (i < end) {
                if (used >= guard_number) {
                        CERROR("%s: unexpected used guard number of DIF %u/%u, "
                               "data length %u, sector size %u: rc = %d\n",
@@ -64,12 +66,11 @@ int obd_page_dif_generate_buffer(const char *obd_name, struct page *page,
                               sector_size, -E2BIG);
                        return -E2BIG;
                }
-               data_size = length - i;
-               if (data_size > sector_size)
-                       data_size = sector_size;
+               data_size = min(round_up(i + 1, sector_size), end) - i;
                *guard_buf = fn(data_buf, data_size);
                guard_buf++;
                data_buf += data_size;
+               i += data_size;
                used++;
        }
        kunmap(page);
@@ -226,10 +227,10 @@ static void obd_t10_performance_test(const char *obd_name,
        memset(buf, 0xAD, PAGE_SIZE);
        kunmap(page);
 
-       for (start = jiffies, end = start + msecs_to_jiffies(MSEC_PER_SEC / 4),
+       for (start = jiffies, end = start + cfs_time_seconds(1) / 4,
             bcount = 0; time_before(jiffies, end) && rc == 0; bcount++) {
                rc = __obd_t10_performance_test(obd_name, cksum_type, page,
-                                               buf_len / PAGE_SIZE);
+                                               buf_len >> PAGE_SHIFT);
                if (rc)
                        break;
        }
@@ -251,10 +252,12 @@ out:
                       obd_t10_cksum_speeds[index]);
        }
 }
+#endif /* CONFIG_CRC_T10DIF */
 
 int obd_t10_cksum_speed(const char *obd_name,
                        enum cksum_types cksum_type)
 {
+#if IS_ENABLED(CONFIG_CRC_T10DIF)
        enum obd_t10_cksum_type index = obd_t10_cksum2type(cksum_type);
 
        if (unlikely(obd_t10_cksum_speeds[index] == 0)) {
@@ -267,5 +270,8 @@ int obd_t10_cksum_speed(const char *obd_name,
        }
 
        return obd_t10_cksum_speeds[index];
+#else /* !CONFIG_CRC_T10DIF */
+       return 0;
+#endif /* !CONFIG_CRC_T10DIF */
 }
 EXPORT_SYMBOL(obd_t10_cksum_speed);