x***i 发帖数: 64 | 1 Tru64 Unix with CDE
登录时,提示
/usr: create/symlink failed, no inodes free
无法创建文件,所以也就无法正常登录
df -i, 发现的确inode 100% used, 试着释放一些inode, 我删了/usr下的几个
占用inode多的目录(for example: 68,000 /usr/doc),但是删完再用df -i check
发现只释放了6个inode, 因为太少,还是无法正常登录
这种情况,如何处理?如何增加inode的数目? 为什么我无法释放所显示的inode数目? |
|
f******p 发帖数: 48 | 2 查了些代码,好像可以用 EXT2_I(inode),如:struct ext2_inode_info *ei = EXT2_I
(inode);
但是EXT2_I似乎没有被export symbol,在我的模块里该如何使用呢?
同时,EXT2_I似乎使用container_of()来实现的,所以我试着用如下代码:
struct ext2_inode_info *ei=container_of(inode,struct ext2_inode_info,vfs_
inode);
inode是所得到的struct inode. 但该行报错:
error: dereferencing pointer to incomplete type
error: invalid use of undefined type 'struct ext2_inode_info'
高手帮忙啊!!!!感激不尽。。。。。。。。 |
|
L***e 发帖数: 42 | 3 Hi, as we use "ls -li" we can see file inode and their number of links.
But how do we find out which files are linked to htis same inode?
for example:
I have a file with inode of: 12345
and I can see there are 3 links (hardlinked)
I guess symbolic link doesn't count on the link number. If I am wrong, correct
me.
How do I find out which other files are of inode 12345? Does find support
find filenames with inode as input? How?
Thanks. |
|
w*******y 发帖数: 60932 | 4 Link:
http://itunes.apple.com/app/inodeals-19-in-1-deals-coupon/id340736684?mt=8
Why pay retail? If you are in mood of finding great deals or looking for
coupons... on the Black Friday or any other days, this app is a must for you
. - inoDeals is full featured deal reader that allows you search, preview,
read, save and share good deals at tip of your finger. This is one of the
best deal app on the AppStore. - inoDeals has the most comprehensive list
of deal sites on the web: Black Friday F... 阅读全帖 |
|
S*A 发帖数: 7142 | 5 这个是我猜的,不对欢迎指正。
icache 里面的东西在 worse case 是不能被 shrink 的。
因为 inode 不是在 page boundary 里面的。而且你正在 open 的 file
都是算在 inode cache 里面的。最坏情况下每个 page 有一个 inode
正在使用, 调用 struct shrinker->shrink = shrink_icache_memory
以后什么都释放不出来。要精确表示可以有多少 memory 可以被 free
出来需要走完整个 icache 才能确定。所以统计的时候用了最坏情况。
这个和 page cache 不一样。只要不是 dirty 的 page cache 马上
可以释放。用的时候再读进来好了。
而且这个明显不是 page cache, 当然不应该算在 page cache 里面。
"/ |
|
S*A 发帖数: 7142 | 6 what race condition do you want to prevent?
mv inside the same file system is very simple.
It does not change the inode much at all, it just change
the directory entry that points to the inode.
Some file system allow more than one directory entry
points to the same inode (hard link). |
|
w*******y 发帖数: 60932 | 7 I bought this app to check deals on my iPhone for $2.99 and just found out (
from their website) that they have July 4th special (7/4-7/6) for $0.99.
Also they offer FREE promo codes to few lucky ones on their website until
they run out of the free codes.
This is pretty good deal app, 4/5 stars. I tried other free deal apps and
finally settled with this paid app. You can search multiple deal sites
quickly, save, share...
inoDeals AppStore link:
http://itunes.apple.com/us/app/inodeals/id340736684 |
|
v*****r 发帖数: 1119 | 8 不知道你怎么算的,"cached" column 是包括 inode cache 和 page cache 的。
“Used" column 包括 了 "cached" column + user space memory.
"/ |
|
r****t 发帖数: 10904 | 9 以及 mv 文件的时候,内核如何防止 race condition? inode semaphore 具体来讲是
怎么设置的? |
|
r****t 发帖数: 10904 | 10 Thanks, this directory entry is another inode, isn't it?
Is this modification of pointer atomic?
What if two users trying to mv a file at about the same time, would there be
any possible race condition? |
|
S*A 发帖数: 7142 | 11
No, directory file is another file own by file system itself.
It contain many directory entry. The entry entry is just contain
the name and attribute and file it points to. The main purpose
is to do the name to inode lookup.
In journal file system, you can consider it atomic on disk.
In other file system, no, it is not atomic on disk. That is
why it need fsck after unclean shutdown.
In memory it is usually protected by the directory lock.
be
No, all write to a directory file has lock (usually a... 阅读全帖 |
|
s***e 发帖数: 122 | 12 来自主题: Programming版 - 问个面试题 这个就是一次遍历,但是有一些bug, 没有考虑n<0以及链表长度小于n+1的情况。下面
是一些修改以及测试用例。
#include
struct iNode {
int value;
iNode * next;
iNode() { value = 0; next = NULL; }
iNode(int v) : value(v) { next = NULL; }
iNode(int v, iNode* nx) : value(v), next(nx) {}
};
iNode * getNthLastNode(iNode * head, int n) {
if (head == NULL || n < 0) return NULL;
iNode* pfirst = head;
for (int counter = 0; counter < n; counter++) {
if (pfirst->next != NULL)
pfirst = pfirst->next; |
|
s***e 发帖数: 122 | 13 来自主题: Programming版 - 问个面试题 。。。希望你不是应聘开发的职位,呵呵
// 从数组构建链表的函数
iNode * buildLinkList(int a[], int n) {
if (a == NULL || n <= 0) return NULL;
iNode* head = new iNode(a[0]);
iNode* tail = head;
for (int i = 1; i < n; ++i) {
tail->next = new iNode(a[i]);
tail = tail->next;
}
return head;
}
// 释放链表内存的函数
void destroyLinkList(iNode* head) {
while (head != NULL) {
iNode* tmp = head->next;
delete head;
head = tmp;
}
}
// 打印链表
void printLinkList(iNode* head) {
if |
|
i**p 发帖数: 902 | 14 最近编译运行了《Essential Linux Device Drivers》第5章的例子,
Driver for the Parallel LED Board (led.c)。程序不复杂。其中有一个函数led_
attach(struct parport *port) 是由parport_register_driver(&led_driver)注册的。
请问,led_attach()是何时被调用的?或者说怎么引起系统调用这个函数?
----------------------------------------
I double checked my code again. Though I use the same name as the link http://www.spinics.net/lists/newbies/msg38087.html suggested, the
led_attach() is not called.
code is here.
#include
#include
#include 阅读全帖 |
|
j****9 发帖数: 2295 | 15 来自主题: Programming版 - 问个面试题 一次遍历找到单链表倒数第m个元素。
一道老题。
网上有code。看起来没什么问题。但也有人说这个不是一次遍历。求一次遍历的正解代码。
只是对于test case 怎么写不太清楚。
struct iNode {
int value;
iNode * next;
};
iNode * getresult(iNode * head,int n)
{
iNode *pfirst;
iNode *psecond;
pfirst=head;
int counter;
for(counter=0;counter
pfirst=pfirst->next;
}
psecond=head;
while(pfirst!=NULL) {
pfirst=pfirst->next;
psecond=psecond->next;
}
return psecond;
} |
|
N*n 发帖数: 456 | 16 看不太懂前两句。
淘光节是2010 11/11 开始的。
秒杀不清楚何时开始。
in-line data.简单查了一下
Inline Data
The inline data feature was designed to handle the case that a file's data
is so tiny that it readily fits inside the inode, which (theoretically)
reduces disk block consumption and reduces seeks. If the file is smaller
than 60 bytes, then the data are stored inline in inode.i_block. If the rest
of the file would fit inside the extended attribute space, then it might be
found as an extended attribute "system.data" within the... 阅读全帖 |
|
i**p 发帖数: 902 | 17 I double checked my code again. Though I use the same name as the link http://www.spinics.net/lists/newbies/msg38087.html suggested, the
led_attach() is not called.
code is here.
#include
#include
#include
#include
#include
#include
#include
#define DEVICE_NAME "led"
static dev_t dev_number; /* Allotted device number */
static struct class *led_class; /* Class to which ... 阅读全帖 |
|
c******n 发帖数: 4965 | 18 【 以下文字转载自 CS 讨论区 】
发信人: creation (努力自由泳50m/45sec !), 信区: CS
标 题: 问个学术问题.. LFS log-structured file system
发信站: BBS 未名空间站 (Thu Dec 2 23:10:57 2010, 美东)
1990 Rosenblum 那篇paper, 估计很多人上OS 课的时候都读过,
我看了半天, 它读inode 时候还是要去读inode map 啊, 这个inode map 难道不就
跟以前的
superblock 里面inode 一样么? 去读/写inode map, disk 一样还是会seek 啊。。。。 |
|
c******n 发帖数: 4965 | 19 1990 Rosenblum 那篇paper, 估计很多人上OS 课的时候都读过,
我看了半天, 它读inode 时候还是要去读inode map 啊, 这个inode map 难道不就
跟以前的
superblock 里面inode 一样么? 去读/写inode map, disk 一样还是会seek 啊。。。。 |
|
c******n 发帖数: 4965 | 20 1990 Rosenblum 那篇paper, 估计很多人上OS 课的时候都读过,
我看了半天, 它读inode 时候还是要去读inode map 啊, 这个inode map 难道不就
跟以前的
superblock 里面inode 一样么? 去读/写inode map, disk 一样还是会seek 啊。。。。 |
|
S*A 发帖数: 7142 | 21 我再说一个,你写文件的时候,每次写都是会导致文件 inode 的
access time 和 长度被更新的。如果你的buffer 很小,就
会频繁commit journal,例如每写一个block都把 inode 写
一下。磁头需要在 inode 和文件块间移动。
如果你的 cache 比较大,就可以写比较长一段然后commit
journal。然后中间对 inode 的反复 update 就可以 merge
到最终结果。在 journal 里面一次 update 很多个 block 的
inode 结果。 |
|
s******n 发帖数: 3946 | 22 只需要上原目录dir2和新目录dir1的锁,而且没有必要同时加锁避免死锁:
move(inode, new_parent)
inodeparent = inode->parent;
lock(inodeparent)
inodeparent->remove(inode);
unlock(inodeparent);
lock(new_parent);
new_parent->addchild(inode);
unlock(new_parent); |
|
|
a**********k 发帖数: 1953 | 24 不错, 基本功扎实。
补充一点:
inode carries the map of where the data part of a file is,
while path carries the name part of a file (the complete path
including dentries and the filename).
Also, if DHCP is enabled, it could overwrite what is configured in /etc/
resolve.conf.
In that case, you need to modify your dhcp client config as well, say
/etc/dhcp3/dhclient.conf.
文件系统中 inode 和 path 的区别。我回答是 inode 是文件系统的一个数据结构,指
向某个磁盘上的文件;而 path 是由多个 struct dentry 组成的,每个 dentry 描述
了 inode 的父子关系。
最后一问是如何修改 DNS 服务器?我说可以修... 阅读全帖 |
|
n*******1 发帖数: 569 | 25 Microsoft, Google, Facebook, Hulu, Twitter 通吃。
人家国内硕士在读,从国内申请的,所向披靡啊,最后从了Facebook.
以下为原文:
最近签掉了 offer,找工作的事情算是告一段落。在这里写一点面试体验和心得,希望
对有兴趣去北美工作的朋友有所帮助。
先简单介绍下自己,国内硕士在读,明年毕业,没有牛 paper,也没参加过 ACM-ICPC
竞赛。在实验室做过内核、虚拟机和 Android 底层相关的研究工作,接过一些网页和
移动开发的外包,2011 年开始在字节社兼职负责后台开发。另外也经常上
Stackoverflow 和 GitHub。
这次决定直接申请美国的职位后,由于心里没底,不知道国外公司招聘的难度,所以一
开始投了很多公司。几个大公司都找人内推或者直接投了,小公司也投了不少,比如
Foursquare、Path、Pinterest 和 Square 等都试了。当时甚至在手机上找了一圈应用
,把可能涉及后端开发的应用都投了一遍。不过大多数公司都没给我安排面试,最后
Microsoft、Google、Facebook、Twitt... 阅读全帖 |
|
b******y 发帖数: 2729 | 26 【 以下文字转载自 JobHunting 讨论区 】
发信人: nirvana21 (nirvana21), 信区: JobHunting
标 题: 国内逆天大神,M, G, F, T, H...通吃!
发信站: BBS 未名空间站 (Tue Mar 12 17:21:55 2013, 美东)
Microsoft, Google, Facebook, Hulu, Twitter 通吃。
人家国内硕士在读,从国内申请的,所向披靡啊,最后从了Facebook.
以下为原文:
最近签掉了 offer,找工作的事情算是告一段落。在这里写一点面试体验和心得,希望
对有兴趣去北美工作的朋友有所帮助。
先简单介绍下自己,国内硕士在读,明年毕业,没有牛 paper,也没参加过 ACM-ICPC
竞赛。在实验室做过内核、虚拟机和 Android 底层相关的研究工作,接过一些网页和
移动开发的外包,2011 年开始在字节社兼职负责后台开发。另外也经常上
Stackoverflow 和 GitHub。
这次决定直接申请美国的职位后,由于心里没底,不知道国外公司招聘的难度,所以一
开始投了很多公司。几个大公... 阅读全帖 |
|
D****y 发帖数: 2207 | 27 北美求职记(三):Hulu & Twitter
DEC 27TH, 2012 • Permalink
北美求职记系列文章
北美求职记(一):Microsoft
北美求职记(二):Google & Facebook
北美求职记(三):Hulu & Twitter
Hulu
Hulu 是这几个公司里唯一一个我没有找人内推而拿到面试机会的,也是面试体验最好
的一个公司。Hulu 和 Twitter、Zynga、Foursquare 等公司一样,用了 jobvite 接受
和追踪职位申请。因为是申请的第一家公司,我在申请 Hulu 时的 cover letter 写得
很详细,针对职位需求上的每一条都写了我的相关工作经验,这也许是最后能拿到面试
机会的原因吧。其他公司的 cover letter 都写得很简单,短短两段就结束了。
Hulu 的第一轮电面和其他公司的有些不同。45 分钟里要做四个题。面试官提前十分钟
发了一封邮件给我,上面有两段代码。第一段代码是一个检查两个字符串是否是
anagram 的程序,写得很绕而且性能很差。面试官先问我这段代码的用途,然后问有什
么方法优化,... 阅读全帖 |
|
S*A 发帖数: 7142 | 28 There are two kinds of link:
symbol link & hard link.
symbol link is just point to a differnt file/directory name.
hard link directly point the same inode struct, also increase
the inode reference count.
symbol link, if you remove the link, it just remove the pointer.
It does not harm to your real file. Also if people remove the
real file, you symlink is invalid.
hard link, if you remove either of the file, only remove the
directory entry, and decrease the reference count on inode.
when the inod... 阅读全帖 |
|
S*A 发帖数: 7142 | 29 You guess wrong then.
Most file system don't store extend attribute in inode.
It will be stupid to do so because you can put arbitrate
size data into EA. That will totally blow up the inode
cache and you are dealing with variable size inode.
In ext3 and ext4, they are like file data blocks but point
by a different field in the inode (i_file_acl).
of extended attributes.” |
|
j****9 发帖数: 2295 | 30 来自主题: Programming版 - 问个面试题 测试用例没太看明白。
其实原题只问了倒数第5个,所以我写个general函数时没考虑n为负数的情况。
iNode() { value = 0; next = NULL; }
iNode(int v) : value(v) { next = NULL; }
iNode(int v, iNode* nx) : value(v), next(nx) {}
这三行必要么? |
|
s*****g 发帖数: 219 | 31 symlink和 windows 的 shortcut 一样.
hardlink 是独有的. 大概原理是这样: Unix里面
用inode来表示一个文件存储空间. 当你创建一个
文件的时候, 系统分配给你一个 inode number.
然后你生成一个 hardlink, 也会指向同一个 inode.
删除文件的时候, 系统会检查有多少个 hardlink
指向这个 inode. 如果只有一个, 把文件彻底删掉.
如果多于一个, 就只删掉一个 hardlink.
明白了这个道理, 看 perl 程序的时候, 发现删除
文件的函数叫做 unlink(), 也就不奇怪啦. |
|
s*****n 发帖数: 513 | 32 U盘已经格式化成以下两个分区:
Disk /dev/sda: 4004 MB, 4004511744 bytes
246 heads, 16 sectors/track, 1987 cylinders
Units = cylinders of 3936 * 512 = 2015232 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 509 1001704 83 Linux
/dev/sda2 510 1987 2908704 82 Linux swap
然后按照http://projects.doozan.com/debian/的步骤安装debian,
报错说:
# Starting debootstrap installation
E: unrecognized or invalid option --no-check-gpg
debootstrap failed.
See ... 阅读全帖 |
|
S*A 发帖数: 7142 | 33 atime is one field of the file inode. It is per file.
There are three times field of typical UNIX inode,
ctime: create time
mtime: modify time
atime: access time
You can use "stat" to access the atime.
e.g.
$ stat /tmp/abc
File: `/tmp/abc'
Size: 2444 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 5684 Links: 1
Access: (0600/-rw-------) Uid: ( 500/ uname) Gid: ( 500/ uname)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2011-09-24 10... 阅读全帖 |
|
s*****n 发帖数: 513 | 34 【 以下文字转载自 Hardware 讨论区 】
发信人: slinson (slinson), 信区: Hardware
标 题: POGOPLUG安装squeeze出错
发信站: BBS 未名空间站 (Tue Jul 28 08:39:56 2015, 美东)
U盘已经格式化成以下两个分区:
Disk /dev/sda: 4004 MB, 4004511744 bytes
246 heads, 16 sectors/track, 1987 cylinders
Units = cylinders of 3936 * 512 = 2015232 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 509 1001704 83 Linux
/dev/sda2 510 1987 2908704 82 Linux swap
然后按照http://projects.doozan.com/... 阅读全帖 |
|
f*******7 发帖数: 943 | 35 1. 150 是BT inoder next, 其实就是BST next吧, 那么今天这个就是BT inoder
trav prev
2. 给贴个链接或code吧,这题没见过啊,当然我没做过几道题,还得努力。。 |
|
r**i 发帖数: 2328 | 36 我觉得IO就是有个percentage要维持,要有一定的RFE率可以向上头交差,以显示自己
在认真干活。
如果我是IO,接到任务要审理10个cases,上头定期要统计Approval, RFE, NOID率,那
么我一定是先要保证RFE和INOD率,因为Approval率是最容易凑的。
所以应该是扫描10个cases,抓出最弱的几个拉出来或INOD,或者RFE。这个弱指
得是证据不足,材料没组织好,有明显硬伤的。所以case比较弱,pp前几天招RFE的可
能很大。
接下来就是那些没有硬伤的,如果IO这段时间的RFE率完成了,那么就直接Approval了。
如果IO的RFE率还没有凑齐,那么就留着不发,等待更弱,更容易发RFE的case进来。
简而言之,就是末位淘汰制度。 |
|
S*A 发帖数: 7142 | 37
文件系统缓存。你丫是不知道RAM放着没用的时候,OS 用来
缓存 Page cache 吧。Linux 可以 page cache 上G
的 buffer 绝对没有问题。 Windows 具体实现 buffer
上限是多少不知道。但是肯定不会放着 free memory 一点
不用。
文件系统的 Meta data 啊。你的文件系统有 Super block,
然后 Directory file。文件有 Inode 和 block map 指向
具体放文件的物理block。没有 block map 也要有 file extent。
都是一样的东西。需要记住这个文件逻辑block到文件系统物理lock
的 mapping。
缓冲了free block list,当前正在写的 inode 和 file block
map 或者 file block range 这种 meta data。你丫就不要出来
丢人现眼了。
我说的是文件系统的 meta data 缓存。你只知道 user space 的
buffer。谁误导谁自己出来说吧。 |
|
S*A 发帖数: 7142 | 38 哦,是吗。那欢迎指正啊,你来说说。
你在一个文件里面添写一个block的时候,文件系统至少有
三处改动,文件的 block,inode 的 block mapping,
inode mtime 和 super block 的 free block list/count。
要不你来解释一下这些 metadata 是什么时候 update 的?
是每写一个block都写一串metadata?你还真以为每次写新的 block
那个 super block 要马上更新啊。你如何保证系统写到一半
不会重启导致文件系统不一致?
你搞清楚 page cache 和文件系统的关系了吗?
你把道理说清楚了,我们就知道谁在瞎扯了嘛。
没有论据不好信服啊。 |
|
S*A 发帖数: 7142 | 39
Inode 是 Unix 过来的,Windows NTFS 有类似的结构,inode by
a different name,用来放文件日期和长度信息,指向文件block
在哪里。
Linux 啊,你自己跑个 top 在linux 看看吧。
你知道为什么可以不计吗?就是因为有 merge write。 |
|
g*********i 发帖数: 89 | 40 好像是这样的。
古老的unix都一律用buffer cache来缓存文件系统的所有数据。
modern unix alike的系统都只是用buffer来缓存文件系统元数据,就是指inode,
superblock,block bitmap,inode bitmap之类的数据。
而其他的实际文件数据都是通过page cache来实现的,而实际的管理大多数都是在虚拟
内存管理单元里面完成的。
这种机制好像是从solaris开始的,在sysV中引入的,而sun公司参与了大量的研究。 |
|
h**********c 发帖数: 4120 | 41 theoretically, you may play with the inodes in Linux.
Never tried.
You just have three lines, no bigger than one inode. |
|
g******a 发帖数: 730 | 42 【 以下文字转载自 Linux 讨论区 】
【 原文由 greentea 所发表 】
知道一个文件名,怎么找到它对应的inode number阿?
需要把文件名当成string,在inode table里搜索么?
这样感觉好费时间阿,
有没有大侠知道linux file system,
给偶解释一下.谢了! |
|
q**1 发帖数: 193 | 43 rm does not suppport regex
i think this had been answered somewhere else. the safest
way is use 'inode'
find inode of the file(assume it's ###):
ls -i
remove with find
find -inum ### -exec rm -f {} \; |
|
s**********s 发帖数: 10 | 44 Eight interviewers:
1. Introduce the largest project you've done;
Coding: merge sort(complexity analysis)
2. A lot of open questions: bloom filter(for web caching); parallel minimum
spanning tree;
Coding: Fibonacci creation(complexity)
3. A lot of questions regarding resume: compiler;socket programming; inode
and file;
Coding: linked list, addHead,addTail, insertHead,insertTail
4. HR: expected salary; other offers; H1b; graduation date; available
working date; personal view on company;w |
|
c*****o 发帖数: 178 | 45 先node,再children nodes。这个是preoder吧?不好意思,我这些专业的术语不太会
说。inorder应该是left-root-right。如果不是Binary tree,不知道还有没有inoder。 |
|
n*******s 发帖数: 482 | 46 题目:
1. Some C++ basic question
2. Using char** to change a pointer's address to print out some static data
()
3. LinkList simple question
4. Previous project, focus on applying OS data structure (i.e. Inode, Page
Table) and algorithm to solve "data crawling" and "indexing" problem.
NEED to be confident on C/C++ and some understanding about OS.
老印说的特快, 你别怕。 |
|
r*****b 发帖数: 8 | 47 面试实习的职位。一共3轮。
第一轮,问了一下自己觉得最有意思的项目。然后就是3个题:有一个很大的Log文件,
记录了每个用户点击网页的时间,问怎么找到最常见的3连击;有两个很大的文件,文
件里每行都是string,问怎么找到重复的;找一个无序数组的第k大元素。
第二轮,很多基本的问题,比如什么是hash,怎么处理冲突;然后什么是encapsulation
,什么是inode。大多是基本概念。然后问了个程序题,怎么验证一个数是不是素数。
最后考了一个OOD,那个电梯的题目。
第三轮,两个进程之间有多少种方式可以互相通讯(尽量说,不要管效率)。然后问了
问怎么处理race condition。接着就是验证一个二叉树是不是BST。然后问了一个设计
题,题目描述太复杂了。。很难复述。。然后俺就跟面试官聊啊聊,后来才发现他想要
一个多态的设计。
大概就是这样。 |
|
|
q****x 发帖数: 7404 | 49
//不加锁,这个时候inode->parent被改了怎么办?
//添加不成功怎么办? |
|