From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56052) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZbskH-0001bJ-Sq for qemu-devel@nongnu.org; Tue, 15 Sep 2015 12:06:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZbskE-0004Et-MA for qemu-devel@nongnu.org; Tue, 15 Sep 2015 12:06:13 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40378) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZbskE-0004Em-HP for qemu-devel@nongnu.org; Tue, 15 Sep 2015 12:06:10 -0400 References: <1439563931-12352-1-git-send-email-guangrong.xiao@linux.intel.com> <1439563931-12352-9-git-send-email-guangrong.xiao@linux.intel.com> <20150825160353.GD8344@stefanha-thinkpad.redhat.com> From: Paolo Bonzini Message-ID: <55F841EC.1060809@redhat.com> Date: Tue, 15 Sep 2015 18:06:04 +0200 MIME-Version: 1.0 In-Reply-To: <20150825160353.GD8344@stefanha-thinkpad.redhat.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2 08/18] nvdimm: init backend memory mapping and config data area List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi , Xiao Guangrong Cc: ehabkost@redhat.com, kvm@vger.kernel.org, mst@redhat.com, gleb@kernel.org, mtosatti@redhat.com, qemu-devel@nongnu.org, stefanha@redhat.com, imammedo@redhat.com, rth@twiddle.net On 25/08/2015 18:03, Stefan Hajnoczi wrote: >> > >> > +static uint64_t get_file_size(int fd) >> > +{ >> > + struct stat stat_buf; >> > + uint64_t size; >> > + >> > + if (fstat(fd, &stat_buf) < 0) { >> > + return 0; >> > + } >> > + >> > + if (S_ISREG(stat_buf.st_mode)) { >> > + return stat_buf.st_size; >> > + } >> > + >> > + if (S_ISBLK(stat_buf.st_mode) && !ioctl(fd, BLKGETSIZE64, &size)) { >> > + return size; >> > + } > #ifdef __linux__ for ioctl(fd, BLKGETSIZE64, &size)? > > There is nothing Linux-specific about emulating NVDIMMs so this code > should compile on all platforms. The code from block/raw-posix.c and block/raw-win32.c's raw_getlength should probably be extracted to a new function in utils/, and reused here. Paolo