On Fri December 9 2011, Michael S. Zick wrote:
> JRO,
> 
> Several problems here with auFS on a 3.0.4 kernel.
> 
> All I can say about the first two is they aren't
> expected based on the on-line man.html.
> 
> root:~# cat /sys/module/aufs/version
> 3.0-20110815
> root:~# uname -a
> Linux Microknoppix 3.0.4 #12 SMP PREEMPT Thu Sep 8 05:27:05 CEST 2011 i686 
> GNU/Linux
> 
> (Also known as Knoppix v6.7.1 LiveDVD on flash.)
> 
> The first one is a simple case that the xino section of the manual
> does not mention that the external xino file must not exist at
> mount time:
> 
> root:~# touch /auspace/auxino
> WRONG!
> File must not exist when mounting auFS:
> root:~# dmesg
> [10481.277111] aufs au_xino_create:693:mount[4720]: open /auspace/auxino(-17)
> 
> That one is simple, either the manual is incomplete or the code test is 
> wrong. ;-)
> 
> The brief version of my setup:
> 
> mkdir /auspace
> mount -t tmpfs autmp /auspace
> mkdir /auspace/systree
> mkdir /auspace/syschgs
> mkdir /auspace/auroot
> 
> make list of top level directories in /auspace/systree
> mount --rbind selected current system directories onto /auspace/systree
> 
> A single system directory example of the list of directories:
> root:~# mount --rbind /sbin /auspace/systree/sbin
> etc. etc. etc.
> 
> The manual mentions using the auFS stack without a writable layer
> (branch) and also that, unless specified, the first layer is read-write.
> 
> So trying:
> root:~$ mount -t aufs -o br:/auspace/systree=ro:/auspace/syschgs=rw syswork 
> /auspace/auroot
> 
> Gives:
> root:~# dmesg
> [10620.585441] aufs au_opts_verify:1368:mount[4727]: first branch should be rw
> 
> And in spite of the dmesg complaint:
> 
> root:~$ cat /proc/self/mounts
> - - just the interesting ones - -
> autmp on /auspace type tmpfs (rw,relatime)
> syswork /auspace/auroot type aufs (rw,relatime,si=5550d122)
> 
> root:~# ls -l /sys/fs/aufs/si_5550d122 
> total 0
> -r--r--r-- 1 root root 4096 Dec  9 11:44 br0
> -r--r--r-- 1 root root 4096 Dec  9 11:44 br1
> -r--r--r-- 1 root root 4096 Dec  9 11:44 xi_path
> 
> root:~# cat /sys/fs/aufs/si_5550d122/*
> /auspace/systree=ro
> /auspace/syschgs=rw
> /auspace/syschgs/.aufs.xino
> 
> Which looks like it would work but it does not.
>

In follow-up, the "does not work" comment above:

Making an external copy of spinning-rust the read-only layer
does "work" (as in: see files in /auspace/auroot). 

That is, like this:

root@Microknoppix:/# mkdir /auspace
root@Microknoppix:/# mount -t tmpfs autmp /auspace
root@Microknoppix:/# mkdir /auspace/{auroot,syschgs}
root@Microknoppix:/# mkdir /mnt/md4
root@Microknoppix:/# mdadm --assemble /dev/md4
mdadm: /dev/md4 has been started with 2 drives.
root@Microknoppix:/# mount /dev/md4 /mnt/md4
root@Microknoppix:/# mount -t aufs -o 
xino=/auspace/auxino,br:/auspace/syschgs=rw:/mnt/md4=ro syswork /auspace/auroot
root@Microknoppix:~# ls /auspace/auroot
Builds  boot  ...  usr  var1  vmlinuz  win-d

So, that leaves from my original post:

The open call for the xino file needs to have "truncate if exists" rather than 
error exit.

The triggering of the "first layer must be rw" dmesg needs (your choice):
  Fixed, if that isn't a requirement
  Prevented from doing the mount if it is a requirement
Note: Since the documents say an auFS stack will work without a rw layer, I 
don't see how
it can be a requirement that the first layer be rw.  ;-)

Fix auplink so that you can unmount a auFS stack that was improperly 
constructed.

That is, when problem two happens and auFS continues with the mount action, 
aufs.umount
can't take it down again. (aufs.umount could print a dmesg warning, and just 
continue)

The quick fix to get rid of it:
mv /sbin/auplink /sbin/auplink.bak
ln -s /bin/true /sbin/auplink
umount <whatever auFS stack is in trouble>
rm -f /sbin/auplink
mv /sbin/auplink.bak /sbin/auplink

Mike

> And then comes the fun, try to get rid of it:
> 
> root:~# umount syswork
> auplink:plink.c:223: AUFS_CTL_PLINK_MAINT: Inappropriate ioctl for device
> auplink:plink.c:223: AUFS_CTL_PLINK_MAINT: Inappropriate ioctl for device
>         
> root:~# mount -o remount,ro /auspace/auroot
> /sbin/mount.aufs:plink.c:223: AUFS_CTL_PLINK_MAINT: Inappropriate ioctl for 
> device
> 
> root:~# umount /auspace/auroot
> auplink:plink.c:223: AUFS_CTL_PLINK_MAINT: Inappropriate ioctl for device
> auplink:plink.c:223: AUFS_CTL_PLINK_MAINT: Inappropriate ioctl for device
> 
> Renaming /sbin/mount.aufs, /sbin/umount.aufs, /sbin/auplink temporarily will
> allow the 'umount' to actually unmount the auFS stack on /auspace/auroot.
> 
> - - - -
> 
> The reason for making my own /auspace as a tmpfs was to keep it out of the
> system tree that was in use.
> 
> The Knoppix installation on flash is a two layer, auFS stack.
> 
> Which tells me that the auFS module and kernel are working, would be hard
> to run this installation if it wasn't.  ;-)
> 
> And it raises a question in my mind -
> Since the directories being "rbind mounted" are the top of another auFS
> stack, could this be the source of some of my problems?
> 
> Mike
> 
> ------------------------------------------------------------------------------
> Cloud Services Checklist: Pricing and Packaging Optimization
> This white paper is intended to serve as a reference, checklist and point of 
> discussion for anyone considering optimizing the pricing and packaging model 
> of a cloud services business. Read Now!
> http://www.accelacomm.com/jaw/sfnl/114/51491232/
> 
> 



------------------------------------------------------------------------------
Cloud Services Checklist: Pricing and Packaging Optimization
This white paper is intended to serve as a reference, checklist and point of 
discussion for anyone considering optimizing the pricing and packaging model 
of a cloud services business. Read Now!
http://www.accelacomm.com/jaw/sfnl/114/51491232/

Reply via email to