git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6
[pandora-kernel.git]
/
fs
/
super.c
diff --git
a/fs/super.c
b/fs/super.c
index
fc8ebed
..
88811f6
100644
(file)
--- a/
fs/super.c
+++ b/
fs/super.c
@@
-15,7
+15,7
@@
* Added kerneld support: Jacques Gelinas and Bjorn Ekwall
* Added change_root: Werner Almesberger & Hans Lermen, Feb '96
* Added options to /proc/mounts:
* Added kerneld support: Jacques Gelinas and Bjorn Ekwall
* Added change_root: Werner Almesberger & Hans Lermen, Feb '96
* Added options to /proc/mounts:
- * Torbj
ö
rn Lindh (torbjorn.lindh@gopta.se), April 14, 1996.
+ * Torbj
ö
rn Lindh (torbjorn.lindh@gopta.se), April 14, 1996.
* Added devfs support: Richard Gooch <rgooch@atnf.csiro.au>, 13-JAN-1998
* Heavily rewritten for 'one fs - one tree' dcache architecture. AV, Mar 2000
*/
* Added devfs support: Richard Gooch <rgooch@atnf.csiro.au>, 13-JAN-1998
* Heavily rewritten for 'one fs - one tree' dcache architecture. AV, Mar 2000
*/
@@
-40,10
+40,6
@@
#include <asm/uaccess.h>
#include <asm/uaccess.h>
-void get_filesystem(struct file_system_type *fs);
-void put_filesystem(struct file_system_type *fs);
-struct file_system_type *get_fs_type(const char *name);
-
LIST_HEAD(super_blocks);
DEFINE_SPINLOCK(sb_lock);
LIST_HEAD(super_blocks);
DEFINE_SPINLOCK(sb_lock);
@@
-67,6
+63,7
@@
static struct super_block *alloc_super(struct file_system_type *type)
}
INIT_LIST_HEAD(&s->s_dirty);
INIT_LIST_HEAD(&s->s_io);
}
INIT_LIST_HEAD(&s->s_dirty);
INIT_LIST_HEAD(&s->s_io);
+ INIT_LIST_HEAD(&s->s_more_io);
INIT_LIST_HEAD(&s->s_files);
INIT_LIST_HEAD(&s->s_instances);
INIT_HLIST_HEAD(&s->s_anon);
INIT_LIST_HEAD(&s->s_files);
INIT_LIST_HEAD(&s->s_instances);
INIT_HLIST_HEAD(&s->s_anon);
@@
-108,6
+105,7
@@
static inline void destroy_super(struct super_block *s)
{
security_sb_free(s);
kfree(s->s_subtype);
{
security_sb_free(s);
kfree(s->s_subtype);
+ kfree(s->s_options);
kfree(s);
}
kfree(s);
}
@@
-335,21
+333,21
@@
struct super_block *sget(struct file_system_type *type,
void *data)
{
struct super_block *s = NULL;
void *data)
{
struct super_block *s = NULL;
- struct
list_head *p
;
+ struct
super_block *old
;
int err;
retry:
spin_lock(&sb_lock);
int err;
retry:
spin_lock(&sb_lock);
- if (test)
list_for_each(p, &type->fs_supers)
{
- struct super_block *old;
- old = list_entry(p, struct super_block, s_instances);
- if (!test(old, data))
- continue;
- if (!grab_super(old))
- goto retry;
- if (s)
-
destroy_super(s)
;
- return old;
+ if (test) {
+ list_for_each_entry(old, &type->fs_supers, s_instances) {
+ if (!test(old, data))
+ continue;
+ if (!grab_super(old))
+ goto retry;
+ if (s)
+ destroy_super(s);
+
return old
;
+ }
}
if (!s) {
spin_unlock(&sb_lock);
}
if (!s) {
spin_unlock(&sb_lock);
@@
-420,7
+418,7
@@
restart:
}
/*
}
/*
- * Call the ->sync_fs super_op against all filesytems which are r/w and
+ * Call the ->sync_fs super_op against all filesy
s
tems which are r/w and
* which implement it.
*
* This operation is careful to avoid the livelock which could easily happen
* which implement it.
*
* This operation is careful to avoid the livelock which could easily happen
@@
-428,7
+426,7
@@
restart:
* is used only here. We set it against all filesystems and then clear it as
* we sync them. So redirtied filesystems are skipped.
*
* is used only here. We set it against all filesystems and then clear it as
* we sync them. So redirtied filesystems are skipped.
*
- * But if process A is currently running sync_filesytems and then process B
+ * But if process A is currently running sync_filesy
s
tems and then process B
* calls sync_filesystems as well, process B will set all the s_need_sync_fs
* flags again, which will cause process A to resync everything. Fix that with
* a local mutex.
* calls sync_filesystems as well, process B will set all the s_need_sync_fs
* flags again, which will cause process A to resync everything. Fix that with
* a local mutex.
@@
-606,6
+604,7
@@
int do_remount_sb(struct super_block *sb, int flags, void *data, int force)
mark_files_ro(sb);
else if (!fs_may_remount_ro(sb))
return -EBUSY;
mark_files_ro(sb);
else if (!fs_may_remount_ro(sb))
return -EBUSY;
+ DQUOT_OFF(sb);
}
if (sb->s_op->remount_fs) {
}
if (sb->s_op->remount_fs) {
@@
-947,9
+946,9
@@
do_kern_mount(const char *fstype, int flags, const char *name, void *data)
return mnt;
}
return mnt;
}
-struct vfsmount *kern_mount
(struct file_system_type *type
)
+struct vfsmount *kern_mount
_data(struct file_system_type *type, void *data
)
{
{
- return vfs_kern_mount(type,
0, type->name, NULL
);
+ return vfs_kern_mount(type,
MS_KERNMOUNT, type->name, data
);
}
}
-EXPORT_SYMBOL
(kern_mount
);
+EXPORT_SYMBOL
_GPL(kern_mount_data
);