[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