Amanda calls tar like this:

| tar -v --create --file /dev/null --directory / --one-file-system --sparse 
--ignore-failed-read --totals --exclude-from 
/tmp/amanda/sendbackup._.20061017012636.exclude --listed-incremental /tmp/xxx .

If `--listed-incremental /tmp/xxx' is removed, --one-file-system works
correctly.

The code to decide whether to include a child directory or not looks
like (src/incremen.c:procdir()):

| if (one_file_system_option && device != stat_data->st_dev
|     /* ... except if it was explicitely given in the command line */
|     && !((np = name_scan (name_buffer, true)) && np->explicit))
|   directory->children = NO_CHILDREN;
| else if (children == ALL_CHILDREN)
|   directory->children = ALL_CHILDREN;

The third condition `!((np = name_scan (name_buffer, true)) && np->explicit)'
(which was not present in tar 1.14!) causes the problem. For e.g. name_buffer =
"./home" (which is on a separate partition), struct name pointed to by np looks 
like:

    np->name = "."
    np->explicit = 1
    np->matching_flags = 40000008

If I replace the `.' (final argument) in the tar command line above by
`/', name_scan("./home", true) returns NULL and the directory is not
included. However, this should give the exact same results, as I'm backing up
the root file system.

So it looks like a bug in name_scan().

Gr{oetje,eeting}s,

                                                Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [EMAIL PROTECTED]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                                            -- Linus Torvalds


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to