WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] blktap: factor out linux specific code

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] blktap: factor out linux specific code
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Tue, 15 Jan 2008 11:40:18 -0800
Delivery-date: Tue, 15 Jan 2008 11:40:46 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1200406642 0
# Node ID b6cc74f275fd8bf7d3fb82e4a7d01d08cf903112
# Parent  973221f4d9c76b3efa3ce42dae97a41b03273737
blktap: factor out linux specific code
Signed-off-by: Christoph Egger <Christoph.Egger@xxxxxxx>
---
 tools/blktap/drivers/Makefile     |   23 ++++++++++----------
 tools/blktap/drivers/blk.h        |    3 ++
 tools/blktap/drivers/blk_linux.c  |   42 ++++++++++++++++++++++++++++++++++++++
 tools/blktap/drivers/block-aio.c  |   25 +++++++---------------
 tools/blktap/drivers/block-qcow.c |   16 +++++++++-----
 tools/blktap/drivers/block-ram.c  |   30 +++++++++------------------
 tools/blktap/drivers/block-sync.c |   25 +++++++---------------
 tools/blktap/drivers/block-vmdk.c |    6 ++++-
 tools/blktap/drivers/img2qcow.c   |   27 ++++++++----------------
 tools/blktap/drivers/qcow2raw.c   |   26 ++++++++++++++---------
 tools/blktap/drivers/tapdisk.h    |    4 +--
 11 files changed, 126 insertions(+), 101 deletions(-)

diff -r 973221f4d9c7 -r b6cc74f275fd tools/blktap/drivers/Makefile
--- a/tools/blktap/drivers/Makefile     Tue Jan 15 11:29:15 2008 +0000
+++ b/tools/blktap/drivers/Makefile     Tue Jan 15 14:17:22 2008 +0000
@@ -28,28 +28,29 @@ LIBS      += -L$(XEN_XENSTORE) -lxenstor
 
 AIOLIBS   := $(LIBAIO_DIR)/libaio.a
 
-BLK-OBJS  := block-aio.o
-BLK-OBJS  += block-sync.o
-BLK-OBJS  += block-vmdk.o
-BLK-OBJS  += block-ram.o
-BLK-OBJS  += block-qcow.o
-BLK-OBJS  += aes.o
-BLK-OBJS  += tapaio.o
+BLK-OBJS-y  := block-aio.o
+BLK-OBJS-y  += block-sync.o
+BLK-OBJS-y  += block-vmdk.o
+BLK-OBJS-y  += block-ram.o
+BLK-OBJS-y  += block-qcow.o
+BLK-OBJS-y  += aes.o
+BLK-OBJS-y  += tapaio.o
+BLK-OBJS-$(CONFIG_Linux) += blk_linux.c
 
 all: $(IBIN) qcow-util
 
 blktapctrl: blktapctrl.c
        $(CC) $(CFLAGS) -o blktapctrl $(LIBS) blktapctrl.c
 
-tapdisk: $(BLK-OBJS) tapdisk.c
-       $(CC) $(CFLAGS) -o tapdisk $(BLK-OBJS) tapdisk.c \
+tapdisk: $(BLK-OBJS-y) tapdisk.c
+       $(CC) $(CFLAGS) -o tapdisk $(BLK-OBJS-y) tapdisk.c \
                $(AIOLIBS) $(LIBS)
 
 .PHONY: qcow-util
 qcow-util: img2qcow qcow2raw qcow-create
 
-img2qcow qcow2raw qcow-create: %: $(BLK-OBJS)
-       $(CC) $(CFLAGS) -o $* $(BLK-OBJS) $*.c $(AIOLIBS) $(LIBS)
+img2qcow qcow2raw qcow-create: %: $(BLK-OBJS-y)
+       $(CC) $(CFLAGS) -o $* $(BLK-OBJS-y) $*.c $(AIOLIBS) $(LIBS)
 
 install: all
        $(INSTALL_PROG) $(IBIN) $(QCOW_UTIL) $(VHD_UTIL) $(DESTDIR)$(INST_DIR)
diff -r 973221f4d9c7 -r b6cc74f275fd tools/blktap/drivers/blk.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/blktap/drivers/blk.h        Tue Jan 15 14:17:22 2008 +0000
@@ -0,0 +1,3 @@
+
+int blk_getimagesize(int fd, uint64_t *size);
+int blk_getsectorsize(int fd, uint64_t *sector_size);
diff -r 973221f4d9c7 -r b6cc74f275fd tools/blktap/drivers/blk_linux.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/blktap/drivers/blk_linux.c  Tue Jan 15 14:17:22 2008 +0000
@@ -0,0 +1,42 @@
+#include <inttypes.h>
+#include <sys/ioctl.h>
+#include <linux/fs.h>
+#include "tapdisk.h"
+#include "blk.h"
+
+int blk_getimagesize(int fd, uint64_t *size)
+{
+       int rc;
+
+       *size = 0;
+       rc = ioctl(fd, BLKGETSIZE, size);
+       if (rc) {
+               DPRINTF("ERR: BLKGETSIZE failed, couldn't stat image");
+               return -EINVAL;
+       }
+
+       return 0;
+}
+
+int blk_getsectorsize(int fd, uint64_t *sector_size)
+{
+#if defined(BLKSSZGET)
+       int rc;
+
+       *sector_size = DEFAULT_SECTOR_SIZE;
+       rc = ioctl(fd, BLKSSZGET, sector_size);
+       if (rc) {
+               DPRINTF("ERR: BLKSSZGET failed. Falling back to use default 
sector size");
+               *sector_size = DEFAULT_SECTOR_SIZE;
+       }
+
+       if (*sector_size != DEFAULT_SECTOR_SIZE)
+               DPRINTF("Note: sector size is %"PRIu64" (not %u)\n",
+                       *sector_size, DEFAULT_SECTOR_SIZE);
+#else
+       *sector_size = DEFAULT_SECTOR_SIZE;
+#endif
+
+       return 0;
+}
+
diff -r 973221f4d9c7 -r b6cc74f275fd tools/blktap/drivers/block-aio.c
--- a/tools/blktap/drivers/block-aio.c  Tue Jan 15 11:29:15 2008 +0000
+++ b/tools/blktap/drivers/block-aio.c  Tue Jan 15 14:17:22 2008 +0000
@@ -41,11 +41,16 @@
 #include <sys/statvfs.h>
 #include <sys/stat.h>
 #include <sys/ioctl.h>
-#include <linux/fs.h>
 #include "tapdisk.h"
 #include "tapaio.h"
+#include "blk.h"
 
 #define MAX_AIO_REQS (MAX_REQUESTS * MAX_SEGMENTS_PER_REQ)
+
+/* *BSD has no O_LARGEFILE */
+#ifndef O_LARGEFILE
+#define O_LARGEFILE    0
+#endif
 
 struct pending_aio {
        td_callback_t cb;
@@ -87,11 +92,8 @@ static int get_image_info(struct td_stat
 
        if (S_ISBLK(stat.st_mode)) {
                /*Accessing block device directly*/
-               s->size = 0;
-               if (ioctl(fd,BLKGETSIZE,&s->size)!=0) {
-                       DPRINTF("ERR: BLKGETSIZE failed, couldn't stat image");
+               if (blk_getimagesize(fd, &s->size) != 0)
                        return -EINVAL;
-               }
 
                DPRINTF("Image size: \n\tpre sector_shift  [%llu]\n\tpost "
                        "sector_shift [%llu]\n",
@@ -99,19 +101,8 @@ static int get_image_info(struct td_stat
                        (long long unsigned)s->size);
 
                /*Get the sector size*/
-#if defined(BLKSSZGET)
-               {
-                       int arg;
+               if (blk_getsectorsize(fd, &s->sector_size) != 0)
                        s->sector_size = DEFAULT_SECTOR_SIZE;
-                       ioctl(fd, BLKSSZGET, &s->sector_size);
-                       
-                       if (s->sector_size != DEFAULT_SECTOR_SIZE)
-                               DPRINTF("Note: sector size is %ld (not %d)\n",
-                                       s->sector_size, DEFAULT_SECTOR_SIZE);
-               }
-#else
-               s->sector_size = DEFAULT_SECTOR_SIZE;
-#endif
 
        } else {
                /*Local file? try fstat instead*/
diff -r 973221f4d9c7 -r b6cc74f275fd tools/blktap/drivers/block-qcow.c
--- a/tools/blktap/drivers/block-qcow.c Tue Jan 15 11:29:15 2008 +0000
+++ b/tools/blktap/drivers/block-qcow.c Tue Jan 15 14:17:22 2008 +0000
@@ -29,7 +29,6 @@
 #include <sys/statvfs.h>
 #include <sys/stat.h>
 #include <sys/ioctl.h>
-#include <linux/fs.h>
 #include <string.h>
 #include <zlib.h>
 #include <inttypes.h>
@@ -39,6 +38,12 @@
 #include "aes.h"
 #include "tapdisk.h"
 #include "tapaio.h"
+#include "blk.h"
+
+/* *BSD has no O_LARGEFILE */
+#ifndef O_LARGEFILE
+#define O_LARGEFILE    0
+#endif
 
 #if 1
 #define ASSERT(_p) \
@@ -284,8 +289,7 @@ static int get_filesize(char *filename, 
                fd = open(filename, O_RDONLY);
                if (fd < 0)
                        return -1;
-               if (ioctl(fd,BLKGETSIZE,size)!=0) {
-                       printf("Unable to get Block device size\n");
+               if (blk_getimagesize(fd, size) != 0) {
                        close(fd);
                        return -1;
                }
@@ -990,8 +994,8 @@ int tdqcow_open (struct disk_driver *dd,
        if (!final_cluster)
                s->fd_end = s->l1_table_offset + l1_table_size;
        else {
-               s->fd_end = lseek64(fd, 0, SEEK_END);
-               if (s->fd_end == (off64_t)-1)
+               s->fd_end = lseek(fd, 0, SEEK_END);
+               if (s->fd_end == (off_t)-1)
                        goto fail;
        }
 
@@ -1230,7 +1234,7 @@ int qcow_create(const char *filename, ui
        DPRINTF("Qcow_create: size %llu\n",(long long unsigned)total_size);
 
        fd = open(filename, 
-                 O_WRONLY | O_CREAT | O_TRUNC | O_BINARY | O_LARGEFILE, 
+                 O_WRONLY | O_CREAT | O_TRUNC | O_BINARY | O_LARGEFILE,
                  0644);
        if (fd < 0)
                return -1;
diff -r 973221f4d9c7 -r b6cc74f275fd tools/blktap/drivers/block-ram.c
--- a/tools/blktap/drivers/block-ram.c  Tue Jan 15 11:29:15 2008 +0000
+++ b/tools/blktap/drivers/block-ram.c  Tue Jan 15 14:17:22 2008 +0000
@@ -33,15 +33,21 @@
 #include <fcntl.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <inttypes.h>
 #include <unistd.h>
 #include <sys/statvfs.h>
 #include <sys/stat.h>
 #include <sys/ioctl.h>
-#include <linux/fs.h>
 #include <string.h>
 #include "tapdisk.h"
+#include "blk.h"
 
 #define MAX_DISK_SIZE 1024000 /*500MB disk limit*/
+
+/* *BSD has no O_LARGEFILE */
+#ifndef O_LARGEFILE
+#define O_LARGEFILE    0
+#endif
 
 char *img;
 long int   disksector_size;
@@ -71,11 +77,8 @@ static int get_image_info(struct td_stat
 
        if (S_ISBLK(stat.st_mode)) {
                /*Accessing block device directly*/
-               s->size = 0;
-               if (ioctl(fd,BLKGETSIZE,&s->size)!=0) {
-                       DPRINTF("ERR: BLKGETSIZE failed, couldn't stat image");
+               if (blk_getimagesize(fd, &s->size) != 0)
                        return -EINVAL;
-               }
 
                DPRINTF("Image size: \n\tpre sector_shift  [%llu]\n\tpost "
                        "sector_shift [%llu]\n",
@@ -83,19 +86,8 @@ static int get_image_info(struct td_stat
                        (long long unsigned)s->size);
 
                /*Get the sector size*/
-#if defined(BLKSSZGET)
-               {
-                       int arg;
+               if (blk_getsectorsize(fd, &s->sector_size) != 0)
                        s->sector_size = DEFAULT_SECTOR_SIZE;
-                       ioctl(fd, BLKSSZGET, &s->sector_size);
-                       
-                       if (s->sector_size != DEFAULT_SECTOR_SIZE)
-                               DPRINTF("Note: sector size is %ld (not %d)\n",
-                                       s->sector_size, DEFAULT_SECTOR_SIZE);
-               }
-#else
-               s->sector_size = DEFAULT_SECTOR_SIZE;
-#endif
 
        } else {
                /*Local file? try fstat instead*/
@@ -117,7 +109,7 @@ static int get_image_info(struct td_stat
        disksector_size = s->sector_size;
        disksize        = s->size;
        diskinfo        = s->info;
-       DPRINTF("Image sector_size: \n\t[%lu]\n",
+       DPRINTF("Image sector_size: \n\t[%"PRIu64"]\n",
                s->sector_size);
 
        return 0;
@@ -159,7 +151,7 @@ int tdram_open (struct disk_driver *dd, 
                        "sector_shift [%llu]\n",
                        (long long unsigned)(s->size << SECTOR_SHIFT),
                        (long long unsigned)s->size);
-               DPRINTF("Image sector_size: \n\t[%lu]\n",
+               DPRINTF("Image sector_size: \n\t[%"PRIu64"]\n",
                        s->sector_size);
 
                prv->fd = -1;
diff -r 973221f4d9c7 -r b6cc74f275fd tools/blktap/drivers/block-sync.c
--- a/tools/blktap/drivers/block-sync.c Tue Jan 15 11:29:15 2008 +0000
+++ b/tools/blktap/drivers/block-sync.c Tue Jan 15 14:17:22 2008 +0000
@@ -37,8 +37,13 @@
 #include <sys/statvfs.h>
 #include <sys/stat.h>
 #include <sys/ioctl.h>
-#include <linux/fs.h>
 #include "tapdisk.h"
+#include "blk.h"
+
+/* *BSD has no O_LARGEFILE */
+#ifndef O_LARGEFILE
+#define O_LARGEFILE    0
+#endif
 
 struct tdsync_state {
        int fd;
@@ -62,11 +67,8 @@ static int get_image_info(struct td_stat
 
        if (S_ISBLK(stat.st_mode)) {
                /*Accessing block device directly*/
-               s->size = 0;
-               if (ioctl(fd,BLKGETSIZE,&s->size)!=0) {
-                       DPRINTF("ERR: BLKGETSIZE failed, couldn't stat image");
+               if (blk_getimagesize(fd, &s->size) != 0)
                        return -EINVAL;
-               }
 
                DPRINTF("Image size: \n\tpre sector_shift  [%llu]\n\tpost "
                        "sector_shift [%llu]\n",
@@ -74,19 +76,8 @@ static int get_image_info(struct td_stat
                        (long long unsigned)s->size);
 
                /*Get the sector size*/
-#if defined(BLKSSZGET)
-               {
-                       int arg;
+               if (blk_getsectorsize(fd, &s->sector_size) != 0)
                        s->sector_size = DEFAULT_SECTOR_SIZE;
-                       ioctl(fd, BLKSSZGET, &s->sector_size);
-                       
-                       if (s->sector_size != DEFAULT_SECTOR_SIZE)
-                               DPRINTF("Note: sector size is %ld (not %d)\n",
-                                       s->sector_size, DEFAULT_SECTOR_SIZE);
-               }
-#else
-               s->sector_size = DEFAULT_SECTOR_SIZE;
-#endif
 
        } else {
                /*Local file? try fstat instead*/
diff -r 973221f4d9c7 -r b6cc74f275fd tools/blktap/drivers/block-vmdk.c
--- a/tools/blktap/drivers/block-vmdk.c Tue Jan 15 11:29:15 2008 +0000
+++ b/tools/blktap/drivers/block-vmdk.c Tue Jan 15 14:17:22 2008 +0000
@@ -42,10 +42,14 @@
 #include <sys/statvfs.h>
 #include <sys/stat.h>
 #include <sys/ioctl.h>
-#include <linux/fs.h>
 #include <string.h>
 #include "tapdisk.h"
 #include "bswap.h"
+
+/* *BSD has no O_LARGEFILE */
+#ifndef O_LARGEFILE
+#define O_LARGEFILE    0
+#endif
 
 #define safer_free(_x)       \
   do {                       \
diff -r 973221f4d9c7 -r b6cc74f275fd tools/blktap/drivers/img2qcow.c
--- a/tools/blktap/drivers/img2qcow.c   Tue Jan 15 11:29:15 2008 +0000
+++ b/tools/blktap/drivers/img2qcow.c   Tue Jan 15 14:17:22 2008 +0000
@@ -37,15 +37,21 @@
 #include <sys/statvfs.h>
 #include <sys/stat.h>
 #include <sys/ioctl.h>
-#include <linux/fs.h>
 #include <string.h>
 #include "tapdisk.h"
+#include "blk.h"
 
 #if 1
 #define DFPRINTF(_f, _a...) fprintf ( stderr, _f , ## _a )
 #else
 #define DFPRINTF(_f, _a...) ((void)0)
 #endif
+
+/* *BSD has no O_LARGEFILE */
+#ifndef O_LARGEFILE
+#define O_LARGEFILE    0
+#endif
+
 
 #define TAPDISK 1
 #define BLOCK_PROCESSSZ 4096
@@ -109,12 +115,8 @@ static int get_image_info(struct td_stat
 
        if (S_ISBLK(stat.st_mode)) {
                /*Accessing block device directly*/
-               s->size = 0;
-               if (ioctl(fd,BLKGETSIZE,&s->size)!=0) {
-                       DFPRINTF("ERR: BLKGETSIZE failed, "
-                                "couldn't stat image");
+               if (blk_getimagesize(fd, &s->size) != 0)
                        return -EINVAL;
-               }
 
                DFPRINTF("Image size: \n\tpre sector_shift  [%llu]\n\tpost "
                        "sector_shift [%llu]\n",
@@ -122,19 +124,8 @@ static int get_image_info(struct td_stat
                        (long long unsigned)s->size);
 
                /*Get the sector size*/
-#if defined(BLKSSZGET)
-               {
-                       int arg;
+               if (blk_getsectorsize(fd, &s->sector_size) != 0)
                        s->sector_size = DEFAULT_SECTOR_SIZE;
-                       ioctl(fd, BLKSSZGET, &s->sector_size);
-                       
-                       if (s->sector_size != DEFAULT_SECTOR_SIZE)
-                               DFPRINTF("Note: sector size is %ld (not %d)\n",
-                                       s->sector_size, DEFAULT_SECTOR_SIZE);
-               }
-#else
-               s->sector_size = DEFAULT_SECTOR_SIZE;
-#endif
 
        } else {
                /*Local file? try fstat instead*/
diff -r 973221f4d9c7 -r b6cc74f275fd tools/blktap/drivers/qcow2raw.c
--- a/tools/blktap/drivers/qcow2raw.c   Tue Jan 15 11:29:15 2008 +0000
+++ b/tools/blktap/drivers/qcow2raw.c   Tue Jan 15 14:17:22 2008 +0000
@@ -33,18 +33,25 @@
 #include <fcntl.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <inttypes.h>
 #include <unistd.h>
 #include <sys/statvfs.h>
 #include <sys/stat.h>
 #include <sys/ioctl.h>
-#include <linux/fs.h>
 #include <string.h>
 #include "tapdisk.h"
+#include "blk.h"
 
 #if 1
 #define DFPRINTF(_f, _a...) fprintf ( stderr, _f , ## _a )
 #else
 #define DFPRINTF(_f, _a...) ((void)0)
+#endif
+
+
+/* *BSD has no O_LARGEFILE */
+#ifndef O_LARGEFILE
+#define O_LARGEFILE 0
 #endif
 
 #define TAPDISK 1
@@ -142,7 +149,7 @@ int main(int argc, char *argv[])
 int main(int argc, char *argv[])
 {
        int ret = -1, fd, len,input;
-       long int size;
+       uint64_t size;
        fd_set readfds;
        struct timeval timeout;
        uint64_t i;
@@ -227,16 +234,15 @@ int main(int argc, char *argv[])
                }
 
                if (S_ISBLK(finfo.st_mode)) {
-                       if(ioctl(fd,BLKGETSIZE,&size)!=0) {
-                               DFPRINTF("ERROR: BLKGETSIZE failed, "
-                                       "couldn't stat image [%s]\n", 
-                                       argv[1]);
-                               close(fd);
-                               exit(-1);
-                       }
+                       if (blk_getimagesize(fd, &size) != 0) {
+                               close(fd);
+                               return -1;
+                       }
+
                        if (size < ddqcow.td_state->size<<9) {
                                DFPRINTF("ERROR: Not enough space on device "
-                                       "%s (%lu bytes available, %llu bytes 
required\n",
+                                       "%s (%"PRIu64" bytes available, "
+                                       "%llu bytes required\n",
                                        argv[1], size, 
                                        (long long 
unsigned)ddqcow.td_state->size<<9);
                                close(fd);
diff -r 973221f4d9c7 -r b6cc74f275fd tools/blktap/drivers/tapdisk.h
--- a/tools/blktap/drivers/tapdisk.h    Tue Jan 15 11:29:15 2008 +0000
+++ b/tools/blktap/drivers/tapdisk.h    Tue Jan 15 14:17:22 2008 +0000
@@ -108,8 +108,8 @@ struct td_state {
        void *image;
        void *ring_info;
        void *fd_entry;
-       unsigned long      sector_size;
-       unsigned long long size;
+       uint64_t sector_size;
+       uint64_t size;
        unsigned int       info;
 };
 

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] blktap: factor out linux specific code, Xen patchbot-unstable <=