tags 401180 + patch thanks Lucas Nussbaum <[EMAIL PROTECTED]> writes:
> I am using "file" chroots. the chroot is usually untared under > /var/lib/schroot, however, I wanted to change this to another location > (my /var is quite small, and many apps don't like it being full). > > I couldn't find any way to specify another directory for this, so I just > symlinked /var/lib/schroot to another place. However, this caused > $LIBEXEC_DIR/schroot-listmounts to be unable to determine that /home, > /tmp, etc were still bind-mounted. So do_umount_all in that file exits > without error even if my filesystems are still bind-mounted, and my home > directory and my /tmp got removed. I have attached a patch which I believe addresses this problem. Please could you build schroot with the patch applied and test under the same conditions (perhaps with a backup beforehand), to see if this fixes things. I have tested it myself, and I do think it works, but I would appreciate some confirmation before uploading a fixed version. Many thanks, Roger -- .''`. Roger Leigh : :' : Debian GNU/Linux http://people.debian.org/~rleigh/ `. `' Printing on GNU/Linux? http://gutenprint.sourceforge.net/ `- GPG Public Key: 0x25BFB848 Please GPG sign your mail.
Index: schroot/schroot-listmounts-main.cc =================================================================== --- schroot/schroot-listmounts-main.cc (revision 1061) +++ schroot/schroot-listmounts-main.cc (working copy) @@ -22,6 +22,7 @@ #include "schroot-listmounts-main.h" #include <cerrno> +#include <climits> #include <cstdio> #include <cstdlib> #include <ctime> @@ -90,6 +91,12 @@ std::string to_find = sbuild::normalname(this->opts->mountpoint); + // NOTE: This is a non-standard GNU extension. + char *rpath = realpath(to_find.c_str(), NULL); + to_find = rpath; + free(rpath); + rpath = 0; + std::FILE *mntdb = std::fopen(mountfile.c_str(), "r"); if (mntdb == 0) throw error(mountfile, OPEN, strerror(errno));
pgpguegLUdzip.pgp
Description: PGP signature