[Unionfs] notify_change in inode.c:unionfs_create()

Josef Sipek jsipek at fsl.cs.sunysb.edu
Wed Mar 8 20:47:41 EST 2006


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.

Jeff.
-------------- next part --------------
diff -u -1 -0 -r1.266 inode.c
--- inode.c	7 Mar 2006 09:03:40 -0000	1.266
+++ inode.c	9 Mar 2006 01:43:59 -0000
@@ -94,22 +94,22 @@
 			newattrs.ia_valid |= ATTR_SIZE;
 			newattrs.ia_size = 0;
 		}
 
 		err = notify_change(whiteout_dentry, &newattrs);
 
 		mutex_unlock(&whiteout_dentry->d_inode->i_mutex);
 
 		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 inode number %lu, ignoring..\n",
+			       __FILE__, __LINE__, err, whiteout_dentry->d_inode->i_ino);
 
 		new_hidden_dentry = dtohd(dentry);
 		DGET(new_hidden_dentry);
 
 		hidden_dir_dentry = GET_PARENT(whiteout_dentry);
 		lock_rename(hidden_dir_dentry, hidden_dir_dentry);
 
 		if (!(err = is_robranch_super(dentry->d_sb, bstart))) {
 			err =
 			    vfs_rename(hidden_dir_dentry->d_inode,


More information about the unionfs mailing list