diff options
| author | Andrew Morton <akpm@linux-foundation.org> | 2023-08-21 14:26:20 -0700 |
|---|---|---|
| committer | Andrew Morton <akpm@linux-foundation.org> | 2023-08-21 14:26:20 -0700 |
| commit | 5994eabf3bbbea550166ae90de0c854fc984c95d (patch) | |
| tree | 6b242a70d3254c408c68157a5f5b2fa7eb9f6a4b /fs/nilfs2/segment.c | |
| parent | e45a2e947dfa6da2d73e2cf91ed6399c12522d4f (diff) | |
| parent | 6867c7a3320669cbe44b905a3eb35db725c6d470 (diff) | |
| download | linux-5994eabf3bbbea550166ae90de0c854fc984c95d.tar.gz linux-5994eabf3bbbea550166ae90de0c854fc984c95d.tar.bz2 linux-5994eabf3bbbea550166ae90de0c854fc984c95d.zip | |
merge mm-hotfixes-stable into mm-stable to pick up depended-upon changes
Diffstat (limited to 'fs/nilfs2/segment.c')
| -rw-r--r-- | fs/nilfs2/segment.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/nilfs2/segment.c b/fs/nilfs2/segment.c index c2553024bd25..7ec16879756e 100644 --- a/fs/nilfs2/segment.c +++ b/fs/nilfs2/segment.c @@ -725,6 +725,11 @@ static size_t nilfs_lookup_dirty_data_buffers(struct inode *inode, struct folio *folio = fbatch.folios[i]; folio_lock(folio); + if (unlikely(folio->mapping != mapping)) { + /* Exclude folios removed from the address space */ + folio_unlock(folio); + continue; + } head = folio_buffers(folio); if (!head) { create_empty_buffers(&folio->page, i_blocksize(inode), 0); @@ -2845,6 +2850,7 @@ void nilfs_detach_log_writer(struct super_block *sb) nilfs_segctor_destroy(nilfs->ns_writer); nilfs->ns_writer = NULL; } + set_nilfs_purging(nilfs); /* Force to free the list of dirty files */ spin_lock(&nilfs->ns_inode_lock); @@ -2857,4 +2863,5 @@ void nilfs_detach_log_writer(struct super_block *sb) up_write(&nilfs->ns_segctor_sem); nilfs_dispose_list(nilfs, &garbage_list, 1); + clear_nilfs_purging(nilfs); } |
