summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArjan van de Ven <arjan@infradead.org>2006-07-03 00:25:28 -0700
committerLinus Torvalds <torvalds@g5.osdl.org>2006-07-03 15:27:09 -0700
commit897c6ff9568bcb102ffc6b465ebe1def0cba829d (patch)
tree05e0ea4e39fd5b064bdcab351a468b1f3cb963d5
parentcf51624999e56c88154b5f7d451a265db6aabff7 (diff)
[PATCH] lockdep: annotate sb ->s_umount
The s_umount rwsem needs to be classified as per-superblock since it's perfectly legit to keep multiple of those recursively in the VFS locking rules. Has no effect on non-lockdep kernels. Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--fs/super.c1
-rw-r--r--include/linux/fs.h1
2 files changed, 2 insertions, 0 deletions
diff --git a/fs/super.c b/fs/super.c
index 5a4fe8be462a..6d4e8174b6db 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -72,6 +72,7 @@ static struct super_block *alloc_super(struct file_system_type *type)
INIT_LIST_HEAD(&s->s_inodes);
init_rwsem(&s->s_umount);
mutex_init(&s->s_lock);
+ lockdep_set_class(&s->s_umount, &type->s_umount_key);
/*
* The locking rules for s_lock are up to the
* filesystem. For example ext3fs has different
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 0a3ea52d711e..e26de68059af 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -1296,6 +1296,7 @@ struct file_system_type {
struct file_system_type * next;
struct list_head fs_supers;
struct lock_class_key s_lock_key;
+ struct lock_class_key s_umount_key;
};
extern int get_sb_bdev(struct file_system_type *fs_type,