Loading fs/drop_caches.c +1 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ #include <linux/writeback.h> #include <linux/sysctl.h> #include <linux/gfp.h> #include "internal.h" /* A global variable is a bit ugly, but it keeps the code simple */ int sysctl_drop_caches; Loading fs/internal.h +2 −0 Original line number Diff line number Diff line Loading @@ -87,6 +87,8 @@ extern struct file *get_empty_filp(void); * super.c */ extern int do_remount_sb(struct super_block *, int, void *, int); extern void __put_super(struct super_block *sb); extern void put_super(struct super_block *sb); /* * open.c Loading fs/quota/quota.c +1 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #include <linux/quotaops.h> #include <linux/types.h> #include <linux/writeback.h> #include "../internal.h" static int check_quotactl_permission(struct super_block *sb, int type, int cmd, qid_t id) Loading fs/super.c +2 −28 Original line number Diff line number Diff line Loading @@ -127,40 +127,14 @@ static inline void destroy_super(struct super_block *s) /* Superblock refcounting */ /* * Drop a superblock's refcount. Returns non-zero if the superblock was * destroyed. The caller must hold sb_lock. * Drop a superblock's refcount. The caller must hold sb_lock. */ int __put_super(struct super_block *sb) void __put_super(struct super_block *sb) { int ret = 0; if (!--sb->s_count) { list_del_init(&sb->s_list); destroy_super(sb); ret = 1; } return ret; } /* * Drop a superblock's refcount. * Returns non-zero if the superblock is about to be destroyed and * at least is already removed from super_blocks list, so if we are * making a loop through super blocks then we need to restart. * The caller must hold sb_lock. */ int __put_super_and_need_restart(struct super_block *sb) { /* check for race with generic_shutdown_super() */ if (list_empty(&sb->s_instances)) { /* super block is removed, need to restart... */ __put_super(sb); return 1; } /* can't be the last, since s_list is still in use */ sb->s_count--; BUG_ON(sb->s_count == 0); return 0; } /** Loading include/linux/fs.h +0 −3 Original line number Diff line number Diff line Loading @@ -1778,9 +1778,6 @@ extern int get_sb_pseudo(struct file_system_type *, char *, const struct super_operations *ops, unsigned long, struct vfsmount *mnt); extern void simple_set_mnt(struct vfsmount *mnt, struct super_block *sb); int __put_super_and_need_restart(struct super_block *sb); int __put_super(struct super_block *sb); void put_super(struct super_block *sb); /* Alas, no aliases. Too much hassle with bringing module.h everywhere */ #define fops_get(fops) \ Loading Loading
fs/drop_caches.c +1 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ #include <linux/writeback.h> #include <linux/sysctl.h> #include <linux/gfp.h> #include "internal.h" /* A global variable is a bit ugly, but it keeps the code simple */ int sysctl_drop_caches; Loading
fs/internal.h +2 −0 Original line number Diff line number Diff line Loading @@ -87,6 +87,8 @@ extern struct file *get_empty_filp(void); * super.c */ extern int do_remount_sb(struct super_block *, int, void *, int); extern void __put_super(struct super_block *sb); extern void put_super(struct super_block *sb); /* * open.c Loading
fs/quota/quota.c +1 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #include <linux/quotaops.h> #include <linux/types.h> #include <linux/writeback.h> #include "../internal.h" static int check_quotactl_permission(struct super_block *sb, int type, int cmd, qid_t id) Loading
fs/super.c +2 −28 Original line number Diff line number Diff line Loading @@ -127,40 +127,14 @@ static inline void destroy_super(struct super_block *s) /* Superblock refcounting */ /* * Drop a superblock's refcount. Returns non-zero if the superblock was * destroyed. The caller must hold sb_lock. * Drop a superblock's refcount. The caller must hold sb_lock. */ int __put_super(struct super_block *sb) void __put_super(struct super_block *sb) { int ret = 0; if (!--sb->s_count) { list_del_init(&sb->s_list); destroy_super(sb); ret = 1; } return ret; } /* * Drop a superblock's refcount. * Returns non-zero if the superblock is about to be destroyed and * at least is already removed from super_blocks list, so if we are * making a loop through super blocks then we need to restart. * The caller must hold sb_lock. */ int __put_super_and_need_restart(struct super_block *sb) { /* check for race with generic_shutdown_super() */ if (list_empty(&sb->s_instances)) { /* super block is removed, need to restart... */ __put_super(sb); return 1; } /* can't be the last, since s_list is still in use */ sb->s_count--; BUG_ON(sb->s_count == 0); return 0; } /** Loading
include/linux/fs.h +0 −3 Original line number Diff line number Diff line Loading @@ -1778,9 +1778,6 @@ extern int get_sb_pseudo(struct file_system_type *, char *, const struct super_operations *ops, unsigned long, struct vfsmount *mnt); extern void simple_set_mnt(struct vfsmount *mnt, struct super_block *sb); int __put_super_and_need_restart(struct super_block *sb); int __put_super(struct super_block *sb); void put_super(struct super_block *sb); /* Alas, no aliases. Too much hassle with bringing module.h everywhere */ #define fops_get(fops) \ Loading