Thread: [Aoetools-discuss] [PATCH] Implement an offset option for vbladed
Brought to you by:
ecashin,
elcapitansam
From: Christoph B. <sou...@ma...> - 2014-05-08 20:43:26
Attachments:
signature.asc
|
Hello, the patch below implements a new option -o for vbladed, denoting the number of sectors that should be skipped at the beginning of the exported file. Default is 0 (no offset, export from beginning, current behaviour). Rationale: If the exported files are actually raw block devices on the target, something that might happen when using logical volumes for exports, several tools running on the target that assume block devices are for exclusive local access only might create confusion or even havoc. Most prominently: * os-prober of grub (might be disabled, though) Might mount any block device found that contain a file system. * (Linux) logical volume management Will report any physical volume if the export is used as such. * (Linux) blkid Reports any block device (minor impact, mostly information leakage) The overall problem is applications are not aware some block devices might be used from a remote client while there's no locking and that might be hard to implement Solutions tried but not considered helpful: * Filter out exported block devices Problems: The tools need the ability to filter; new tools might come into existance, requiring new action. Filter languages might be hard to use (Linux LVM is quite a nightmare here). * Optionally open block devices with O_EXCL Had no effect. Still exposes block devices where no vbladed is running yet. So the goal was to hide the actual content from these tools. One approach was to obscure the data using XOR, however it seemed easier to sacrifice one or more sectors (8 recommended for 4k sector hard drives) for a simple workaround. This is based on vblade-20, tests on Debian Linux included a simple write of each sector with a unique ID and later re-read in order to detect any re-ordering bugs, however everything worked as expected. Christoph --- a/aoe.c +++ b/aoe.c @@ -464,9 +464,10 @@ main(int argc, char **argv) int ch, omode = 0, readonly = 0; bufcnt = Bufcount; + offset = 0; setbuf(stdin, NULL); progname = *argv; - while ((ch = getopt(argc, argv, "b:dsrm:")) != -1) { + while ((ch = getopt(argc, argv, "b:dsrm:o:")) != -1) { switch (ch) { case 'b': bufcnt = atoi(optarg); @@ -485,6 +486,9 @@ main(int argc, char **argv) case 'm': setmask(optarg); break; + case 'o': + offset = atoi(optarg); + break; case '?': default: usage(); @@ -505,6 +509,11 @@ main(int argc, char **argv) setserial(argv[3], shelf, slot); size = getsize(bfd); size /= 512; + if (size < offset) { + fprintf(stderr, "Offset %u too big - remaining size is negative!\n", offset); + exit(1); + } + size -= offset; ifname = argv[2]; sfd = dial(ifname, bufcnt); getea(sfd, ifname, mac); diff --git a/ata.c b/ata.c index 4854f34..7c53b46 100644 --- a/ata.c +++ b/ata.c @@ -155,12 +155,12 @@ atacmd(Ataregs *p, uchar *dp, int ndp, int payload) // do the ata cmd return 0; } if (p->cmd == 0x20 || p->cmd == 0x24) - n = getsec(bfd, dp, lba, p->sectors); + n = getsec(bfd, dp, lba+offset, p->sectors); else { // packet should be big enough to contain the data if (payload < 512 * p->sectors) return -1; - n = putsec(bfd, dp, lba, p->sectors); + n = putsec(bfd, dp, lba+offset, p->sectors); } n /= 512; if (n != p->sectors) { diff --git a/dat.h b/dat.h index 064ab1e..f3a93d8 100644 --- a/dat.h +++ b/dat.h @@ -169,6 +169,7 @@ uchar mac[6]; int bfd; // block file descriptor int sfd; // socket file descriptor vlong size; // size of vblade +unsigned offset; char *progname; char serial[Nserial+1]; diff --git a/vblade.8 b/vblade.8 index 2cd2b2c..3d8ff13 100644 --- a/vblade.8 +++ b/vblade.8 @@ -55,6 +55,10 @@ The -r flag restricts the export of the device to be read-only. The -m flag takes an argument, a comma separated list of MAC addresses permitted access to the vblade. A MAC address can be specified in upper or lower case, with or without colons. +.TP +\fB-o\fP +The -o flag takes an argument, the number of sectors that should be +skipped at the beginning of filename. .SH EXAMPLE In this example, the root user on a host named .I nai |
From: Ed C. <ec...@co...> - 2014-05-09 14:01:02
|
Thanks. This looks interesting. I like the way you provided a detailed explanation of the motivation for the patch. Do you agree that the offset should be a vlong so that it can support the same large values that the size can support? An unsigned int sometimes isn't going to be 64 bits. On May 8, 2014, at 4:43 PM, Christoph Biedl <sou...@ma...> wrote: > Hello, > > the patch below implements a new option -o for vbladed, denoting the > number of sectors that should be skipped at the beginning of the > exported file. Default is 0 (no offset, export from beginning, current > behaviour). > > Rationale: > > If the exported files are actually raw block devices on the target, > something that might happen when using logical volumes for exports, > several tools running on the target that assume block devices are > for exclusive local access only might create confusion or even > havoc. Most prominently: > > * os-prober of grub (might be disabled, though) > Might mount any block device found that contain a file system. > * (Linux) logical volume management > Will report any physical volume if the export is used as such. > * (Linux) blkid > Reports any block device (minor impact, mostly information leakage) > > The overall problem is applications are not aware some block devices > might be used from a remote client while there's no locking and that > might be hard to implement > > Solutions tried but not considered helpful: > > * Filter out exported block devices > Problems: The tools need the ability to filter; new tools might come > into existance, requiring new action. Filter languages might be hard > to use (Linux LVM is quite a nightmare here). > * Optionally open block devices with O_EXCL > Had no effect. Still exposes block devices where no vbladed is running > yet. > > So the goal was to hide the actual content from these tools. One > approach was to obscure the data using XOR, however it seemed easier > to sacrifice one or more sectors (8 recommended for 4k sector hard > drives) for a simple workaround. > > This is based on vblade-20, tests on Debian Linux included a simple > write of each sector with a unique ID and later re-read in order to > detect any re-ordering bugs, however everything worked as expected. > > Christoph > > --- a/aoe.c > +++ b/aoe.c > @@ -464,9 +464,10 @@ main(int argc, char **argv) > int ch, omode = 0, readonly = 0; > > bufcnt = Bufcount; > + offset = 0; > setbuf(stdin, NULL); > progname = *argv; > - while ((ch = getopt(argc, argv, "b:dsrm:")) != -1) { > + while ((ch = getopt(argc, argv, "b:dsrm:o:")) != -1) { > switch (ch) { > case 'b': > bufcnt = atoi(optarg); > @@ -485,6 +486,9 @@ main(int argc, char **argv) > case 'm': > setmask(optarg); > break; > + case 'o': > + offset = atoi(optarg); > + break; > case '?': > default: > usage(); > @@ -505,6 +509,11 @@ main(int argc, char **argv) > setserial(argv[3], shelf, slot); > size = getsize(bfd); > size /= 512; > + if (size < offset) { > + fprintf(stderr, "Offset %u too big - remaining size is negative!\n", offset); > + exit(1); > + } > + size -= offset; > ifname = argv[2]; > sfd = dial(ifname, bufcnt); > getea(sfd, ifname, mac); > diff --git a/ata.c b/ata.c > index 4854f34..7c53b46 100644 > --- a/ata.c > +++ b/ata.c > @@ -155,12 +155,12 @@ atacmd(Ataregs *p, uchar *dp, int ndp, int payload) // do the ata cmd > return 0; > } > if (p->cmd == 0x20 || p->cmd == 0x24) > - n = getsec(bfd, dp, lba, p->sectors); > + n = getsec(bfd, dp, lba+offset, p->sectors); > else { > // packet should be big enough to contain the data > if (payload < 512 * p->sectors) > return -1; > - n = putsec(bfd, dp, lba, p->sectors); > + n = putsec(bfd, dp, lba+offset, p->sectors); > } > n /= 512; > if (n != p->sectors) { > diff --git a/dat.h b/dat.h > index 064ab1e..f3a93d8 100644 > --- a/dat.h > +++ b/dat.h > @@ -169,6 +169,7 @@ uchar mac[6]; > int bfd; // block file descriptor > int sfd; // socket file descriptor > vlong size; // size of vblade > +unsigned offset; > char *progname; > char serial[Nserial+1]; > > diff --git a/vblade.8 b/vblade.8 > index 2cd2b2c..3d8ff13 100644 > --- a/vblade.8 > +++ b/vblade.8 > @@ -55,6 +55,10 @@ The -r flag restricts the export of the device to be read-only. > The -m flag takes an argument, a comma separated list of MAC addresses > permitted access to the vblade. A MAC address can be specified in upper > or lower case, with or without colons. > +.TP > +\fB-o\fP > +The -o flag takes an argument, the number of sectors that should be > +skipped at the beginning of filename. > .SH EXAMPLE > In this example, the root user on a host named > .I nai > ------------------------------------------------------------------------------ > Is your legacy SCM system holding you back? Join Perforce May 7 to find out: > • 3 signs your SCM is hindering your productivity > • Requirements for releasing software faster > • Expert tips and advice for migrating your SCM now > http://p.sf.net/sfu/perforce_______________________________________________ > Aoetools-discuss mailing list > Aoe...@li... > https://lists.sourceforge.net/lists/listinfo/aoetools-discuss |
From: Christoph B. <sou...@ma...> - 2014-05-10 11:31:03
|
Ed Cashin wrote... > Thanks. This looks interesting. I like the way you provided a > detailed explanation of the motivation for the patch. You're welcome. > Do you agree that the offset should be a vlong so that it can > support the same large values that the size can support? An > unsigned int sometimes isn't going to be 64 bits. You're totally right, and I should have done so in the first place. Using unsigned might cause trouble when you expect it the least, and there's also no reason to limit the offset to 2 TiB. Related, I was asked in private whether to add another option to limit the length of the export. While personally I have no use for that[1], other people might see the need. The patch should be really simple. Christoph [1] The legacy Linux softraid version 0.90 has its magic at the end of the disk. |
From: Ed C. <ec...@co...> - 2014-05-10 13:46:47
|
That sounds like a natural complement to your first patch, yes. If you've got the momentum to whip together the second patch, I could merge them both at once. On May 10, 2014, at 7:30 AM, Christoph Biedl <sou...@ma...> wrote: > Ed Cashin wrote... > >> Thanks. This looks interesting. I like the way you provided a >> detailed explanation of the motivation for the patch. > > You're welcome. > >> Do you agree that the offset should be a vlong so that it can >> support the same large values that the size can support? An >> unsigned int sometimes isn't going to be 64 bits. > > You're totally right, and I should have done so in the first place. > Using unsigned might cause trouble when you expect it the least, and > there's also no reason to limit the offset to 2 TiB. > > Related, I was asked in private whether to add another option to limit > the length of the export. While personally I have no use for that[1], > other people might see the need. The patch should be really simple. > > Christoph > > [1] The legacy Linux softraid version 0.90 has its magic at the end > of the disk. > > ------------------------------------------------------------------------------ > Is your legacy SCM system holding you back? Join Perforce May 7 to find out: > • 3 signs your SCM is hindering your productivity > • Requirements for releasing software faster > • Expert tips and advice for migrating your SCM now > http://p.sf.net/sfu/perforce > _______________________________________________ > Aoetools-discuss mailing list > Aoe...@li... > https://lists.sourceforge.net/lists/listinfo/aoetools-discuss |
From: Christoph B. <sou...@ma...> - 2014-05-11 18:10:46
|
Ed Cashin wrote... > That sounds like a natural complement to your first patch, yes. If > you've got the momentum to whip together the second patch, I could > merge them both at once. Here you are. The patch below is to replace the original one, so uses vlong for the offset, and implements a lenght limit of the export. That version ran here for a few hours in production, everything was doing as expected. Christoph diff --git a/aoe.c b/aoe.c index 0ab0b99..ef590ae 100644 --- a/aoe.c +++ b/aoe.c @@ -462,11 +462,13 @@ int main(int argc, char **argv) { int ch, omode = 0, readonly = 0; + vlong length = 0; bufcnt = Bufcount; + offset = 0; setbuf(stdin, NULL); progname = *argv; - while ((ch = getopt(argc, argv, "b:dsrm:")) != -1) { + while ((ch = getopt(argc, argv, "b:dsrm:o:l:")) != -1) { switch (ch) { case 'b': bufcnt = atoi(optarg); @@ -485,6 +487,12 @@ main(int argc, char **argv) case 'm': setmask(optarg); break; + case 'o': + offset = atoi(optarg); + break; + case 'l': + length = atoi(optarg); + break; case '?': default: usage(); @@ -505,6 +513,18 @@ main(int argc, char **argv) setserial(argv[3], shelf, slot); size = getsize(bfd); size /= 512; + if (size < offset) { + fprintf(stderr, "Offset %llu too big - remaining size is negative!\n", offset); + exit(1); + } + size -= offset; + if (length) { + if (length > size) { + fprintf(stderr, "Length %llu too big - exceeds size of file!\n", offset); + exit(1); + } + size = length; + } ifname = argv[2]; sfd = dial(ifname, bufcnt); getea(sfd, ifname, mac); diff --git a/ata.c b/ata.c index 4854f34..7c53b46 100644 --- a/ata.c +++ b/ata.c @@ -155,12 +155,12 @@ atacmd(Ataregs *p, uchar *dp, int ndp, int payload) // do the ata cmd return 0; } if (p->cmd == 0x20 || p->cmd == 0x24) - n = getsec(bfd, dp, lba, p->sectors); + n = getsec(bfd, dp, lba+offset, p->sectors); else { // packet should be big enough to contain the data if (payload < 512 * p->sectors) return -1; - n = putsec(bfd, dp, lba, p->sectors); + n = putsec(bfd, dp, lba+offset, p->sectors); } n /= 512; if (n != p->sectors) { diff --git a/dat.h b/dat.h index 064ab1e..9b7ec46 100644 --- a/dat.h +++ b/dat.h @@ -169,6 +169,7 @@ uchar mac[6]; int bfd; // block file descriptor int sfd; // socket file descriptor vlong size; // size of vblade +vlong offset; char *progname; char serial[Nserial+1]; diff --git a/vblade.8 b/vblade.8 index 2cd2b2c..175baa0 100644 --- a/vblade.8 +++ b/vblade.8 @@ -55,6 +55,14 @@ The -r flag restricts the export of the device to be read-only. The -m flag takes an argument, a comma separated list of MAC addresses permitted access to the vblade. A MAC address can be specified in upper or lower case, with or without colons. +.TP +\fB-o\fP +The -o flag takes an argument, the number of sectors that should be +skipped at the beginning of filename. +.TP +\fB-l\fP +The -l flag takes an argument, the number of sectors to exports. +Defaults to the end of file. .SH EXAMPLE In this example, the root user on a host named .I nai |
From: Ed C. <ec...@co...> - 2014-05-13 01:27:17
|
I merged that to a new git repo: https://github.com/ecashin/vblade/ ... but noticed along the way that you're using atoi. Because you're supporting 64-bit numbers, would you mind sending a patch that uses strtoll or doing it in git and sending a pull request? On May 11, 2014, at 2:10 PM, Christoph Biedl <sou...@ma...> wrote: > Ed Cashin wrote... > >> That sounds like a natural complement to your first patch, yes. If >> you've got the momentum to whip together the second patch, I could >> merge them both at once. > > Here you are. The patch below is to replace the original one, so uses > vlong for the offset, and implements a lenght limit of the export. > > That version ran here for a few hours in production, everything was > doing as expected. > > Christoph > > diff --git a/aoe.c b/aoe.c > index 0ab0b99..ef590ae 100644 > --- a/aoe.c > +++ b/aoe.c > @@ -462,11 +462,13 @@ int > main(int argc, char **argv) > { > int ch, omode = 0, readonly = 0; > + vlong length = 0; > > bufcnt = Bufcount; > + offset = 0; > setbuf(stdin, NULL); > progname = *argv; > - while ((ch = getopt(argc, argv, "b:dsrm:")) != -1) { > + while ((ch = getopt(argc, argv, "b:dsrm:o:l:")) != -1) { > switch (ch) { > case 'b': > bufcnt = atoi(optarg); > @@ -485,6 +487,12 @@ main(int argc, char **argv) > case 'm': > setmask(optarg); > break; > + case 'o': > + offset = atoi(optarg); > + break; > + case 'l': > + length = atoi(optarg); > + break; > case '?': > default: > usage(); > @@ -505,6 +513,18 @@ main(int argc, char **argv) > setserial(argv[3], shelf, slot); > size = getsize(bfd); > size /= 512; > + if (size < offset) { > + fprintf(stderr, "Offset %llu too big - remaining size is negative!\n", offset); > + exit(1); > + } > + size -= offset; > + if (length) { > + if (length > size) { > + fprintf(stderr, "Length %llu too big - exceeds size of file!\n", offset); > + exit(1); > + } > + size = length; > + } > ifname = argv[2]; > sfd = dial(ifname, bufcnt); > getea(sfd, ifname, mac); > diff --git a/ata.c b/ata.c > index 4854f34..7c53b46 100644 > --- a/ata.c > +++ b/ata.c > @@ -155,12 +155,12 @@ atacmd(Ataregs *p, uchar *dp, int ndp, int payload) // do the ata cmd > return 0; > } > if (p->cmd == 0x20 || p->cmd == 0x24) > - n = getsec(bfd, dp, lba, p->sectors); > + n = getsec(bfd, dp, lba+offset, p->sectors); > else { > // packet should be big enough to contain the data > if (payload < 512 * p->sectors) > return -1; > - n = putsec(bfd, dp, lba, p->sectors); > + n = putsec(bfd, dp, lba+offset, p->sectors); > } > n /= 512; > if (n != p->sectors) { > diff --git a/dat.h b/dat.h > index 064ab1e..9b7ec46 100644 > --- a/dat.h > +++ b/dat.h > @@ -169,6 +169,7 @@ uchar mac[6]; > int bfd; // block file descriptor > int sfd; // socket file descriptor > vlong size; // size of vblade > +vlong offset; > char *progname; > char serial[Nserial+1]; > > diff --git a/vblade.8 b/vblade.8 > index 2cd2b2c..175baa0 100644 > --- a/vblade.8 > +++ b/vblade.8 > @@ -55,6 +55,14 @@ The -r flag restricts the export of the device to be read-only. > The -m flag takes an argument, a comma separated list of MAC addresses > permitted access to the vblade. A MAC address can be specified in upper > or lower case, with or without colons. > +.TP > +\fB-o\fP > +The -o flag takes an argument, the number of sectors that should be > +skipped at the beginning of filename. > +.TP > +\fB-l\fP > +The -l flag takes an argument, the number of sectors to exports. > +Defaults to the end of file. > .SH EXAMPLE > In this example, the root user on a host named > .I nai > > ------------------------------------------------------------------------------ > Is your legacy SCM system holding you back? Join Perforce May 7 to find out: > • 3 signs your SCM is hindering your productivity > • Requirements for releasing software faster > • Expert tips and advice for migrating your SCM now > http://p.sf.net/sfu/perforce > _______________________________________________ > Aoetools-discuss mailing list > Aoe...@li... > https://lists.sourceforge.net/lists/listinfo/aoetools-discuss |
From: Christoph B. <sou...@ma...> - 2014-05-19 22:46:24
|
Ed Cashin wrote... > ... but noticed along the way that you're using atoi. Because > you're supporting 64-bit numbers, would you mind sending a patch > that uses strtoll or doing it in git and sending a pull request? So, version 3 then. I have some issues with github so let's better stay on patches, at least as long the changes are that small. This is based on commit baa96be. You suggested strtoll - mostly because it's appearently more portable then atoll I guess? These strto* functions could also be used to add error checking, something that isn't done yet for shelf and slot either. I could add that everywhere if you wish but that should be kept for a second round then. Another addition: Both length and offset might have negative values, check that. And use signed format strings. Christoph diff --git a/aoe.c b/aoe.c index ef590ae..6f51a4b 100644 --- a/aoe.c +++ b/aoe.c @@ -488,10 +488,10 @@ main(int argc, char **argv) setmask(optarg); break; case 'o': - offset = atoi(optarg); + offset = strtoll(optarg, NULL, 10); break; case 'l': - length = atoi(optarg); + length = strtoll(optarg, NULL, 10); break; case '?': default: @@ -513,14 +513,22 @@ main(int argc, char **argv) setserial(argv[3], shelf, slot); size = getsize(bfd); size /= 512; + if (offset < 0) { + fprintf(stderr, "Offset %lli is negative\n", offset); + exit(1); + } if (size < offset) { - fprintf(stderr, "Offset %llu too big - remaining size is negative!\n", offset); + fprintf(stderr, "Offset %lli too big - remaining size is negative!\n", offset); exit(1); } size -= offset; + if (length < 0) { + fprintf(stderr, "Length %lli is negative\n", length); + exit(1); + } if (length) { if (length > size) { - fprintf(stderr, "Length %llu too big - exceeds size of file!\n", offset); + fprintf(stderr, "Length %lli too big - exceeds size of file!\n", offset); exit(1); } size = length; |
From: Ed C. <ec...@co...> - 2014-05-20 02:34:25
|
On May 19, 2014, at 6:46 PM, Christoph Biedl <sou...@ma...> wrote: > Ed Cashin wrote... > >> ... but noticed along the way that you're using atoi. Because >> you're supporting 64-bit numbers, would you mind sending a patch >> that uses strtoll or doing it in git and sending a pull request? > > So, version 3 then. I have some issues with github so let's better > stay on patches, at least as long the changes are that small. This is > based on commit baa96be. I could talk to you about the github issues off list if you like. Yes, I suggested strtoll because it is portable, has error checking, and supports non-decimal bases, which can be convenient, beyond the primary reason that it supports 64-bit values. I was thinking of something like this: https://github.com/ecashin/vblade/commit/ca2dbda0a35ba686c0ed64e109748129c510fa90 Please let me know if that looks OK to you. I added a subsequent commit to update the usage string, which we missed before. https://github.com/ecashin/vblade/commit/82b5e1ed82e5c044b75409fcee91502f1a2498ec ... and both these commits follow some long-overdue documentation updates. The README should have mentioned the vblade's design principle of minimalism from day one. https://github.com/ecashin/vblade/commit/b9fb6b7c766c07de3a645599f43ab4c3190631ee -- Ed |
From: Christoph B. <sou...@ma...> - 2014-05-20 20:24:36
|
Ed Cashin wrote... > I was thinking of something like this: > > https://github.com/ecashin/vblade/commit/ca2dbda0a35ba686c0ed64e109748129c510fa90 > > Please let me know if that looks OK to you. Looks good. One final remark, rather nitpicking. You deny length == 0 which is the right thing. It is however possible to create a zero size export by setting offset to the size of the exported file, and a change comparison "size <= offset" would catch that. By the way, the initiator, at least if it's a recent Linux kernel, is not very impressed by such a device. Christoph |
From: Ed C. <ec...@co...> - 2014-05-20 20:30:54
|
Good idea, thanks! On May 20, 2014, at 4:24 PM, Christoph Biedl <sou...@ma...> wrote: > Ed Cashin wrote... > >> I was thinking of something like this: >> >> https://github.com/ecashin/vblade/commit/ca2dbda0a35ba686c0ed64e109748129c510fa90 >> >> Please let me know if that looks OK to you. > > Looks good. One final remark, rather nitpicking. You deny length == 0 > which is the right thing. It is however possible to create a zero > size export by setting offset to the size of the exported file, and a > change comparison "size <= offset" would catch that. > > By the way, the initiator, at least if it's a recent Linux kernel, is > not very impressed by such a device. > > Christoph > > ------------------------------------------------------------------------------ > "Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE > Instantly run your Selenium tests across 300+ browser/OS combos. > Get unparalleled scalability from the best Selenium testing platform available > Simple to use. Nothing to install. Get started now for free." > http://p.sf.net/sfu/SauceLabs > _______________________________________________ > Aoetools-discuss mailing list > Aoe...@li... > https://lists.sourceforge.net/lists/listinfo/aoetools-discuss |
From: Catalin S. <cs...@us...> - 2014-05-21 14:02:45
|
I would suggest adding a message informing the user that his file will be truncated to 512 byte sectors. For example I tested with a file 167 bytes long and received 'Offset 0 too large for file size', which is quite confusing. On 20/05/2014 11:30 PM, Ed Cashin wrote: > Good idea, thanks! > > On May 20, 2014, at 4:24 PM, Christoph Biedl <sou...@ma...> wrote: > >> Ed Cashin wrote... >> >>> I was thinking of something like this: >>> >>> https://github.com/ecashin/vblade/commit/ca2dbda0a35ba686c0ed64e109748129c510fa90 >>> >>> Please let me know if that looks OK to you. >> Looks good. One final remark, rather nitpicking. You deny length == 0 >> which is the right thing. It is however possible to create a zero >> size export by setting offset to the size of the exported file, and a >> change comparison "size <= offset" would catch that. >> >> By the way, the initiator, at least if it's a recent Linux kernel, is >> not very impressed by such a device. >> >> Christoph >> >> ------------------------------------------------------------------------------ >> "Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE >> Instantly run your Selenium tests across 300+ browser/OS combos. >> Get unparalleled scalability from the best Selenium testing platform available >> Simple to use. Nothing to install. Get started now for free." >> http://p.sf.net/sfu/SauceLabs >> _______________________________________________ >> Aoetools-discuss mailing list >> Aoe...@li... >> https://lists.sourceforge.net/lists/listinfo/aoetools-discuss > > ------------------------------------------------------------------------------ > "Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE > Instantly run your Selenium tests across 300+ browser/OS combos. > Get unparalleled scalability from the best Selenium testing platform available > Simple to use. Nothing to install. Get started now for free." > http://p.sf.net/sfu/SauceLabs > _______________________________________________ > Aoetools-discuss mailing list > Aoe...@li... > https://lists.sourceforge.net/lists/listinfo/aoetools-discuss > |
From: Ed C. <ed....@ac...> - 2014-05-22 12:50:08
Attachments:
error-clarity.diff
|
On 2014-05-21 08:02, Catalin Salgau wrote: > I would suggest adding a message informing the user that his file will > be truncated to 512 byte sectors. > For example I tested with a file 167 bytes long and received 'Offset 0 > too large for file size', which is quite confusing. In my staging branch, I updated the error message to explicitly mention the exported size in sectors, with a special case for sub-sector file sizes. https://github.com/ecashin/vblade/commit/f44958553eb535931692964793af8c8b070e5a8c https://github.com/ecashin/vblade/commit/4fbf65b1010f855bf04ef1951f867928d178321f -- Ed Cashin <ed....@ac...> |