On Saturday 24 April 2010, 09:17:46 sf...@users.sourceforge.net wrote:
> Jan Engelhardt:
> > >"Hans-Peter Jansen":
> > >> au_xino_create:659:mount[7044]: xino doesn't support
> > >> /tmp/.aufs.xino(xfs)
> > >>
> > >> Hmm, /tmp is xfs
> > >
> > >Correct.
> > >Aufs2 rejects placing XINO files on XFS while aufs1 allowed it.
> >
> > Why exactly is that?
>
> Because XFS doesn't maintain some necessary attributes for XINO.
> I hope these comments and the commit log in 2008 will be the answer for
> you.

Okay, understood. Unfortunate, but true. Since more and more things are 
moved to tmpfses nowadays, it might be a good idea to add another flag to 
aufs sysfs interface:

/sys/fs/aufs/si_*/xi_size

to be able to check the currently allocated size of a single branch in order 
to locate an offender.. (Imagine some dozen aufses using xino space on one 
tmpfs)  Did you test aufs2 behavior in case of running out of xino space?

Thanks,
Pete

>
> J. R. Okajima
>
> (from fs/aufs/fstype.h)
> ----------------------------------------------------------------------
> /*
>  * filesystems which don't maintain i_size or i_blocks.
>  */
> static inline int au_test_fs_bad_iattr_size(struct super_block *sb)
> {
>       return au_test_xfs(sb)
>
>               || au_test_ubifs(sb)
>               || au_test_hfsplus(sb)  /* maintained, but incorrect */
>
>               /* || au_test_ext4(sb) */       /* untested */
>               /* || au_test_ocfs2(sb) */      /* untested */
>               /* || au_test_ocfs2_dlmfs(sb) */ /* untested */
>               /* || au_test_sysv(sb) */       /* untested */
>               /* || au_test_minix(sb) */      /* untested */
>               ;
> }
>
> /*
>  * the filesystem where the xino files placed must support i/o after
> unlink and * maintain i_size and i_blocks.
>  */
> static inline int au_test_fs_bad_xino(struct super_block *sb)
> {
>       return au_test_fs_remote(sb)
>
>               || au_test_fs_bad_iattr_size(sb)
>
> #ifdef CONFIG_AUFS_BR_RAMFS
>
>               || !(au_test_ramfs(sb) || au_test_fs_null_nd(sb))
>
> #else
>
>               || !au_test_fs_null_nd(sb) /* to keep xino code simple */
>
> #endif
>               /* don't want unnecessary work for xino */
>
>               || au_test_aufs(sb)
>               || au_test_ecryptfs(sb);
>
> }
> ----------------------------------------------------------------------
>
> commit 222096ae7f7616caa9e4150948096160cc8a8141
> Author: Christoph Hellwig <h...@infradead.org>
> Date:   Tue Feb 5 12:13:46 2008 +1100
>
>     [XFS] stop updating inode->i_blocks
>
>     The VFS doesn't use i_blocks, it's only used by generic_fillattr and
> the generic quota code which XFS doesn't use. In XFS there is one use to
> check whether we have an inline or out of line sumlink, but we can
> replace that with a check of the XFS_IFINLINE inode flag.



------------------------------------------------------------------------------

Reply via email to