[Unionfs] notify_change in inode.c:unionfs_create()
Hans-Peter Jansen
hpj at urpla.net
Thu Mar 9 13:12:23 EST 2006
Am Donnerstag, 9. März 2006 02:47 schrieb Josef Sipek:
> On Wed, Mar 08, 2006 at 09:19:28PM +0100, Hans-Peter Jansen wrote:
> > Am Mittwoch, 8. März 2006 18:18 schrieb Josef Sipek:
> > > On Wed, Mar 08, 2006 at 10:29:23AM -0500, Charles P. Wright wrote:
> > > > Jeff, This probably needs to use superio.
> > >
> > > Hmm..I shouldn't need any fsuid/fsgid change since we are passing
> > > ATTR_FORCE which bypasses all the permission checks. So, I'm
> > > tempted to blame nfs.
> > >
> > > Peter: Was the ro branch ever rw?
> >
> > No, never.. Not a single .wh.* in the ro branch, while plenty of
> > them in the rw branch..
> >
> > > If so, can you check that you don't
> > > have a whiteout for the file on it?
> >
> > Hmm, how about including the filename in that error msg? I'm
> > tempted to patch that in, but can't do that immediately. Maybe
> > later tonight.
>
> The attached patch prints out the inode number and the file name.
Ahh, thanks, Jeff, but it didn't apply to my slightly mangled unionfs
snapshot. Here's what I applied now:
--- inode.c.orig 2006-03-09 16:48:09.292014175 +0100
+++ inode.c 2006-03-09 16:54:45.613548172 +0100
@@ -101,8 +101,8 @@
if (err)
printk(KERN_WARNING
- "unionfs: %s:%d: notify_change failed: %d, ignoring..\n",
- __FILE__, __LINE__, err);
+ "unionfs: %s:%d: notify_change failed: %d for %s (inode: %lu), ignoring..\n",
+ __FILE__, __LINE__, err, whiteout_dentry->d_name.name, whiteout_dentry->d_inode->i_ino);
new_hidden_dentry = dtohd(dentry);
DGET(new_hidden_dentry);
I hope, I did the d_name.name referencing right..
That's logged now:
unionfs: /usr/src/packages/BUILD/unionfs-20060221-0341/inode.c:105:
notify_change failed: -13 for .wh.dcopPfMg8b (inode: 2713288224), ignoring..
find . -name .wh.dcopPfMg8b -ls
2713288224 0 -rwxr-xr-x 1 ak lisa 0 Mar 6 01:20 ./tmp/.wh.dcopPfMg8b
That file exists, but is indeed owned by somebody else. Looks like
the dcop filename isn't as random as it seems. I "solved" this issue
by cleaning up /tmp and /var/tmp before union mount..
Pete
More information about the unionfs
mailing list