Hi,

I'm trying to shrink a filesystem using resize_ffs(8),
but I keep getting an error:

resize_ffs: read failed: Invalid argument


Here's the setup:

I start out with a 1GB disk with two 512MB partitions:

$ sudo disklabel vnd0
[...]
#        size    offset     fstype [fsize bsize  cpg/sgs]
 a:   1048576         0     4.2BSD      0     0     0 # (Cyl.      0 -    511)
 b:   1048576   1048576     4.2BSD      0     0     0 # (Cyl.    512 -   1023)
 d:   2097152         0     unused      0     0       # (Cyl.      0 -   1023)
$ sudo newfs -C 2 /dev/rvnd0a
[...]
$ sudo newfs -C 2 /dev/rvnd0b
[...]

I can easily grow partitiona 'a' to the size of the
full disk:

$ sudo disklabel -e vnd0
[ becomes now: ]
#        size    offset     fstype [fsize bsize  cpg/sgs]
 a:   2097152         0     4.2BSD      0     0     0 # (Cyl.      0 -   1023)
 d:   2097152         0     unused      0     0       # (Cyl.      0 -   1023)

$ sudo fsck_ffs -f /dev/rvnd0a >/dev/null
$ sudo resize_ffs /dev/rvnd0a
[...]
$ sudo mount /dev/vnd0a /mnt
$ df -h /mnt
Filesystem         Size       Used      Avail %Cap  Mounted on
/dev/vnd0a         963M       1.0K       915M   0%  /mnt

Now trying to shrink it again:

$ sudo umount /mnt
$ sudo disklabel -e vnd0
[ back to two '1048576' sized partitions ]
$ sudo fsck_ffs -y -f /dev/rvnd0b
[ all ok ]
$ sudo resize_ffs -v /dev/rvnd0b
No change requested: already 524288 blocks
$ sudo fsck_ffs -y -f /dev/rvnd0a
** /dev/rvnd0a

CANNOT READ: BLK 2010160
CONTINUE? yes

THE FOLLOWING DISK SECTORS COULD NOT BE READ: 2010160, 2010161, 2010162, 
2010163,
/dev/rvnd0a: CANNOT FIGURE OUT SECTORS PER CYLINDER

$ sudo resize_ffs -v /dev/rvnd0a
resize_ffs: read failed: Invalid argument
$ 

So the second partition worked out just fine, but
vnd0a could not be shrunk.  (It's not surprising that
fsck couldn't read the noted sectors prior to running
resize_ffs, since those were now beyond its new
size.)

So... how do I shrink a filesystem?

-Jan

Reply via email to