Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 70681
b: refs/heads/master
c: 37c4252
h: refs/heads/master
i:
  70679: 57d95c1
v: v3
  • Loading branch information
Denis V. Lunev authored and Linus Torvalds committed Oct 17, 2007
1 parent b51bc9f commit ea69cc0
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 44a2db43eb715b54618bf01520cc5d46376cdbe2
refs/heads/master: 37c42524d6090644206ae6d310d7e830bd3ccb47
6 changes: 3 additions & 3 deletions trunk/fs/dcache.c
Original file line number Diff line number Diff line change
Expand Up @@ -553,18 +553,18 @@ void shrink_dcache_sb(struct super_block * sb)
* superblock to the most recent end of the unused list.
*/
spin_lock(&dcache_lock);
list_for_each_safe(tmp, next, &dentry_unused) {
list_for_each_prev_safe(tmp, next, &dentry_unused) {
dentry = list_entry(tmp, struct dentry, d_lru);
if (dentry->d_sb != sb)
continue;
list_move(tmp, &dentry_unused);
list_move_tail(tmp, &dentry_unused);
}

/*
* Pass two ... free the dentries for this superblock.
*/
repeat:
list_for_each_safe(tmp, next, &dentry_unused) {
list_for_each_prev_safe(tmp, next, &dentry_unused) {
dentry = list_entry(tmp, struct dentry, d_lru);
if (dentry->d_sb != sb)
continue;
Expand Down
12 changes: 12 additions & 0 deletions trunk/include/linux/list.h
Original file line number Diff line number Diff line change
Expand Up @@ -477,6 +477,18 @@ static inline void list_splice_init_rcu(struct list_head *list,
for (pos = (head)->next, n = pos->next; pos != (head); \
pos = n, n = pos->next)

/**
* list_for_each_prev_safe - iterate over a list backwards safe against removal
of list entry
* @pos: the &struct list_head to use as a loop cursor.
* @n: another &struct list_head to use as temporary storage
* @head: the head for your list.
*/
#define list_for_each_prev_safe(pos, n, head) \
for (pos = (head)->prev, n = pos->prev; \
prefetch(pos->prev), pos != (head); \
pos = n, n = pos->prev)

/**
* list_for_each_entry - iterate over list of given type
* @pos: the type * to use as a loop cursor.
Expand Down

0 comments on commit ea69cc0

Please sign in to comment.