From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43821) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YnpTm-0001jt-2D for qemu-devel@nongnu.org; Thu, 30 Apr 2015 10:30:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YnpTi-0004EG-28 for qemu-devel@nongnu.org; Thu, 30 Apr 2015 10:30:18 -0400 Received: from outgoing-mail.quarantainenet.nl ([91.220.21.150]:39917) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YnpTh-00049m-Oq for qemu-devel@nongnu.org; Thu, 30 Apr 2015 10:30:13 -0400 From: Justin Ossevoort Date: Thu, 30 Apr 2015 16:29:56 +0200 Message-Id: <1430404198-10324-1-git-send-email-justin@quarantainenet.nl> Subject: [Qemu-devel] [PATCH v3 0/2] Fix guest-fstrim behaviour List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: mdroth@linux.vnet.ibm.com, Justin Ossevoort The qemu-ga 'guest-fstrim' command is currently not working properly. There are 2 issues: - The current implementation reuses a struct between ioctl() calls without reinitialising it's fields. This struct however is updated to reflect the result of the trim operation. Therefor only the first filesystem is thoroughly trimmed, the rest is only trimmed up to the amount that was trimmed by the previous filesystem. - The current implementation will return an error if some filesystem returned an unexpected error. The first issue consistently causes this issue when the 'guest-fstrim' is performed multiple times in a row when multiple filesystems are being trimmed, as this causes a trim request for at most 0 bytes, which is an error. The first patch fixes the first issue by explicitly resetting the struct used to perform the trim ioctl for each path. This is a pretty mundane change and fixes most use-cases. The second patch fixes the second issue by changing the returned value to return a per-path result. This way all paths are always trimmed and dependening on the outcome of the ioctl an error or some details about the trim are returned. There was an earlier request to mirror the fields from the 'guest-fsinfo' operation. The trim operation however need not happen at the mountpoint level. A logical future improvement would be to allow the caller to supply an optional list of paths they want to trim, without needing to have intimate details about the filesystem layout of the guest. Justin Ossevoort (2): qga/commands-posix: Fix bug in guest-fstrim qga/commands-posix: Return per path fstrim result qga/commands-posix.c | 63 ++++++++++++++++++++++++++++++++++++---------------- qga/qapi-schema.json | 32 +++++++++++++++++++++++--- 2 files changed, 73 insertions(+), 22 deletions(-) -- 2.1.4