Module Name: src Committed By: mlelstv Date: Tue Sep 30 15:25:18 UTC 2014
Modified Files: src/external/bsd/iscsi/dist/src/lib: disk.c Log Message: make seek test routine work with the configured block size. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/external/bsd/iscsi/dist/src/lib/disk.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/external/bsd/iscsi/dist/src/lib/disk.c diff -u src/external/bsd/iscsi/dist/src/lib/disk.c:1.8 src/external/bsd/iscsi/dist/src/lib/disk.c:1.9 --- src/external/bsd/iscsi/dist/src/lib/disk.c:1.8 Sat Sep 29 07:18:21 2012 +++ src/external/bsd/iscsi/dist/src/lib/disk.c Tue Sep 30 15:25:18 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: disk.c,v 1.8 2012/09/29 07:18:21 mlelstv Exp $ */ +/* $NetBSD: disk.c,v 1.9 2014/09/30 15:25:18 mlelstv Exp $ */ /*- * Copyright (c) 2006, 2007, 2008, 2009 The NetBSD Foundation, Inc. @@ -703,33 +703,38 @@ device_set_var(const char *var, const ch /* allocate some space for a disk/extent, using an lseek, read and * write combination */ static int -de_allocate(disc_de_t *de, char *filename) +de_allocate(disc_de_t *de, char *filename, uint64_t blocklen) { off_t size; - char block[DEFAULT_TARGET_BLOCK_LEN]; + char *block; + block = malloc(blocklen); size = de_getsize(de); - if (de_lseek(de, size - sizeof(block), SEEK_SET) == -1) { + if (de_lseek(de, size - blocklen, SEEK_SET) == -1) { iscsi_err(__FILE__, __LINE__, "error seeking \"%s\"\n", filename); + free(block); return 0; } - if (de_read(de, block, sizeof(block)) == -1) { + if (de_read(de, block, blocklen) == -1) { iscsi_err(__FILE__, __LINE__, "error reading \"%s\"\n", filename); + free(block); return 0; } - if (de_write(de, block, sizeof(block)) == -1) { + if (de_write(de, block, blocklen) == -1) { iscsi_err(__FILE__, __LINE__, "error writing \"%s\"\n", filename); + free(block); return 0; } + free(block); return 1; } /* allocate space as desired */ static int -allocate_space(disc_target_t *tp) +allocate_space(disc_target_t *tp, uint64_t blocklen) { uint32_t i; @@ -737,10 +742,10 @@ allocate_space(disc_target_t *tp) following write() in de_allocate is non-destructive */ switch(tp->de.type) { case DE_EXTENT: - return de_allocate(&tp->de, tp->target); + return de_allocate(&tp->de, tp->target, blocklen); case DE_DEVICE: for (i = 0 ; i < tp->de.u.dp->c ; i++) { - if (!de_allocate(&tp->de.u.dp->xv[i], tp->target)) { + if (!de_allocate(&tp->de.u.dp->xv[i], tp->target, blocklen)) { return 0; } } @@ -877,7 +882,7 @@ device_init(iscsi_target_t *tgt, targv_t "error opening \"%s\"\n", idisk->filename); return -1; } - if (!(tp->flags & TARGET_READONLY) && !allocate_space(tp)) { + if (!(tp->flags & TARGET_READONLY) && !allocate_space(tp, idisk->blocklen)) { iscsi_err(__FILE__, __LINE__, "error allocating space for \"%s\"\n", tp->target); return -1; @@ -1514,7 +1519,7 @@ disk_read(target_session_t *sess, iscsi_ (unsigned) bytec; args->length = (unsigned) bytec; args->send_sg_len = 1; - args->status = 0; + args->status = SCSI_SUCCESS; args->send_buffer = ptr; return 0; out: