On Wed, 07 Dec 2011 23:34:57 +0100 Gabriele <gabriele.mailing@xxxxxxxxxxx> wrote: > Hy, > > > _LARGEFILE64_SOURCE should be already defined due to _GNU_SOURCE. > > Can you try the following? > > diff --git a/usr/bs_ssc.c b/usr/bs_ssc.c > > index b80ece8..e4f1a71 100644 > > diff --git a/usr/libssc.c b/usr/libssc.c > > index e13a9f6..a4a0687 100644 > > diff --git a/usr/libssc.h b/usr/libssc.h > > index ace2037..e844346 100644 > > It works. > I have firstly tested vanilla 1.0.22 under amd64 and after I have > applied the patches for i386 > The image file was written beyond 2Gb in both cases. Nice. > Do you want that i test the patch under amd64 too ? No. > The strange thing is that in both architectures, the image file has been > filled until 2.7Gb, after that, tar gave the error > > tar: /dev/st0: Cannot write: No space left on device > > And in syslog I have: > > Dec 7 22:38:24 bunch tgtd: tape_rdwr_request(604) io error 0x9c20cb8 a > 32768 32768 0, Success > > Strange: there are a plenty of Gb free on the partition holding the > image files, and the image file was created with a dimension of 400Gb: > > sudo tgtimg --op=new --device-type=tape --barcode="A00000001" > --size=400000 --type=data --file=/media/tgt/vtl/A00000001 > > The image file seems to report the correct size: Can you try the following patch on the top of the previous one? diff --git a/usr/bs_ssc.c b/usr/bs_ssc.c index b80ece8..b051f83 100644 --- a/usr/bs_ssc.c +++ b/usr/bs_ssc.c @@ -113,7 +113,7 @@ static int resp_rewind(struct scsi_lu *lu) return skip_next_header(lu); } -static unsigned long current_size(struct scsi_cmd *cmd) +static uint64_t current_size(struct scsi_cmd *cmd) { struct ssc_info *ssc = dtype_priv(cmd->dev); return ssc->c_blk.curr; @@ -528,12 +528,17 @@ static void tape_rdwr_request(struct scsi_cmd *cmd) sense_data_build(cmd, NO_SENSE|SENSE_EOM, NO_ADDITIONAL_SENSE); result = SAM_STAT_CHECK_CONDITION; + eprintf("capacity over: %llu %llu\n", + (unsigned long long)current_size(cmd), + (unsigned long long)ssc->mam.max_capacity); break; } if (ret != length) { sense_data_build(cmd, MEDIUM_ERROR, ASC_WRITE_ERROR); result = SAM_STAT_CHECK_CONDITION; + eprintf("io error %u %u\n", ret, length); + } break; -- To unsubscribe from this list: send the line "unsubscribe stgt" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html