disklabel: something weird with R(esize) in -E(ditor)

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

disklabel: something weird with R(esize) in -E(ditor)

Artturi Alm
Hi,

using R to resize auto allocated partition truncates fsize and bsize
to 0 of the last partition, like shown below with arm64 snapshot.
this may be just visual, i haven't tried proceeding w/o resizing the
last partition to gain those back.

-Artturi


Available disks are: sd0.
Which disk is the root disk? ('?' for details) [sd0]
MBR has invalid signature; not showing it.
Use (W)hole disk or (E)dit the MBR? [whole]
Creating a msdos partition and an OpenBSD partition for rest of sd0...done.
/dev/rsd0i: 32668 sectors in 8167 FAT16 clusters (2048 bytes/cluster)
bps=512 spc=4 res=1 nft=2 rde=512 sec=32768 mid=0xf8 spf=32 spt=63 hds=255 hid=8192
The auto-allocated layout for sd0 is:
#                size           offset  fstype [fsize bsize   cpg]
  a:          1024.0M            40960  4.2BSD   2048 16384     1 # /
  b:          1170.0M          2138112    swap                    
  c:         60240.0M                0  unused                    
  d:          4096.0M          4534304  4.2BSD   2048 16384     1 # /tmp
  e:          5924.0M         12922880  4.2BSD   2048 16384     1 # /var
  f:          2048.0M         25055264  4.2BSD   2048 16384     1 # /usr
  g:          1024.0M         29249568  4.2BSD   2048 16384     1 # /usr/X11R6
  h:          8529.7M         31346720  4.2BSD   2048 16384     1 # /usr/local
  i:            16.0M             8192   MSDOS                    
  j:          2048.0M         48815520  4.2BSD   2048 16384     1 # /usr/src
  k:          6144.0M         53009824  4.2BSD   2048 16384     1 # /usr/obj
  l:         28212.3M         65592736  4.2BSD   2048 16384     1 # /home
Use (A)uto layout, (E)dit auto layout, or create (C)ustom layout? [a] e
Label editor (enter '?' for help at any prompt)
> p g
OpenBSD area: 40960-123371520; size: 58.8G; free: 0.0G
#                size           offset  fstype [fsize bsize   cpg]
  a:             1.0G            40960  4.2BSD   2048 16384     1 # /
  b:             1.1G          2138112    swap                    
  c:            58.8G                0  unused                    
  d:             4.0G          4534304  4.2BSD   2048 16384     1 # /tmp
  e:             5.8G         12922880  4.2BSD   2048 16384     1 # /var
  f:             2.0G         25055264  4.2BSD   2048 16384     1 # /usr
  g:             1.0G         29249568  4.2BSD   2048 16384     1 # /usr/X11R6
  h:             8.3G         31346720  4.2BSD   2048 16384     1 # /usr/local
  i:             0.0G             8192   MSDOS                    
  j:             2.0G         48815520  4.2BSD   2048 16384     1 # /usr/src
  k:             6.0G         53009824  4.2BSD   2048 16384     1 # /usr/obj
  l:            27.6G         65592736  4.2BSD   2048 16384     1 # /home
> R b
[+|-]new size (with unit): [2396176] 4g
Partition l shrunk to 51786368 sectors to make room
> p g
OpenBSD area: 40960-123371520; size: 58.8G; free: 0.0G
#                size           offset  fstype [fsize bsize   cpg]
  a:             1.0G            40960  4.2BSD   2048 16384     1 # /
  b:             4.0G          2138112    swap                    
  c:            58.8G                0  unused                    
  d:             4.0G         10526720  4.2BSD   2048 16384     1 # /tmp
  e:             5.8G         18915296  4.2BSD   2048 16384     1 # /var
  f:             2.0G         31047680  4.2BSD   2048 16384     1 # /usr
  g:             1.0G         35241984  4.2BSD   2048 16384     1 # /usr/X11R6
  h:             8.3G         37339136  4.2BSD   2048 16384     1 # /usr/local
  i:             0.0G             8192   MSDOS                    
  j:             2.0G         54807936  4.2BSD   2048 16384     1 # /usr/src
  k:             6.0G         59002240  4.2BSD   2048 16384     1 # /usr/obj
  l:            24.7G         71585152  4.2BSD      0     0     1 # /home
> R l
[+|-]new size (with unit): [51786368]
> p g
OpenBSD area: 40960-123371520; size: 58.8G; free: 0.0G
#                size           offset  fstype [fsize bsize   cpg]
  a:             1.0G            40960  4.2BSD   2048 16384     1 # /
  b:             4.0G          2138112    swap                    
  c:            58.8G                0  unused                    
  d:             4.0G         10526720  4.2BSD   2048 16384     1 # /tmp
  e:             5.8G         18915296  4.2BSD   2048 16384     1 # /var
  f:             2.0G         31047680  4.2BSD   2048 16384     1 # /usr
  g:             1.0G         35241984  4.2BSD   2048 16384     1 # /usr/X11R6
  h:             8.3G         37339136  4.2BSD   2048 16384     1 # /usr/local
  i:             0.0G             8192   MSDOS                    
  j:             2.0G         54807936  4.2BSD   2048 16384     1 # /usr/src
  k:             6.0G         59002240  4.2BSD   2048 16384     1 # /usr/obj
  l:            24.7G         71585152  4.2BSD   2048 16384     1 # /home
> R j
[+|-]new size (with unit): [4194304] 3g
Partition l shrunk to 49689216 sectors to make room
> p g
OpenBSD area: 40960-123371520; size: 58.8G; free: 0.0G
#                size           offset  fstype [fsize bsize   cpg]
  a:             1.0G            40960  4.2BSD   2048 16384     1 # /
  b:             4.0G          2138112    swap                    
  c:            58.8G                0  unused                    
  d:             4.0G         10526720  4.2BSD   2048 16384     1 # /tmp
  e:             5.8G         18915296  4.2BSD   2048 16384     1 # /var
  f:             2.0G         31047680  4.2BSD   2048 16384     1 # /usr
  g:             1.0G         35241984  4.2BSD   2048 16384     1 # /usr/X11R6
  h:             8.3G         37339136  4.2BSD   2048 16384     1 # /usr/local
  i:             0.0G             8192   MSDOS                    
  j:             3.0G         54807936  4.2BSD   2048 16384     1 # /usr/src
  k:             6.0G         61099392  4.2BSD   2048 16384     1 # /usr/obj
  l:            23.7G         73682304  4.2BSD      0     0     1 # /home
> w
> p g
OpenBSD area: 40960-123371520; size: 58.8G; free: 0.0G
#                size           offset  fstype [fsize bsize   cpg]
  a:             1.0G            40960  4.2BSD   2048 16384     1 # /
  b:             4.0G          2138112    swap                    
  c:            58.8G                0  unused                    
  d:             4.0G         10526720  4.2BSD   2048 16384     1 # /tmp
  e:             5.8G         18915296  4.2BSD   2048 16384     1 # /var
  f:             2.0G         31047680  4.2BSD   2048 16384     1 # /usr
  g:             1.0G         35241984  4.2BSD   2048 16384     1 # /usr/X11R6
  h:             8.3G         37339136  4.2BSD   2048 16384     1 # /usr/local
  i:             0.0G             8192   MSDOS                    
  j:             3.0G         54807936  4.2BSD   2048 16384     1 # /usr/src
  k:             6.0G         61099392  4.2BSD   2048 16384     1 # /usr/obj
  l:            23.7G         73682304  4.2BSD      0     0     1 # /home
> R l
Resize only implemented for auto allocated labels
> ?
Available commands:
 ? | h    - show help                 n [part] - set mount point
 A        - auto partition all space  p [unit] - print partitions
 a [part] - add partition             q        - quit & save changes
 b        - set OpenBSD boundaries    R [part] - resize auto allocated partition
 c [part] - change partition size     r        - display free space
 D        - reset label to default    s [path] - save label to file
 d [part] - delete partition          U        - undo all changes
 e        - edit drive parameters     u        - undo last change
 g [d|u]  - [d]isk or [u]ser geometry w        - write label to disk
 i        - modify disklabel UID      X        - toggle expert mode
 l [unit] - print disk label header   x        - exit & lose changes
 M        - disklabel(8) man page     z        - delete all partitions
 m [part] - modify partition

Suffixes can be used to indicate units other than sectors:
 'b' (bytes), 'k' (kilobytes), 'm' (megabytes), 'g' (gigabytes) 't' (terabytes)
 'c' (cylinders), '%' (% of total disk), '&' (% of free space).
Values in non-sector units are truncated to the nearest cylinder boundary.
> m l
offset: [73682304]
size: [49689216]
FS type: [4.2BSD]
mount point: [/home]
> p g
OpenBSD area: 40960-123371520; size: 58.8G; free: 0.0G
#                size           offset  fstype [fsize bsize   cpg]
  a:             1.0G            40960  4.2BSD   2048 16384     1 # /
  b:             4.0G          2138112    swap                    
  c:            58.8G                0  unused                    
  d:             4.0G         10526720  4.2BSD   2048 16384     1 # /tmp
  e:             5.8G         18915296  4.2BSD   2048 16384     1 # /var
  f:             2.0G         31047680  4.2BSD   2048 16384     1 # /usr
  g:             1.0G         35241984  4.2BSD   2048 16384     1 # /usr/X11R6
  h:             8.3G         37339136  4.2BSD   2048 16384     1 # /usr/local
  i:             0.0G             8192   MSDOS                    
  j:             3.0G         54807936  4.2BSD   2048 16384     1 # /usr/src
  k:             6.0G         61099392  4.2BSD   2048 16384     1 # /usr/obj
  l:            23.7G         73682304  4.2BSD   2048 16384     1 # /home
> w
> q
No label changes.

Reply | Threaded
Open this post in threaded view
|

Re: disklabel: something weird with R(esize) in -E(ditor)

Otto Moerbeek
On Thu, Feb 21, 2019 at 11:49:51AM +0200, Artturi Alm wrote:

> Hi,
>
> using R to resize auto allocated partition truncates fsize and bsize
> to 0 of the last partition, like shown below with arm64 snapshot.
> this may be just visual, i haven't tried proceeding w/o resizing the
> last partition to gain those back.
>
> -Artturi
>
>
> Available disks are: sd0.
> Which disk is the root disk? ('?' for details) [sd0]
> MBR has invalid signature; not showing it.
> Use (W)hole disk or (E)dit the MBR? [whole]
> Creating a msdos partition and an OpenBSD partition for rest of sd0...done.
> /dev/rsd0i: 32668 sectors in 8167 FAT16 clusters (2048 bytes/cluster)
> bps=512 spc=4 res=1 nft=2 rde=512 sec=32768 mid=0xf8 spf=32 spt=63 hds=255 hid=8192
> The auto-allocated layout for sd0 is:
> #                size           offset  fstype [fsize bsize   cpg]
>   a:          1024.0M            40960  4.2BSD   2048 16384     1 # /
>   b:          1170.0M          2138112    swap                    
>   c:         60240.0M                0  unused                    
>   d:          4096.0M          4534304  4.2BSD   2048 16384     1 # /tmp
>   e:          5924.0M         12922880  4.2BSD   2048 16384     1 # /var
>   f:          2048.0M         25055264  4.2BSD   2048 16384     1 # /usr
>   g:          1024.0M         29249568  4.2BSD   2048 16384     1 # /usr/X11R6
>   h:          8529.7M         31346720  4.2BSD   2048 16384     1 # /usr/local
>   i:            16.0M             8192   MSDOS                    
>   j:          2048.0M         48815520  4.2BSD   2048 16384     1 # /usr/src
>   k:          6144.0M         53009824  4.2BSD   2048 16384     1 # /usr/obj
>   l:         28212.3M         65592736  4.2BSD   2048 16384     1 # /home
> Use (A)uto layout, (E)dit auto layout, or create (C)ustom layout? [a] e
> Label editor (enter '?' for help at any prompt)
> > p g
> OpenBSD area: 40960-123371520; size: 58.8G; free: 0.0G
> #                size           offset  fstype [fsize bsize   cpg]
>   a:             1.0G            40960  4.2BSD   2048 16384     1 # /
>   b:             1.1G          2138112    swap                    
>   c:            58.8G                0  unused                    
>   d:             4.0G          4534304  4.2BSD   2048 16384     1 # /tmp
>   e:             5.8G         12922880  4.2BSD   2048 16384     1 # /var
>   f:             2.0G         25055264  4.2BSD   2048 16384     1 # /usr
>   g:             1.0G         29249568  4.2BSD   2048 16384     1 # /usr/X11R6
>   h:             8.3G         31346720  4.2BSD   2048 16384     1 # /usr/local
>   i:             0.0G             8192   MSDOS                    
>   j:             2.0G         48815520  4.2BSD   2048 16384     1 # /usr/src
>   k:             6.0G         53009824  4.2BSD   2048 16384     1 # /usr/obj
>   l:            27.6G         65592736  4.2BSD   2048 16384     1 # /home
> > R b
> [+|-]new size (with unit): [2396176] 4g
> Partition l shrunk to 51786368 sectors to make room
> > p g
> OpenBSD area: 40960-123371520; size: 58.8G; free: 0.0G
> #                size           offset  fstype [fsize bsize   cpg]
>   a:             1.0G            40960  4.2BSD   2048 16384     1 # /
>   b:             4.0G          2138112    swap                    
>   c:            58.8G                0  unused                    
>   d:             4.0G         10526720  4.2BSD   2048 16384     1 # /tmp
>   e:             5.8G         18915296  4.2BSD   2048 16384     1 # /var
>   f:             2.0G         31047680  4.2BSD   2048 16384     1 # /usr
>   g:             1.0G         35241984  4.2BSD   2048 16384     1 # /usr/X11R6
>   h:             8.3G         37339136  4.2BSD   2048 16384     1 # /usr/local
>   i:             0.0G             8192   MSDOS                    
>   j:             2.0G         54807936  4.2BSD   2048 16384     1 # /usr/src
>   k:             6.0G         59002240  4.2BSD   2048 16384     1 # /usr/obj
>   l:            24.7G         71585152  4.2BSD      0     0     1 # /home
> > R l
> [+|-]new size (with unit): [51786368]
> > p g
> OpenBSD area: 40960-123371520; size: 58.8G; free: 0.0G
> #                size           offset  fstype [fsize bsize   cpg]
>   a:             1.0G            40960  4.2BSD   2048 16384     1 # /
>   b:             4.0G          2138112    swap                    
>   c:            58.8G                0  unused                    
>   d:             4.0G         10526720  4.2BSD   2048 16384     1 # /tmp
>   e:             5.8G         18915296  4.2BSD   2048 16384     1 # /var
>   f:             2.0G         31047680  4.2BSD   2048 16384     1 # /usr
>   g:             1.0G         35241984  4.2BSD   2048 16384     1 # /usr/X11R6
>   h:             8.3G         37339136  4.2BSD   2048 16384     1 # /usr/local
>   i:             0.0G             8192   MSDOS                    
>   j:             2.0G         54807936  4.2BSD   2048 16384     1 # /usr/src
>   k:             6.0G         59002240  4.2BSD   2048 16384     1 # /usr/obj
>   l:            24.7G         71585152  4.2BSD   2048 16384     1 # /home
> > R j
> [+|-]new size (with unit): [4194304] 3g
> Partition l shrunk to 49689216 sectors to make room
> > p g
> OpenBSD area: 40960-123371520; size: 58.8G; free: 0.0G
> #                size           offset  fstype [fsize bsize   cpg]
>   a:             1.0G            40960  4.2BSD   2048 16384     1 # /
>   b:             4.0G          2138112    swap                    
>   c:            58.8G                0  unused                    
>   d:             4.0G         10526720  4.2BSD   2048 16384     1 # /tmp
>   e:             5.8G         18915296  4.2BSD   2048 16384     1 # /var
>   f:             2.0G         31047680  4.2BSD   2048 16384     1 # /usr
>   g:             1.0G         35241984  4.2BSD   2048 16384     1 # /usr/X11R6
>   h:             8.3G         37339136  4.2BSD   2048 16384     1 # /usr/local
>   i:             0.0G             8192   MSDOS                    
>   j:             3.0G         54807936  4.2BSD   2048 16384     1 # /usr/src
>   k:             6.0G         61099392  4.2BSD   2048 16384     1 # /usr/obj
>   l:            23.7G         73682304  4.2BSD      0     0     1 # /home
> > w
> > p g
> OpenBSD area: 40960-123371520; size: 58.8G; free: 0.0G
> #                size           offset  fstype [fsize bsize   cpg]
>   a:             1.0G            40960  4.2BSD   2048 16384     1 # /
>   b:             4.0G          2138112    swap                    
>   c:            58.8G                0  unused                    
>   d:             4.0G         10526720  4.2BSD   2048 16384     1 # /tmp
>   e:             5.8G         18915296  4.2BSD   2048 16384     1 # /var
>   f:             2.0G         31047680  4.2BSD   2048 16384     1 # /usr
>   g:             1.0G         35241984  4.2BSD   2048 16384     1 # /usr/X11R6
>   h:             8.3G         37339136  4.2BSD   2048 16384     1 # /usr/local
>   i:             0.0G             8192   MSDOS                    
>   j:             3.0G         54807936  4.2BSD   2048 16384     1 # /usr/src
>   k:             6.0G         61099392  4.2BSD   2048 16384     1 # /usr/obj
>   l:            23.7G         73682304  4.2BSD      0     0     1 # /home
> > R l
> Resize only implemented for auto allocated labels
> > ?
> Available commands:
>  ? | h    - show help                 n [part] - set mount point
>  A        - auto partition all space  p [unit] - print partitions
>  a [part] - add partition             q        - quit & save changes
>  b        - set OpenBSD boundaries    R [part] - resize auto allocated partition
>  c [part] - change partition size     r        - display free space
>  D        - reset label to default    s [path] - save label to file
>  d [part] - delete partition          U        - undo all changes
>  e        - edit drive parameters     u        - undo last change
>  g [d|u]  - [d]isk or [u]ser geometry w        - write label to disk
>  i        - modify disklabel UID      X        - toggle expert mode
>  l [unit] - print disk label header   x        - exit & lose changes
>  M        - disklabel(8) man page     z        - delete all partitions
>  m [part] - modify partition
>
> Suffixes can be used to indicate units other than sectors:
>  'b' (bytes), 'k' (kilobytes), 'm' (megabytes), 'g' (gigabytes) 't' (terabytes)
>  'c' (cylinders), '%' (% of total disk), '&' (% of free space).
> Values in non-sector units are truncated to the nearest cylinder boundary.
> > m l
> offset: [73682304]
> size: [49689216]
> FS type: [4.2BSD]
> mount point: [/home]
> > p g
> OpenBSD area: 40960-123371520; size: 58.8G; free: 0.0G
> #                size           offset  fstype [fsize bsize   cpg]
>   a:             1.0G            40960  4.2BSD   2048 16384     1 # /
>   b:             4.0G          2138112    swap                    
>   c:            58.8G                0  unused                    
>   d:             4.0G         10526720  4.2BSD   2048 16384     1 # /tmp
>   e:             5.8G         18915296  4.2BSD   2048 16384     1 # /var
>   f:             2.0G         31047680  4.2BSD   2048 16384     1 # /usr
>   g:             1.0G         35241984  4.2BSD   2048 16384     1 # /usr/X11R6
>   h:             8.3G         37339136  4.2BSD   2048 16384     1 # /usr/local
>   i:             0.0G             8192   MSDOS                    
>   j:             3.0G         54807936  4.2BSD   2048 16384     1 # /usr/src
>   k:             6.0G         61099392  4.2BSD   2048 16384     1 # /usr/obj
>   l:            23.7G         73682304  4.2BSD   2048 16384     1 # /home
> > w
> > q
> No label changes.
>

Thanks for the report. This should fix it,

        -Otto

Index: editor.c
===================================================================
RCS file: /cvs/src/sbin/disklabel/editor.c,v
retrieving revision 1.353
diff -u -p -r1.353 editor.c
--- editor.c 25 Jan 2019 00:19:26 -0000 1.353
+++ editor.c 21 Feb 2019 11:35:07 -0000
@@ -795,10 +795,10 @@ editor_resize(struct disklabel *lp, char
  DL_SETPOFFSET(pp, off);
  if (off + DL_GETPSIZE(pp) > ending_sector) {
  DL_SETPSIZE(pp, ending_sector - off);
- pp->p_fragblock = 0;
- if (get_fsize(&label, partno) == 1 ||
-    get_bsize(&label, partno) == 1 ||
-    get_cpg(&label, partno) == 1)
+ pp->p_fragblock = DISKLABELV1_FFS_FRAGBLOCK(0, 0);
+ if (get_fsize(&label, i) == 1 ||
+    get_bsize(&label, i) == 1 ||
+    get_cpg(&label, i) == 1)
  return;
  shrunk = i;
  }

Reply | Threaded
Open this post in threaded view
|

Re: disklabel: something weird with R(esize) in -E(ditor)

Kenneth R Westerback-2
On Thu, Feb 21, 2019 at 12:36:01PM +0100, Otto Moerbeek wrote:

> On Thu, Feb 21, 2019 at 11:49:51AM +0200, Artturi Alm wrote:
>
> > Hi,
> >
> > using R to resize auto allocated partition truncates fsize and bsize
> > to 0 of the last partition, like shown below with arm64 snapshot.
> > this may be just visual, i haven't tried proceeding w/o resizing the
> > last partition to gain those back.
> >
> > -Artturi
> >
> >
> > Available disks are: sd0.
> > Which disk is the root disk? ('?' for details) [sd0]
> > MBR has invalid signature; not showing it.
> > Use (W)hole disk or (E)dit the MBR? [whole]
> > Creating a msdos partition and an OpenBSD partition for rest of sd0...done.
> > /dev/rsd0i: 32668 sectors in 8167 FAT16 clusters (2048 bytes/cluster)
> > bps=512 spc=4 res=1 nft=2 rde=512 sec=32768 mid=0xf8 spf=32 spt=63 hds=255 hid=8192
> > The auto-allocated layout for sd0 is:
> > #                size           offset  fstype [fsize bsize   cpg]
> >   a:          1024.0M            40960  4.2BSD   2048 16384     1 # /
> >   b:          1170.0M          2138112    swap                    
> >   c:         60240.0M                0  unused                    
> >   d:          4096.0M          4534304  4.2BSD   2048 16384     1 # /tmp
> >   e:          5924.0M         12922880  4.2BSD   2048 16384     1 # /var
> >   f:          2048.0M         25055264  4.2BSD   2048 16384     1 # /usr
> >   g:          1024.0M         29249568  4.2BSD   2048 16384     1 # /usr/X11R6
> >   h:          8529.7M         31346720  4.2BSD   2048 16384     1 # /usr/local
> >   i:            16.0M             8192   MSDOS                    
> >   j:          2048.0M         48815520  4.2BSD   2048 16384     1 # /usr/src
> >   k:          6144.0M         53009824  4.2BSD   2048 16384     1 # /usr/obj
> >   l:         28212.3M         65592736  4.2BSD   2048 16384     1 # /home
> > Use (A)uto layout, (E)dit auto layout, or create (C)ustom layout? [a] e
> > Label editor (enter '?' for help at any prompt)
> > > p g
> > OpenBSD area: 40960-123371520; size: 58.8G; free: 0.0G
> > #                size           offset  fstype [fsize bsize   cpg]
> >   a:             1.0G            40960  4.2BSD   2048 16384     1 # /
> >   b:             1.1G          2138112    swap                    
> >   c:            58.8G                0  unused                    
> >   d:             4.0G          4534304  4.2BSD   2048 16384     1 # /tmp
> >   e:             5.8G         12922880  4.2BSD   2048 16384     1 # /var
> >   f:             2.0G         25055264  4.2BSD   2048 16384     1 # /usr
> >   g:             1.0G         29249568  4.2BSD   2048 16384     1 # /usr/X11R6
> >   h:             8.3G         31346720  4.2BSD   2048 16384     1 # /usr/local
> >   i:             0.0G             8192   MSDOS                    
> >   j:             2.0G         48815520  4.2BSD   2048 16384     1 # /usr/src
> >   k:             6.0G         53009824  4.2BSD   2048 16384     1 # /usr/obj
> >   l:            27.6G         65592736  4.2BSD   2048 16384     1 # /home
> > > R b
> > [+|-]new size (with unit): [2396176] 4g
> > Partition l shrunk to 51786368 sectors to make room
> > > p g
> > OpenBSD area: 40960-123371520; size: 58.8G; free: 0.0G
> > #                size           offset  fstype [fsize bsize   cpg]
> >   a:             1.0G            40960  4.2BSD   2048 16384     1 # /
> >   b:             4.0G          2138112    swap                    
> >   c:            58.8G                0  unused                    
> >   d:             4.0G         10526720  4.2BSD   2048 16384     1 # /tmp
> >   e:             5.8G         18915296  4.2BSD   2048 16384     1 # /var
> >   f:             2.0G         31047680  4.2BSD   2048 16384     1 # /usr
> >   g:             1.0G         35241984  4.2BSD   2048 16384     1 # /usr/X11R6
> >   h:             8.3G         37339136  4.2BSD   2048 16384     1 # /usr/local
> >   i:             0.0G             8192   MSDOS                    
> >   j:             2.0G         54807936  4.2BSD   2048 16384     1 # /usr/src
> >   k:             6.0G         59002240  4.2BSD   2048 16384     1 # /usr/obj
> >   l:            24.7G         71585152  4.2BSD      0     0     1 # /home
> > > R l
> > [+|-]new size (with unit): [51786368]
> > > p g
> > OpenBSD area: 40960-123371520; size: 58.8G; free: 0.0G
> > #                size           offset  fstype [fsize bsize   cpg]
> >   a:             1.0G            40960  4.2BSD   2048 16384     1 # /
> >   b:             4.0G          2138112    swap                    
> >   c:            58.8G                0  unused                    
> >   d:             4.0G         10526720  4.2BSD   2048 16384     1 # /tmp
> >   e:             5.8G         18915296  4.2BSD   2048 16384     1 # /var
> >   f:             2.0G         31047680  4.2BSD   2048 16384     1 # /usr
> >   g:             1.0G         35241984  4.2BSD   2048 16384     1 # /usr/X11R6
> >   h:             8.3G         37339136  4.2BSD   2048 16384     1 # /usr/local
> >   i:             0.0G             8192   MSDOS                    
> >   j:             2.0G         54807936  4.2BSD   2048 16384     1 # /usr/src
> >   k:             6.0G         59002240  4.2BSD   2048 16384     1 # /usr/obj
> >   l:            24.7G         71585152  4.2BSD   2048 16384     1 # /home
> > > R j
> > [+|-]new size (with unit): [4194304] 3g
> > Partition l shrunk to 49689216 sectors to make room
> > > p g
> > OpenBSD area: 40960-123371520; size: 58.8G; free: 0.0G
> > #                size           offset  fstype [fsize bsize   cpg]
> >   a:             1.0G            40960  4.2BSD   2048 16384     1 # /
> >   b:             4.0G          2138112    swap                    
> >   c:            58.8G                0  unused                    
> >   d:             4.0G         10526720  4.2BSD   2048 16384     1 # /tmp
> >   e:             5.8G         18915296  4.2BSD   2048 16384     1 # /var
> >   f:             2.0G         31047680  4.2BSD   2048 16384     1 # /usr
> >   g:             1.0G         35241984  4.2BSD   2048 16384     1 # /usr/X11R6
> >   h:             8.3G         37339136  4.2BSD   2048 16384     1 # /usr/local
> >   i:             0.0G             8192   MSDOS                    
> >   j:             3.0G         54807936  4.2BSD   2048 16384     1 # /usr/src
> >   k:             6.0G         61099392  4.2BSD   2048 16384     1 # /usr/obj
> >   l:            23.7G         73682304  4.2BSD      0     0     1 # /home
> > > w
> > > p g
> > OpenBSD area: 40960-123371520; size: 58.8G; free: 0.0G
> > #                size           offset  fstype [fsize bsize   cpg]
> >   a:             1.0G            40960  4.2BSD   2048 16384     1 # /
> >   b:             4.0G          2138112    swap                    
> >   c:            58.8G                0  unused                    
> >   d:             4.0G         10526720  4.2BSD   2048 16384     1 # /tmp
> >   e:             5.8G         18915296  4.2BSD   2048 16384     1 # /var
> >   f:             2.0G         31047680  4.2BSD   2048 16384     1 # /usr
> >   g:             1.0G         35241984  4.2BSD   2048 16384     1 # /usr/X11R6
> >   h:             8.3G         37339136  4.2BSD   2048 16384     1 # /usr/local
> >   i:             0.0G             8192   MSDOS                    
> >   j:             3.0G         54807936  4.2BSD   2048 16384     1 # /usr/src
> >   k:             6.0G         61099392  4.2BSD   2048 16384     1 # /usr/obj
> >   l:            23.7G         73682304  4.2BSD      0     0     1 # /home
> > > R l
> > Resize only implemented for auto allocated labels
> > > ?
> > Available commands:
> >  ? | h    - show help                 n [part] - set mount point
> >  A        - auto partition all space  p [unit] - print partitions
> >  a [part] - add partition             q        - quit & save changes
> >  b        - set OpenBSD boundaries    R [part] - resize auto allocated partition
> >  c [part] - change partition size     r        - display free space
> >  D        - reset label to default    s [path] - save label to file
> >  d [part] - delete partition          U        - undo all changes
> >  e        - edit drive parameters     u        - undo last change
> >  g [d|u]  - [d]isk or [u]ser geometry w        - write label to disk
> >  i        - modify disklabel UID      X        - toggle expert mode
> >  l [unit] - print disk label header   x        - exit & lose changes
> >  M        - disklabel(8) man page     z        - delete all partitions
> >  m [part] - modify partition
> >
> > Suffixes can be used to indicate units other than sectors:
> >  'b' (bytes), 'k' (kilobytes), 'm' (megabytes), 'g' (gigabytes) 't' (terabytes)
> >  'c' (cylinders), '%' (% of total disk), '&' (% of free space).
> > Values in non-sector units are truncated to the nearest cylinder boundary.
> > > m l
> > offset: [73682304]
> > size: [49689216]
> > FS type: [4.2BSD]
> > mount point: [/home]
> > > p g
> > OpenBSD area: 40960-123371520; size: 58.8G; free: 0.0G
> > #                size           offset  fstype [fsize bsize   cpg]
> >   a:             1.0G            40960  4.2BSD   2048 16384     1 # /
> >   b:             4.0G          2138112    swap                    
> >   c:            58.8G                0  unused                    
> >   d:             4.0G         10526720  4.2BSD   2048 16384     1 # /tmp
> >   e:             5.8G         18915296  4.2BSD   2048 16384     1 # /var
> >   f:             2.0G         31047680  4.2BSD   2048 16384     1 # /usr
> >   g:             1.0G         35241984  4.2BSD   2048 16384     1 # /usr/X11R6
> >   h:             8.3G         37339136  4.2BSD   2048 16384     1 # /usr/local
> >   i:             0.0G             8192   MSDOS                    
> >   j:             3.0G         54807936  4.2BSD   2048 16384     1 # /usr/src
> >   k:             6.0G         61099392  4.2BSD   2048 16384     1 # /usr/obj
> >   l:            23.7G         73682304  4.2BSD   2048 16384     1 # /home
> > > w
> > > q
> > No label changes.
> >
>
> Thanks for the report. This should fix it,
>
> -Otto
>
> Index: editor.c
> ===================================================================
> RCS file: /cvs/src/sbin/disklabel/editor.c,v
> retrieving revision 1.353
> diff -u -p -r1.353 editor.c
> --- editor.c 25 Jan 2019 00:19:26 -0000 1.353
> +++ editor.c 21 Feb 2019 11:35:07 -0000
> @@ -795,10 +795,10 @@ editor_resize(struct disklabel *lp, char
>   DL_SETPOFFSET(pp, off);
>   if (off + DL_GETPSIZE(pp) > ending_sector) {
>   DL_SETPSIZE(pp, ending_sector - off);
> - pp->p_fragblock = 0;
> - if (get_fsize(&label, partno) == 1 ||
> -    get_bsize(&label, partno) == 1 ||
> -    get_cpg(&label, partno) == 1)
> + pp->p_fragblock = DISKLABELV1_FFS_FRAGBLOCK(0, 0);
> + if (get_fsize(&label, i) == 1 ||
> +    get_bsize(&label, i) == 1 ||
> +    get_cpg(&label, i) == 1)
>   return;
>   shrunk = i;
>   }
>

Oops, my bad. That diff looks good to me. ok krw@

.... Ken