'ns_cno' of structure 'the_nilfs' must be protected from segment writer, in 
other words, 
the caller of nilfs_get_check_point should hold read lock for 
nilfs->ns_segctor_sem. 
This patch adds the lock/unlock operations in nilfs_attach_checkpoint() when 
calling 
nilfs_cpfile_get_checkpoint().

Signed-off-by: Zhang Qiang <[email protected]>

---
 fs/nilfs2/super.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/fs/nilfs2/super.c b/fs/nilfs2/super.c
index 05174c5..55f3d6b 100644
--- a/fs/nilfs2/super.c
+++ b/fs/nilfs2/super.c
@@ -371,8 +371,10 @@ int nilfs_attach_checkpoint(struct nilfs_sb_info *sbi, 
__u64 cno)
        if (unlikely(err))
                goto failed;
 
+       down_read(&nilfs->ns_segctor_sem);
        err = nilfs_cpfile_get_checkpoint(nilfs->ns_cpfile, cno, 0, &raw_cp,
                                          &bh_cp);
+       up_read(&nilfs->ns_segctor_sem);
        if (unlikely(err)) {
                if (err == -ENOENT || err == -EINVAL) {
                        printk(KERN_ERR
-- 
1.6.0.6
_______________________________________________
users mailing list
[email protected]
https://www.nilfs.org/mailman/listinfo/users

Reply via email to