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

Reply via email to