From: chen <che...@16...> - 2008-10-22 03:45:34
|
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 |