非常に単純です。Fat32ファイルシステムを含むLVMパーティション(例:/ dev / mapper / foo-fat)があります。このLVMパーティションのサイズを縮小する前に(lvmreduceで実行します)、そこに含まれるFat32ファイルシステムのサイズを縮小したいと思います。
別れはそれを行うことができるはずですが、それを機能させるための魔法の呼び出しを見つけることができません。
答えなし + 締め切り = 自分で書く。
今後の参考のために、これは libparted を使用した数行のコードのみでした。読みやすくするために、エラー チェックなどを省略しました。呼び出し元は、新しいファイル システム サイズに対してパーティションに十分なスペースがあることを確認する責任があります。
#include <parted/parted.h>
int
resize_filesystem(const char *device, PedSector newsize)
{
PedDevice *dev = NULL;
PedGeometry *geom = NULL;
PedGeometry *new_geom = NULL;
PedFileSystem *fs = NULL;
int rc = 0;
dev = ped_device_get(device);
ped_device_open(dev);
geom = ped_geometry_new(dev, 0LL, dev->length);
fs = ped_file_system_open(geom);
new_geom = ped_geometry_new(dev, 0LL, newsize / dev->sector_size);
ped_file_system_resize(fs, new_geom, NULL);
ped_file_system_close(fs);
ped_geometry_destroy(geom);
ped_geometry_destroy(new_geom);
ped_device_close(dev);
return rc;
}