git://git.camperquake.de
/
zfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Call zvol_create_minors() in spa_open_common() when initializing pool
[zfs.git]
/
module
/
zfs
/
vdev_raidz.c
diff --git
a/module/zfs/vdev_raidz.c
b/module/zfs/vdev_raidz.c
index
b987ac4
..
3e1878d
100644
(file)
--- a/
module/zfs/vdev_raidz.c
+++ b/
module/zfs/vdev_raidz.c
@@
-21,6
+21,7
@@
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012 by Delphix. All rights reserved.
*/
#include <sys/zfs_context.h>
*/
#include <sys/zfs_context.h>
@@
-280,7
+281,7
@@
vdev_raidz_map_free_vsd(zio_t *zio)
{
raidz_map_t *rm = zio->io_vsd;
{
raidz_map_t *rm = zio->io_vsd;
- ASSERT
3U(rm->rm_freed, ==, 0
);
+ ASSERT
0(rm->rm_freed
);
rm->rm_freed = 1;
if (rm->rm_reports == 0)
rm->rm_freed = 1;
if (rm->rm_reports == 0)
@@
-456,7
+457,7
@@
vdev_raidz_map_alloc(zio_t *zio, uint64_t unit_shift, uint64_t dcols,
ASSERT3U(acols, <=, scols);
ASSERT3U(acols, <=, scols);
- rm = kmem_alloc(offsetof(raidz_map_t, rm_col[scols]), KM_
SLEEP
);
+ rm = kmem_alloc(offsetof(raidz_map_t, rm_col[scols]), KM_
PUSHPAGE
);
rm->rm_cols = acols;
rm->rm_scols = scols;
rm->rm_cols = acols;
rm->rm_scols = scols;
@@
-1133,7
+1134,7
@@
vdev_raidz_matrix_invert(raidz_map_t *rm, int n, int nmissing, int *missing,
*/
for (i = 0; i < nmissing; i++) {
for (j = 0; j < missing[i]; j++) {
*/
for (i = 0; i < nmissing; i++) {
for (j = 0; j < missing[i]; j++) {
- ASSERT
3U(rows[i][j], ==, 0
);
+ ASSERT
0(rows[i][j]
);
}
ASSERT3U(rows[i][missing[i]], !=, 0);
}
ASSERT3U(rows[i][missing[i]], !=, 0);
@@
-1174,7
+1175,7
@@
vdev_raidz_matrix_invert(raidz_map_t *rm, int n, int nmissing, int *missing,
if (j == missing[i]) {
ASSERT3U(rows[i][j], ==, 1);
} else {
if (j == missing[i]) {
ASSERT3U(rows[i][j], ==, 1);
} else {
- ASSERT
3U(rows[i][j], ==, 0
);
+ ASSERT
0(rows[i][j]
);
}
}
}
}
}
}
@@
-1196,7
+1197,7
@@
vdev_raidz_matrix_reconstruct(raidz_map_t *rm, int n, int nmissing,
size_t psize;
psize = sizeof (invlog[0][0]) * n * nmissing;
size_t psize;
psize = sizeof (invlog[0][0]) * n * nmissing;
- p = kmem_alloc(psize, KM_
SLEEP
);
+ p = kmem_alloc(psize, KM_
PUSHPAGE
);
for (pp = p, i = 0; i < nmissing; i++) {
invlog[i] = pp;
for (pp = p, i = 0; i < nmissing; i++) {
invlog[i] = pp;
@@
-1313,7
+1314,7
@@
vdev_raidz_reconstruct_general(raidz_map_t *rm, int *tgts, int ntgts)
psize = (sizeof (rows[0][0]) + sizeof (invrows[0][0])) *
nmissing_rows * n + sizeof (used[0]) * n;
psize = (sizeof (rows[0][0]) + sizeof (invrows[0][0])) *
nmissing_rows * n + sizeof (used[0]) * n;
- p = kmem_alloc(psize, KM_
SLEEP
);
+ p = kmem_alloc(psize, KM_
PUSHPAGE
);
for (pp = p, i = 0; i < nmissing_rows; i++) {
rows[i] = pp;
for (pp = p, i = 0; i < nmissing_rows; i++) {
rows[i] = pp;
@@
-1441,7
+1442,8
@@
vdev_raidz_reconstruct(raidz_map_t *rm, int *t, int nt)
}
static int
}
static int
-vdev_raidz_open(vdev_t *vd, uint64_t *asize, uint64_t *ashift)
+vdev_raidz_open(vdev_t *vd, uint64_t *asize, uint64_t *max_asize,
+ uint64_t *ashift)
{
vdev_t *cvd;
uint64_t nparity = vd->vdev_nparity;
{
vdev_t *cvd;
uint64_t nparity = vd->vdev_nparity;
@@
-1469,10
+1471,12
@@
vdev_raidz_open(vdev_t *vd, uint64_t *asize, uint64_t *ashift)
}
*asize = MIN(*asize - 1, cvd->vdev_asize - 1) + 1;
}
*asize = MIN(*asize - 1, cvd->vdev_asize - 1) + 1;
+ *max_asize = MIN(*max_asize - 1, cvd->vdev_max_asize - 1) + 1;
*ashift = MAX(*ashift, cvd->vdev_ashift);
}
*asize *= vd->vdev_children;
*ashift = MAX(*ashift, cvd->vdev_ashift);
}
*asize *= vd->vdev_children;
+ *max_asize *= vd->vdev_children;
if (numerrors > nparity) {
vd->vdev_stat.vs_aux = VDEV_AUX_NO_REPLICAS;
if (numerrors > nparity) {
vd->vdev_stat.vs_aux = VDEV_AUX_NO_REPLICAS;