[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

pbuilder: cowdancer/cowbuilder status update



Hi,

This is an update on using userland COW method with pbuilder.

cowdancer is a tool that allows you to "cp -al" (hardlink) a tree, and
break the hardlink when a write-open to a file is performed. The
adventurous part of cowdancer COW implementation is that it's trying
to do this from within userland only.

cowbuilder doesn't really exist yet; it's a name for pbuilder ported
to fully use cowdancer. cowdancer is under development, and Debian
package exists in unstable. It seems like it's getting nearly there
with the feature set. With version 0.8, performance is improved
against a large tree (I profiled against building the kernel), and
with version 0.9, I fixed a bug which you could not replace /lib/ld.so
while cowdancer was running.

There are a few known bugs and limitations with cowdancer:

1. dpkg does open(O_RDONLY), fchown()/fchmod(). 

  cowdancer is built on a heuristics where a read-only access to an
  i-node will not modify the i-node. This case is currently not
  handled.

2. cowdancer is user-space application

  because it is a user-space application, it cannot do copy-on-write
  operation atomically. If there was a multi-thread application trying
  to newly open a file for write, there is a race condition for COW.


However, most of the tests indicate that it's working good enough.
tests/log/900_test_pbuilder.sh.log in cowdancer source tree is a log
of a run, and tests/900_test_pbuilder.sh is the script to invoke
pbuilder for testing. There is no pretty frontend to pbuilder-cow yet,
but it seems to be theoretically there.

The guts of cowbuilder from tests/900_test_pbuilder.sh are:

	sudo cp -al $ORIG $WORK-1
	sudo cp var/log/dpkg.log /tmp/a
	sudo pbuilder update --buildplace $WORK-1 --no-targz --internal-chrootexec "chroot $WORK-1 cow-shell"
	sudo pbuilder build --buildplace $WORK-1 --no-targz --internal-chrootexec "chroot $WORK-1 cow-shell" dsh*.dsc


regards, 
	junichi
-- 
dancer@{debian.org,netfort.gr.jp}   Debian Project



Reply to: