Re: lowlatency-2.2.14-B1 + 2.2.14aa7 fixes crash, but...

From: Andrea Arcangeli (andrea@suse.de)
Date: Mon Feb 28 2000 - 11:03:26 EST


On Mon, 28 Feb 2000, William Montgomery wrote:

>repeat:
> entry = inode_in_use.next;
> while (entry != &inode_in_use) {
> struct list_head *tmp = entry;
> /*
> * Tough one to time-limit ...
> */
> entry = entry->next;
> if (!CAN_UNUSE(INODE(tmp))) {
> if (current->need_resched) {
> INODE(tmp)->i_count++;
> spin_unlock(&inode_lock);
> schedule();
> iput(tmp);
> if (repeat_count) {
> repeat_count--;

                                        spin_lock() missing here.

> goto repeat;
> }
> }
> continue;
> }
> list_del(tmp);
> list_del(&INODE(tmp)->i_hash);
> INIT_LIST_HEAD(&INODE(tmp)->i_hash);
> list_add(tmp, freeable);
> list_entry(tmp, struct inode, i_list)->i_state = I_FREEING;
> found++;
> if (!--count)
> break;
> }
>
>It appears Andrea has put in a lowlatency enhancement already in this
>code by only allowing 128 inodes to be freed at a time. Perhaps we

the 2.2.x problem is that to free 128 inodes you risk to browse the whole
in_use list ;)

Andrea

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue Feb 29 2000 - 21:00:20 EST