aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/md
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2024-10-13 21:28:22 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2024-10-14 08:08:21 +0000
commit4bf34c597c44a2393ac5ec483e9cecac128d8202 (patch)
treec7b79d3bc92d41912ba9a9a983c915143a8092b4 /sys/dev/md
parent793c668ec5b879ff660ed87919a9d5946840a878 (diff)
Diffstat (limited to 'sys/dev/md')
-rw-r--r--sys/dev/md/md.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/sys/dev/md/md.c b/sys/dev/md/md.c
index af05373ae1d8..5d4f91d05917 100644
--- a/sys/dev/md/md.c
+++ b/sys/dev/md/md.c
@@ -1297,6 +1297,7 @@ mdinit(struct md_s *sc)
{
struct g_geom *gp;
struct g_provider *pp;
+ unsigned remn;
g_topology_lock();
gp = g_new_geomf(&g_md_class, "md%d", sc->unit);
@@ -1305,6 +1306,13 @@ mdinit(struct md_s *sc)
devstat_remove_entry(pp->stat);
pp->stat = NULL;
pp->flags |= G_PF_DIRECT_SEND | G_PF_DIRECT_RECEIVE;
+ /* Prune off any residual fractional sector. */
+ remn = sc->mediasize % sc->sectorsize;
+ if (remn != 0) {
+ printf("md%d: truncating fractional last sector by %u bytes\n",
+ sc->unit, remn);
+ sc->mediasize -= remn;
+ }
pp->mediasize = sc->mediasize;
pp->sectorsize = sc->sectorsize;
switch (sc->type) {
@@ -1674,7 +1682,7 @@ kern_mdattach_locked(struct thread *td, struct md_req *mdr)
{
struct md_s *sc;
unsigned sectsize;
- int error, i;
+ int error;
sx_assert(&md_sx, SA_XLOCKED);
@@ -1746,10 +1754,6 @@ err_after_new:
return (error);
}
- /* Prune off any residual fractional sector */
- i = sc->mediasize % sc->sectorsize;
- sc->mediasize -= i;
-
mdinit(sc);
return (0);
}