Hi,
I simple fix this(#2176188), it work fine in my computer, can anyone
do more check?
Thanks!
patch:
linux-2.6.22-source/fs/cofusefs/dir.c
static int fuse_rename(struct inode *olddir, struct dentry *oldent,
struct inode *newdir, struct dentry *newent)
{
struct fuse_conn *fc = INO_FC(olddir);
struct fuse_in in = FUSE_IN_INIT;
struct fuse_out out = FUSE_OUT_INIT;
struct fuse_rename_in inarg;
memset(&inarg, 0, sizeof(inarg));
inarg.newdir = newdir->i_ino;
in.h.opcode = FUSE_RENAME;
in.h.ino = olddir->i_ino;
in.numargs = 3;
in.args[0].size = sizeof(inarg);
in.args[0].value = &inarg;
in.args[1].size = oldent->d_name.len + 1;
in.args[1].value = oldent->d_name.name;
in.args[2].size = newent->d_name.len + 1;
in.args[2].value = newent->d_name.name;
request_send(fc, &in, &out);
if (!out.h.error) {
uncache_dir(olddir);
+ d_move(oldent, newent);
if (olddir != newdir)
uncache_dir(newdir);
}
return out.h.error;
}
chen
che...@16...
2008-10-22
|