由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Joke版 - 大家能帮我看一下下面的问题吗,不胜感激。 (转载)
相关主题
中情局虐囚细节曝光:屁眼喂食 - 新技能 Get! (转载)Re: 香奈儿雨靴 (转载)
用原始印欧语朗读施来切寓言,we've all been silly tourists... (转载)
逗死我了,哈哈 (转载)万能的学术版,2 这个概念怎么翻译?
猜猜这时哪里?Victoria's Secret-国内雷版 (转载)
看看当年的美国工人阶级(图) (转载)现代爱情故事
请人做个网站,已有方案和样板,只需实现 (转载)Re: 有没有觉得IPhone4屏幕小的? (转载)
万能的学术版,请教如何编辑网页每次搭飛機的時候我都有一個疑問:就是起飛跟降落的時候,空姐(转载)
还有人记得美少女梦工场么?索男离婚案例
相关话题的讨论汇总
话题: dentry话题: nfs话题: sdentry话题: silly话题: nfsmnt
进入Joke版参与讨论
1 (共1页)
x****o
发帖数: 21566
1
【 以下文字转载自 Linux 讨论区 】
发信人: wjk302 (akui), 信区: Linux
标 题: 大家能帮我看一下下面的问题吗,不胜感激。
发信站: BBS 未名空间站 (Wed Feb 1 22:05:13 2012, 美东)
很冒昧的打扰大家。大家能帮我看一下下面的问题吗,不胜感激。
问题是这样的,在生产环境下
1、Suse的Linux有 /nfsmnt/work_pub/web 文件夹和 /nfsmnt/work_inwork/web
文件夹 ,它们都是NFS文件挂载
2、机器上有多个进程会读写/nfsmnt/work_pub/web 文件夹的内容
3、cron会周期性的 删除/nfsmnt/work_pub/web 文件夹下所有文件,并把/nfsmnt/
work_inwork/web 文件夹下的所有内容拷贝到前面那个文件夹中
这样,完全删除/nfsmnt/work_pub/web 文件夹下所有文件的时候就会有.nfs文件删除
不掉(上面的流程因为某些问题不方便改动)。
想咨询的问题是:我现在能不能修改一下fs/nfs/dir.c 中 nfs_sillyrename这个方法
,把所有.nfs文件生成到/nfsmnt/temp目录下,然后重新编译内核解决上面的问题?期
待大家的指点,先谢谢了。
下面是源代码
static int nfs_sillyrename(struct inode *dir, struct dentry *dentry)
{
static unsigned int sillycounter;
const int i_inosize = sizeof(dir->i_ino)*2;
const int countersize = sizeof(sillycounter)*2;
const int slen = strlen(".nfs") + i_inosize + countersize;
char silly[slen+1];
struct qstr qsilly;
struct dentry *sdentry;
int error = -EIO;
dfprintk(VFS, "NFS: silly-rename(%s/%s, ct=%d)\n",
dentry->d_parent->d_name.name, dentry->d_name.name,
atomic_read(&dentry->d_count));
if (atomic_read(&dentry->d_count) == 1)
goto out; /* No need to silly rename. */
#ifdef NFS_PARANOIA
if (!dentry->d_inode)
printk("NFS: silly-renaming %s/%s, negative dentry??\n",
dentry->d_parent->d_name.name, dentry->d_name.name);
#endif
/*
* We don't allow a dentry to be silly-renamed twice.
*/
error = -EBUSY;
if (dentry->d_flags & DCACHE_NFSFS_RENAMED)
goto out;
sprintf(silly, ".nfs%*.*lx",
i_inosize, i_inosize, dentry->d_inode->i_ino);
sdentry = NULL;
do {
char *suffix = silly + slen - countersize;
dput(sdentry);
sillycounter++;
sprintf(suffix, "%*.*x", countersize, countersize, sillycounter);
dfprintk(VFS, "trying to rename %s to %s\n",
dentry->d_name.name, silly);
sdentry = lookup_one(silly, dentry->d_parent);
/*
* N.B. Better to return EBUSY here ... it could be
* dangerous to delete the file while it's in use.
*/
if (IS_ERR(sdentry))
goto out;
} while(sdentry->d_inode != NULL); /* need negative lookup */
nfs_zap_caches(dir);
qsilly.name = silly;
qsilly.len = strlen(silly);
error = NFS_PROTO(dir)->rename(dir, &dentry->d_name, dir, &qsilly); //可否
修改 此处代码来解决问题
if (!error) {
nfs_renew_times(dentry);
d_move(dentry, sdentry);
error = nfs_async_unlink(dentry);
/* If we return 0 we don't unlink */
}
dput(sdentry);
out:
return error;
}
n***i
发帖数: 5479
2
J point, please.

nfsmnt/

【在 x****o 的大作中提到】
: 【 以下文字转载自 Linux 讨论区 】
: 发信人: wjk302 (akui), 信区: Linux
: 标 题: 大家能帮我看一下下面的问题吗,不胜感激。
: 发信站: BBS 未名空间站 (Wed Feb 1 22:05:13 2012, 美东)
: 很冒昧的打扰大家。大家能帮我看一下下面的问题吗,不胜感激。
: 问题是这样的,在生产环境下
: 1、Suse的Linux有 /nfsmnt/work_pub/web 文件夹和 /nfsmnt/work_inwork/web
: 文件夹 ,它们都是NFS文件挂载
: 2、机器上有多个进程会读写/nfsmnt/work_pub/web 文件夹的内容
: 3、cron会周期性的 删除/nfsmnt/work_pub/web 文件夹下所有文件,并把/nfsmnt/

a*******r
发帖数: 3452
3
专业笑话深千尺。
1 (共1页)
进入Joke版参与讨论
相关主题
索男离婚案例看看当年的美国工人阶级(图) (转载)
大家能帮我看一下下面的问题吗,不胜感激。请人做个网站,已有方案和样板,只需实现 (转载)
Symbolic Link: ln 和 cp -s 是一样的么?万能的学术版,请教如何编辑网页
SSA, 能不能讲一下 inode还有人记得美少女梦工场么?
中情局虐囚细节曝光:屁眼喂食 - 新技能 Get! (转载)Re: 香奈儿雨靴 (转载)
用原始印欧语朗读施来切寓言,we've all been silly tourists... (转载)
逗死我了,哈哈 (转载)万能的学术版,2 这个概念怎么翻译?
猜猜这时哪里?Victoria's Secret-国内雷版 (转载)
相关话题的讨论汇总
话题: dentry话题: nfs话题: sdentry话题: silly话题: nfsmnt