From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46963) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VnPaB-00032x-JK for qemu-devel@nongnu.org; Mon, 02 Dec 2013 04:14:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VnPa2-0000wI-Kz for qemu-devel@nongnu.org; Mon, 02 Dec 2013 04:14:23 -0500 Received: from e23smtp07.au.ibm.com ([202.81.31.140]:34448) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VnPa1-0000w0-UN for qemu-devel@nongnu.org; Mon, 02 Dec 2013 04:14:14 -0500 Received: from /spool/local by e23smtp07.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 2 Dec 2013 19:13:48 +1000 Received: from d23relay05.au.ibm.com (d23relay05.au.ibm.com [9.190.235.152]) by d23dlp02.au.ibm.com (Postfix) with ESMTP id 360242BB0055 for ; Mon, 2 Dec 2013 20:13:45 +1100 (EST) Received: from d23av04.au.ibm.com (d23av04.au.ibm.com [9.190.235.139]) by d23relay05.au.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id rB28tYQ28323332 for ; Mon, 2 Dec 2013 19:55:34 +1100 Received: from d23av04.au.ibm.com (localhost [127.0.0.1]) by d23av04.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id rB29Di94020623 for ; Mon, 2 Dec 2013 20:13:44 +1100 Message-ID: <529C4F44.107@linux.vnet.ibm.com> Date: Mon, 02 Dec 2013 17:13:40 +0800 From: Lei Li MIME-Version: 1.0 References: <1385719584-21114-1-git-send-email-lilei@linux.vnet.ibm.com> <1385719584-21114-7-git-send-email-lilei@linux.vnet.ibm.com> <20131129111427.GB3714@redhat.com> In-Reply-To: <20131129111427.GB3714@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 06/17] migration-local: add send_pipefd() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Daniel P. Berrange" Cc: aarcange@redhat.com, quintela@redhat.com, qemu-devel@nongnu.org, mrhines@linux.vnet.ibm.com, aliguori@amazon.com, lagarcia@br.ibm.com, pbonzini@redhat.com, rcj@linux.vnet.ibm.com On 11/29/2013 07:14 PM, Daniel P. Berrange wrote: > On Fri, Nov 29, 2013 at 06:06:13PM +0800, Lei Li wrote: >> This patch adds send_pipefd() to pass the pipe file descriptor >> to destination process. >> >> Signed-off-by: Lei Li >> --- >> migration-local.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ >> 1 files changed, 46 insertions(+), 0 deletions(-) >> >> diff --git a/migration-local.c b/migration-local.c >> index 929ed60..f479530 100644 >> --- a/migration-local.c >> +++ b/migration-local.c >> @@ -167,3 +167,49 @@ fail: >> g_free(s); >> return NULL; >> } >> + >> + >> +/* >> + * Pass a pipe file descriptor to another process. >> + * >> + * Return negative value If pipefd < 0. Return 0 on >> + * success. >> + * >> + */ >> +static int send_pipefd(int sockfd, int pipefd) >> +{ >> + struct msghdr msg; >> + struct iovec iov[1]; >> + ssize_t ret; >> + char req[1] = { 0x01 }; >> + >> + union { >> + struct cmsghdr cm; >> + char control[CMSG_SPACE(sizeof(int))]; >> + } control_un; >> + struct cmsghdr *cmptr; >> + >> + msg.msg_control = control_un.control; >> + msg.msg_controllen = sizeof(control_un.control); >> + >> + cmptr = CMSG_FIRSTHDR(&msg); >> + cmptr->cmsg_len = CMSG_LEN(sizeof(int)); >> + cmptr->cmsg_level = SOL_SOCKET; >> + cmptr->cmsg_type = SCM_RIGHTS; >> + *((int *) CMSG_DATA(cmptr)) = pipefd; >> + >> + msg.msg_name = NULL; >> + msg.msg_namelen = 0; >> + >> + iov[0].iov_base = req; >> + iov[0].iov_len = sizeof(req); >> + msg.msg_iov = iov; >> + msg.msg_iovlen = 1; >> + >> + ret = sendmsg(sockfd, &msg, 0); >> + if (ret <= 0) { >> + DPRINTF("sendmsg error: %s\n", strerror(errno)); >> + } >> + >> + return ret; >> +} > There are already two copies of this function in QEMU, not to mention > several copies of code for receving FDs. > > Rather than adding yet more copies of this functionality it would be > much better to add 2 methods to util/qemu-sockets.{c,h} for sending > and receiving file descriptors and update all existing code to use > them. Hi Daniel, Make sense, sounds like a good plan to me. Just take a quick look, seems there are some differences between them, I will have a try in a separate thread after back from my vacation next week. Thanks for your suggestion. > > Daniel -- Lei