wok diff aufs/stuff/aufs2-module-2.6.36.patch @ rev 12289
linux: small fix
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Sun Apr 15 20:44:53 2012 +0200 (2012-04-15) |
parents | |
children |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/aufs/stuff/aufs2-module-2.6.36.patch Sun Apr 15 20:44:53 2012 +0200 1.3 @@ -0,0 +1,47 @@ 1.4 +diff --git a/ubuntu/aufs/branch.c b/ubuntu/aufs/branch.c 1.5 +index cd4463c..ff6b158 100644 1.6 +--- a/fs/aufs/branch.c 1.7 ++++ b/fs/aufs/branch.c 1.8 +@@ -22,6 +22,8 @@ 1.9 + 1.10 + #include <linux/file.h> 1.11 + #include <linux/statfs.h> 1.12 ++#include <linux/lglock.h> 1.13 ++#include <linux/percpu.h> 1.14 + #include "aufs.h" 1.15 + 1.16 + /* 1.17 +@@ -851,7 +853,8 @@ static int au_br_mod_files_ro(struct super_block *sb, aufs_bindex_t bindex) 1.18 + goto out; 1.19 + 1.20 + /* no need file_list_lock() since sbinfo is locked? defered? */ 1.21 +- list_for_each_entry(file, &sb->s_files, f_u.fu_list) { 1.22 ++ lg_global_lock(files_lglock); 1.23 ++ do_file_list_for_each_entry(sb, file) { 1.24 + if (special_file(file->f_dentry->d_inode->i_mode)) 1.25 + continue; 1.26 + 1.27 +@@ -861,6 +864,7 @@ static int au_br_mod_files_ro(struct super_block *sb, aufs_bindex_t bindex) 1.28 + err = -EBUSY; 1.29 + FiMustNoWaiters(file); 1.30 + fi_read_unlock(file); 1.31 ++ lg_global_unlock(files_lglock); 1.32 + goto out_free; 1.33 + } 1.34 + 1.35 +@@ -889,10 +893,13 @@ static int au_br_mod_files_ro(struct super_block *sb, aufs_bindex_t bindex) 1.36 + if (p) { 1.37 + a = p; 1.38 + a[n++] = hf; 1.39 +- } else 1.40 ++ } else { 1.41 ++ lg_global_unlock(files_lglock); 1.42 + goto out_free; 1.43 ++ } 1.44 + } 1.45 +- } 1.46 ++ } while_file_list_for_each_entry; 1.47 ++ lg_global_unlock(files_lglock); 1.48 + 1.49 + err = 0; 1.50 + if (n)