emulate an end-of-media
Martin Laabs
martin.laabs at mailbox.tu-dresden.de
Mon Feb 25 20:19:39 UTC 2008
Hi,
On Mon, 25 Feb 2008 20:34:31 +0100, wrote:
> You might want to play with the -P option to dump. Your above could be
> written as:
>
> dump -aL0 -P 'compress -c' /MYFILESYSTEM | cdrecord dev=... -
Unfornunately this does not work as you expect. Dump just takes
its data an pass it to the script specified to -P.
It does not grab the output of the script to count the data after-
wards. This means the -a option does not work at all (because a
pipe has no EOM-Signal) and the -B option will limit the input
data only:
$ dump -0 -B 100 -P 'dd' /dev/md4 > /dev/null
DUMP: Date of this level 0 dump: Mon Feb 25 21:11:40 2008
DUMP: Date of last level 0 dump: the epoch
DUMP: Dumping /dev/md4 to child pipeline process
DUMP: mapping (Pass I) [regular files]
DUMP: mapping (Pass II) [directories]
DUMP: estimated 30022 tape blocks on 291.38 tape(s).
DUMP: dumping (Pass III) [directories]
DUMP: dumping (Pass IV) [regular files]
200+0 records in
200+0 records out
102400 bytes transferred in 0.031908 secs (3209223 bytes/sec)
DUMP: Closing child pipeline process
DUMP: Change Volumes: Mount volume #2
DUMP: Is the new volume mounted and ready to go?: ("yes" or "no")
In contrast with:
$ dump -0 -B 100 -P 'compress -c' /dev/md4 | dd > /dev/null
DUMP: Date of this level 0 dump: Mon Feb 25 21:12:23 2008
DUMP: Date of last level 0 dump: the epoch
DUMP: Dumping /dev/md4 to child pipeline process
DUMP: mapping (Pass I) [regular files]
DUMP: mapping (Pass II) [directories]
DUMP: estimated 30022 tape blocks on 291.38 tape(s).
DUMP: dumping (Pass III) [directories]
DUMP: dumping (Pass IV) [regular files]
DUMP: Closing child pipeline process
DUMP: Change Volumes: Mount volume #2
DUMP: Is the new volume mounted and ready to go?: ("yes" or "no") ^C
59+1 records in
59+0 records out
30208 bytes transferred in 6.315456 secs (4783 bytes/sec)
> Assuming that compress -c & cdrecord play nice (which your magic
> device solution also requires)
My solution can just close the pipe at the one "end" of the magic
device which would be realy simple to implement in a script.
Of cause cdrecord will indeet close the pipe when the media is full. But
I think the media will not be usable since there is i.e. just no
more space for finalisation of the dvd.
But this is not a big probleme since I can use my "count compressed
data and close stdin after is reaches limit x"-script.
> Well, if -B worked on compressed output, then you could split it up
> on volumes, which wouldn't be quite so bad. So add making -P and -B
> play nice together (again, they don't seem to as of 6.2) as a
> possible solution.
Yes - this would be the best solution at all. But as I wrote - the
-B option only counts the data thats thrown out to stdout from dump
and doesn't fetch stout again.
Changing this behaviour of dump would break the backward compati-
bility. (However - I could introduce a new Option i.e. -C for compress :-)
But I worrie about updates with such a modified dump because I
would have to patch the original dump every time after I'd
updated my system.
How hard is it to get those a change into the CORE-Tree when coded
and tested well?
Thank you,
Martin L.
More information about the freebsd-hackers
mailing list