Hi Andrew, Today's linux-next merge of the akpm tree got a conflict in fs/ext4/extents_status.c between commit decae3aab047 ("ext4: make the extent_status code more robust against ENOMEM failures") from the ext4 tree and commit "fs-convert-fs-shrinkers-to-new-scan-count-api-fix" from the akpm tree. I fixed it up (see below) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwell sfr@xxxxxxxxxxxxxxxx diff --cc fs/ext4/extents_status.c index 95d5bde,8a45b86..0000000 --- a/fs/ext4/extents_status.c +++ b/fs/ext4/extents_status.c @@@ -148,8 -148,6 +148,8 @@@ static int __es_remove_extent(struct in ext4_lblk_t end); static int __es_try_to_reclaim_extents(struct ext4_inode_info *ei, int nr_to_scan); - static int __ext4_es_shrink(struct ext4_sb_info *sbi, int nr_to_scan, - struct ext4_inode_info *locked_ei); ++static unsigned long __ext4_es_shrink(struct ext4_sb_info *sbi, int nr_to_scan, ++ struct ext4_inode_info *locked_ei); int __init ext4_init_es(void) { @@@ -914,13 -903,17 +915,14 @@@ static unsigned long ext4_es_count(stru return nr; } - static int __ext4_es_shrink(struct ext4_sb_info *sbi, int nr_to_scan, -static unsigned long ext4_es_scan(struct shrinker *shrink, - struct shrink_control *sc) ++static unsigned long __ext4_es_shrink(struct ext4_sb_info *sbi, int nr_to_scan, + struct ext4_inode_info *locked_ei) { - struct ext4_sb_info *sbi = container_of(shrink, - struct ext4_sb_info, s_es_shrinker); struct ext4_inode_info *ei; struct list_head *cur, *tmp; LIST_HEAD(skiped); - int ret, nr_shrunk = 0; - int nr_to_scan = sc->nr_to_scan; - int ret = 0; ++ int ret; + unsigned long nr_shrunk = 0; spin_lock(&sbi->s_es_lru_lock); @@@ -969,21 -962,6 +971,22 @@@ list_splice_tail(&skiped, &sbi->s_es_lru); spin_unlock(&sbi->s_es_lru_lock); + if (locked_ei && nr_shrunk == 0) + nr_shrunk = __es_try_to_reclaim_extents(ei, nr_to_scan); + + return nr_shrunk; +} + - static long ext4_es_shrink(struct shrinker *shrink, struct shrink_control *sc) ++static unsigned long ext4_es_shrink(struct shrinker *shrink, ++ struct shrink_control *sc) +{ + struct ext4_sb_info *sbi = container_of(shrink, + struct ext4_sb_info, s_es_shrinker); + int nr_to_scan = sc->nr_to_scan; - int nr_shrunk; ++ unsigned long nr_shrunk; + + nr_shrunk = __ext4_es_shrink(sbi, nr_to_scan, NULL); + trace_ext4_es_shrink_exit(sbi->s_sb, nr_shrunk, ret); return nr_shrunk; }
Attachment:
pgpx3yS8zySqu.pgp
Description: PGP signature