diff options
Diffstat (limited to 'fs/dcache.c')
-rw-r--r-- | fs/dcache.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/dcache.c b/fs/dcache.c index 5cdd14e95858..42d290be0ac1 100644 --- a/fs/dcache.c +++ b/fs/dcache.c | |||
@@ -553,18 +553,18 @@ void shrink_dcache_sb(struct super_block * sb) | |||
553 | * superblock to the most recent end of the unused list. | 553 | * superblock to the most recent end of the unused list. |
554 | */ | 554 | */ |
555 | spin_lock(&dcache_lock); | 555 | spin_lock(&dcache_lock); |
556 | list_for_each_safe(tmp, next, &dentry_unused) { | 556 | list_for_each_prev_safe(tmp, next, &dentry_unused) { |
557 | dentry = list_entry(tmp, struct dentry, d_lru); | 557 | dentry = list_entry(tmp, struct dentry, d_lru); |
558 | if (dentry->d_sb != sb) | 558 | if (dentry->d_sb != sb) |
559 | continue; | 559 | continue; |
560 | list_move(tmp, &dentry_unused); | 560 | list_move_tail(tmp, &dentry_unused); |
561 | } | 561 | } |
562 | 562 | ||
563 | /* | 563 | /* |
564 | * Pass two ... free the dentries for this superblock. | 564 | * Pass two ... free the dentries for this superblock. |
565 | */ | 565 | */ |
566 | repeat: | 566 | repeat: |
567 | list_for_each_safe(tmp, next, &dentry_unused) { | 567 | list_for_each_prev_safe(tmp, next, &dentry_unused) { |
568 | dentry = list_entry(tmp, struct dentry, d_lru); | 568 | dentry = list_entry(tmp, struct dentry, d_lru); |
569 | if (dentry->d_sb != sb) | 569 | if (dentry->d_sb != sb) |
570 | continue; | 570 | continue; |