diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-01-12 11:32:03 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-01-12 11:32:03 +0100 |
commit | e3ee1e123183ca9847e74b7b8e2694c9e3b817a6 (patch) | |
tree | 652a84674ed05eaa46a813de2223af0bd0168a5a /fs/filesystems.c | |
parent | 5762ba1873b0bb9faa631aaa02f533c2b9837f82 (diff) | |
parent | c59765042f53a79a7a65585042ff463b69cb248c (diff) | |
download | kernel-crypto-e3ee1e123183ca9847e74b7b8e2694c9e3b817a6.tar.gz kernel-crypto-e3ee1e123183ca9847e74b7b8e2694c9e3b817a6.tar.xz kernel-crypto-e3ee1e123183ca9847e74b7b8e2694c9e3b817a6.zip |
Merge commit 'v2.6.29-rc1' into timers/hrtimers
Conflicts:
kernel/time/tick-common.c
Diffstat (limited to 'fs/filesystems.c')
-rw-r--r-- | fs/filesystems.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/fs/filesystems.c b/fs/filesystems.c index d0e20ced62d..d488dcd7f2b 100644 --- a/fs/filesystems.c +++ b/fs/filesystems.c @@ -253,24 +253,27 @@ static int __init proc_filesystems_init(void) module_init(proc_filesystems_init); #endif -struct file_system_type *get_fs_type(const char *name) +static struct file_system_type *__get_fs_type(const char *name, int len) { struct file_system_type *fs; - const char *dot = strchr(name, '.'); - unsigned len = dot ? dot - name : strlen(name); read_lock(&file_systems_lock); fs = *(find_filesystem(name, len)); if (fs && !try_module_get(fs->owner)) fs = NULL; read_unlock(&file_systems_lock); - if (!fs && (request_module("%.*s", len, name) == 0)) { - read_lock(&file_systems_lock); - fs = *(find_filesystem(name, len)); - if (fs && !try_module_get(fs->owner)) - fs = NULL; - read_unlock(&file_systems_lock); - } + return fs; +} + +struct file_system_type *get_fs_type(const char *name) +{ + struct file_system_type *fs; + const char *dot = strchr(name, '.'); + int len = dot ? dot - name : strlen(name); + + fs = __get_fs_type(name, len); + if (!fs && (request_module("%.*s", len, name) == 0)) + fs = __get_fs_type(name, len); if (dot && fs && !(fs->fs_flags & FS_HAS_SUBTYPE)) { put_filesystem(fs); |