summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/libspl/include/sys/dkio.h4
-rw-r--r--lib/libspl/include/sys/dklabel.h4
-rw-r--r--lib/libspl/include/sys/vtoc.h12
-rw-r--r--module/zfs/arc.c2
-rw-r--r--module/zfs/vdev_disk.c2
5 files changed, 13 insertions, 11 deletions
diff --git a/lib/libspl/include/sys/dkio.h b/lib/libspl/include/sys/dkio.h
index 32f786565..6b430b81f 100644
--- a/lib/libspl/include/sys/dkio.h
+++ b/lib/libspl/include/sys/dkio.h
@@ -258,13 +258,13 @@ struct defect_header {
*/
#ifdef _SYSCALL32
struct part_info32 {
- daddr32_t p_start;
+ uint32_t p_start;
int p_length;
};
#endif /* _SYSCALL32 */
struct part_info {
- daddr_t p_start;
+ uint64_t p_start;
int p_length;
};
diff --git a/lib/libspl/include/sys/dklabel.h b/lib/libspl/include/sys/dklabel.h
index 77d5da10e..8772e4a53 100644
--- a/lib/libspl/include/sys/dklabel.h
+++ b/lib/libspl/include/sys/dklabel.h
@@ -81,8 +81,8 @@ extern "C" {
* Returned in struct dk_allmap by ioctl DKIOC[SG]APART (dkio(7I))
*/
struct dk_map {
- daddr_t dkl_cylno; /* starting cylinder */
- daddr_t dkl_nblk; /* number of blocks; if == 0, */
+ uint64_t dkl_cylno; /* starting cylinder */
+ uint64_t dkl_nblk; /* number of blocks; if == 0, */
/* partition is undefined */
};
diff --git a/lib/libspl/include/sys/vtoc.h b/lib/libspl/include/sys/vtoc.h
index 004b49097..22a652b74 100644
--- a/lib/libspl/include/sys/vtoc.h
+++ b/lib/libspl/include/sys/vtoc.h
@@ -97,10 +97,10 @@ extern "C" {
#define VT_EOVERFLOW (-7) /* VTOC op. data struct limited */
struct partition {
- ushort_t p_tag; /* ID tag of partition */
- ushort_t p_flag; /* permission flags */
- daddr_t p_start; /* start sector no of partition */
- long p_size; /* # of blocks in partition */
+ ushort_t p_tag; /* ID tag of partition */
+ ushort_t p_flag; /* permission flags */
+ uint64_t p_start; /* start sector no of partition */
+ long p_size; /* # of blocks in partition */
};
struct vtoc {
@@ -121,7 +121,7 @@ struct extpartition {
ushort_t p_flag; /* permission flags */
ushort_t p_pad[2];
diskaddr_t p_start; /* start sector no of partition */
- diskaddr_t p_size; /* # of blocks in partition */
+ diskaddr_t p_size; /* # of blocks in partition */
};
@@ -156,7 +156,7 @@ struct extvtoc {
for (i = 0; i < V_NUMPAR; i++) { \
v.v_part[i].p_tag = extv.v_part[i].p_tag; \
v.v_part[i].p_flag = extv.v_part[i].p_flag; \
- v.v_part[i].p_start = (daddr_t)extv.v_part[i].p_start; \
+ v.v_part[i].p_start = (uint64_t)extv.v_part[i].p_start; \
v.v_part[i].p_size = (long)extv.v_part[i].p_size; \
v.timestamp[i] = (time_t)extv.timestamp[i]; \
} \
diff --git a/module/zfs/arc.c b/module/zfs/arc.c
index f8dfee2cc..32d99bf39 100644
--- a/module/zfs/arc.c
+++ b/module/zfs/arc.c
@@ -2777,7 +2777,7 @@ top:
uint64_t size = BP_GET_LSIZE(bp);
arc_callback_t *acb;
vdev_t *vd = NULL;
- daddr_t addr = -1;
+ uint64_t addr = -1;
boolean_t devw = B_FALSE;
if (hdr == NULL) {
diff --git a/module/zfs/vdev_disk.c b/module/zfs/vdev_disk.c
index 86a089d12..3e59bd226 100644
--- a/module/zfs/vdev_disk.c
+++ b/module/zfs/vdev_disk.c
@@ -360,6 +360,8 @@ __vdev_disk_physio(struct block_device *bdev, zio_t *zio, caddr_t kbuf_ptr,
int bio_size, bio_count = 16;
int i = 0, error = 0, block_size;
+ ASSERT3U(kbuf_offset + kbuf_size, <=, bdev->bd_inode->i_size);
+
retry:
dr = vdev_disk_dio_alloc(bio_count);
if (dr == NULL)