hi, On Thu, Mar 21, 2019 at 06:59:42AM +0100, Thomas Lamprecht wrote: > 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 { > re previous message about running cts: i've tested both on running and stopped cts, worked as expected > 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? the operation itself takes about a few seconds usually, i put the lock_config there to make sure nothing funny happens while we're mounting the container in order to run fstrim on it and then unmounting. i figured it's fitting in this situation. what do you think? > > > + 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