x*o
2 楼
【 以下文字转载自 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;
}
发信人: 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;
}
J*g
3 楼
2 or 3 months after redemption.
n*i
4 楼
J point, please.
nfsmnt/
【在 x****o 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: 【 以下文字转载自 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/
nfsmnt/
【在 x****o 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: 【 以下文字转载自 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/
Z*2
5 楼
当天
06/15/13 CITI 10% AWARD RDMPTION BONUS 3,500 0 3,500
06/15/13 TM35A CHINA ECON OW TKT -35,000 0 -35,000
06/15/13 CITI 10% AWARD RDMPTION BONUS 3,500 0 3,500
06/15/13 TM35A CHINA ECON OW TKT -35,000 0 -35,000
a*r
6 楼
专业笑话深千尺。
w*r
7 楼
不错哦,赶紧redeem
f*g
13 楼
next statement会出现,时间是你redeem的那一天
别忘了每年有10000的cap
包子plz
别忘了每年有10000的cap
包子plz
相关阅读
我的美国婆婆太时尚,太开放了,欲哭无泪啊! (转载)唉,要是老三和博导是一个阵营的就好了未来婆婆说我屁股太小了,不好生养 (转载)到底有没有让女人湿透的男用香水?做黄冈真题对这边小孩上藤校有帮助不?昨晚做了个梦,一直纠结到现在。。。不知道这个有人发过没有?Re: 婆婆来了,要我们吃浇尿的青菜 (转载)普拉蒂尼含泪让布拉特下台 (转载)中国学校对解放亚洲的日俄战争只字不提中国股市这次大跌居然来阴的姐姐妈妈都来了,好高兴哦。我却不想带她们去星巴客 (转载)方便的时候请欣赏 -- 复旦110周年校庆宣传片和纯正的英语依法治国深入人心搞笑有趣的造句你也要来试试Re: 原来路虎男是被他老婆害了 (转载)紧急学术问题。关于电灯接线女性用水不让过安检!求职的人,你们真的愿意给那些给你机会的老中当小弟吗 (转载)