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)