On 3/20/19 1:56 PM, Oguz Bektas wrote: > runs fstrim on the rootfs and all mountpoints of a given container. > > Signed-off-by: Oguz Bektas <o.bek...@proxmox.com> > --- > src/PVE/CLI/pct.pm | 41 +++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 41 insertions(+) > > diff --git a/src/PVE/CLI/pct.pm b/src/PVE/CLI/pct.pm > index 794bc45..f89e183 100755 > --- a/src/PVE/CLI/pct.pm > +++ b/src/PVE/CLI/pct.pm > @@ -755,6 +755,45 @@ __PACKAGE__->register_method ({ > return undef; > }}); > > +__PACKAGE__->register_method ({ > + name => 'fstrim', > + path => 'fstrim', > + method => 'POST', > + description => "Run fstrim on a chosen CT.", > + parameters => { > + additionalProperties => 0, > + properties => { > + vmid => get_standard_option('pve-vmid', { completion => > \&PVE::LXC::complete_ctid }), > + }, > + }, > + returns => { type => 'null' }, > + code => sub { > + > + my ($param) = @_; > + my $vmid = $param->{'vmid'}; > + > + my $rootdir = "/var/lib/lxc/$vmid/rootfs"; > + > + my $storecfg = PVE::Storage::config(); > + PVE::LXC::Config->lock_config($vmid, sub {
oh, and why lock? "lock_config" is for short running operations, for longer you should use it only to place a "lock" entry to the config, do your long operation and then remove the lock again in a lock_config call. But for fstrim you do not need a lock at all, or? > + my $conf = PVE::LXC::Config->load_config($vmid); > + PVE::LXC::mount_all($vmid, $storecfg, $conf); > + eval { > + my $path = ""; > + PVE::LXC::Config->foreach_mountpoint($conf, sub { > + my ($name, $mp) = @_; > + $path = $mp->{mp}; > + my $cmd = ["fstrim", "-v", "$rootdir$path"]; > + PVE::Tools::run_command($cmd); > + }); > + }; > + > + PVE::LXC::umount_all($vmid, $storecfg, $conf, 0); > + }); > + > + return undef; > + }}); > + > our $cmddef = { > list=> [ 'PVE::API2::LXC', 'vmlist', [], { node => $nodename }, sub { > my $res = shift; > @@ -841,6 +880,8 @@ our $cmddef = { > > cpusets => [ __PACKAGE__, 'cpusets', []], > > + fstrim => [ __PACKAGE__, 'fstrim', ['vmid']], > + > }; > > > _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel