mirror of
https://github.com/opnsense/src.git
synced 2026-06-09 08:43:19 -04:00
md(4): always trim the last partial sector
PR: 281978
(cherry picked from commit 4bf34c597c)
This commit is contained in:
parent
d4bcad451f
commit
959f0d0cdb
1 changed files with 9 additions and 5 deletions
|
|
@ -1303,6 +1303,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);
|
||||
|
|
@ -1311,6 +1312,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) {
|
||||
|
|
@ -1680,7 +1688,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);
|
||||
|
||||
|
|
@ -1752,10 +1760,6 @@ err_after_new:
|
|||
return (error);
|
||||
}
|
||||
|
||||
/* Prune off any residual fractional sector */
|
||||
i = sc->mediasize % sc->sectorsize;
|
||||
sc->mediasize -= i;
|
||||
|
||||
mdinit(sc);
|
||||
return (0);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue