]> git.sur5r.net Git - bacula/bacula/commit
Fix bug #1807
authorMarco van Wieringen <mvw@planets.elm.net>
Fri, 6 Jan 2012 19:42:22 +0000 (20:42 +0100)
committerKern Sibbald <kern@sibbald.com>
Sat, 20 Apr 2013 12:50:23 +0000 (14:50 +0200)
commit4b616fc38ecee1d077083de76cd0ce6fa527d19c
treee64ff29971353f5c20d426c928d14b16f18a1bc0
parent3a37b6e12bb9a22d9f292462ad6df686cb378b7b
Fix bug #1807

Put the restore of xattr and acl streams on a restore stack
which gets popped after the actual file properties are restored.
As directories are never extracted those are excluded from
the delayed restore stack and have their streams processed
when we receive them.

This way we don't clobber the security info due to executing
chown and chmod calls on the restored file. We now first
restore the whole file and properties and then all of its
acls and extended attributes.

We only exclude the Solaris extended attribute streams as we
could have multiple of those with the maximum size and that
would use to much internal memory. For all other platforms
we only have one xattr stream with a maximum of 1 Mb so that
doesn't put to much stress on the filed. Solaris extensible
attributes are delayed restored. Restoring the Solaris
native extended attributes early should be no problem as they
are restored into a seperate namingspace and have file like
content. Security specific info is stored in extensible
attributes and those are delayed restored.

ACL streams are all so small that it makes no sense to
exclude them and we really want to always extract acl streams
after doing a chown and chmod because otherwise we might
reset the acl being restored earlier.
bacula/src/filed/restore.c
bacula/src/filed/restore.h