diff options
-rw-r--r-- | fs/gfs2/gfs2.h | 5 | ||||
-rw-r--r-- | fs/gfs2/glock.c | 12 | ||||
-rw-r--r-- | fs/gfs2/glock.h | 2 | ||||
-rw-r--r-- | fs/gfs2/locking/dlm/lock_dlm.h | 3 | ||||
-rw-r--r-- | fs/gfs2/locking/dlm/mount.c | 3 | ||||
-rw-r--r-- | fs/gfs2/locking/dlm/sysfs.c | 13 | ||||
-rw-r--r-- | fs/gfs2/locking/dlm/thread.c | 19 | ||||
-rw-r--r-- | fs/gfs2/ops_fstype.c | 2 | ||||
-rw-r--r-- | fs/gfs2/ops_super.c | 2 | ||||
-rw-r--r-- | fs/gfs2/sys.c | 14 | ||||
-rw-r--r-- | include/linux/lm_interface.h | 4 |
11 files changed, 6 insertions, 73 deletions
diff --git a/fs/gfs2/gfs2.h b/fs/gfs2/gfs2.h index 3bb11c0f8b56..ef606e3a5cf4 100644 --- a/fs/gfs2/gfs2.h +++ b/fs/gfs2/gfs2.h | |||
@@ -16,11 +16,6 @@ enum { | |||
16 | }; | 16 | }; |
17 | 17 | ||
18 | enum { | 18 | enum { |
19 | NO_WAIT = 0, | ||
20 | WAIT = 1, | ||
21 | }; | ||
22 | |||
23 | enum { | ||
24 | NO_FORCE = 0, | 19 | NO_FORCE = 0, |
25 | FORCE = 1, | 20 | FORCE = 1, |
26 | }; | 21 | }; |
diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c index be7ed503f012..8d5450f3c3ef 100644 --- a/fs/gfs2/glock.c +++ b/fs/gfs2/glock.c | |||
@@ -1316,11 +1316,6 @@ void gfs2_glock_cb(void *cb_data, unsigned int type, void *data) | |||
1316 | wake_up_process(sdp->sd_recoverd_process); | 1316 | wake_up_process(sdp->sd_recoverd_process); |
1317 | return; | 1317 | return; |
1318 | 1318 | ||
1319 | case LM_CB_DROPLOCKS: | ||
1320 | gfs2_gl_hash_clear(sdp, NO_WAIT); | ||
1321 | gfs2_quota_scan(sdp); | ||
1322 | return; | ||
1323 | |||
1324 | default: | 1319 | default: |
1325 | gfs2_assert_warn(sdp, 0); | 1320 | gfs2_assert_warn(sdp, 0); |
1326 | return; | 1321 | return; |
@@ -1508,11 +1503,10 @@ static void clear_glock(struct gfs2_glock *gl) | |||
1508 | * @sdp: the filesystem | 1503 | * @sdp: the filesystem |
1509 | * @wait: wait until it's all gone | 1504 | * @wait: wait until it's all gone |
1510 | * | 1505 | * |
1511 | * Called when unmounting the filesystem, or when inter-node lock manager | 1506 | * Called when unmounting the filesystem. |
1512 | * requests DROPLOCKS because it is running out of capacity. | ||
1513 | */ | 1507 | */ |
1514 | 1508 | ||
1515 | void gfs2_gl_hash_clear(struct gfs2_sbd *sdp, int wait) | 1509 | void gfs2_gl_hash_clear(struct gfs2_sbd *sdp) |
1516 | { | 1510 | { |
1517 | unsigned long t; | 1511 | unsigned long t; |
1518 | unsigned int x; | 1512 | unsigned int x; |
@@ -1527,7 +1521,7 @@ void gfs2_gl_hash_clear(struct gfs2_sbd *sdp, int wait) | |||
1527 | cont = 1; | 1521 | cont = 1; |
1528 | } | 1522 | } |
1529 | 1523 | ||
1530 | if (!wait || !cont) | 1524 | if (!cont) |
1531 | break; | 1525 | break; |
1532 | 1526 | ||
1533 | if (time_after_eq(jiffies, | 1527 | if (time_after_eq(jiffies, |
diff --git a/fs/gfs2/glock.h b/fs/gfs2/glock.h index 7389f8ef0a31..971d92af70fc 100644 --- a/fs/gfs2/glock.h +++ b/fs/gfs2/glock.h | |||
@@ -132,7 +132,7 @@ void gfs2_lvb_unhold(struct gfs2_glock *gl); | |||
132 | void gfs2_glock_cb(void *cb_data, unsigned int type, void *data); | 132 | void gfs2_glock_cb(void *cb_data, unsigned int type, void *data); |
133 | void gfs2_glock_schedule_for_reclaim(struct gfs2_glock *gl); | 133 | void gfs2_glock_schedule_for_reclaim(struct gfs2_glock *gl); |
134 | void gfs2_reclaim_glock(struct gfs2_sbd *sdp); | 134 | void gfs2_reclaim_glock(struct gfs2_sbd *sdp); |
135 | void gfs2_gl_hash_clear(struct gfs2_sbd *sdp, int wait); | 135 | void gfs2_gl_hash_clear(struct gfs2_sbd *sdp); |
136 | 136 | ||
137 | int __init gfs2_glock_init(void); | 137 | int __init gfs2_glock_init(void); |
138 | void gfs2_glock_exit(void); | 138 | void gfs2_glock_exit(void); |
diff --git a/fs/gfs2/locking/dlm/lock_dlm.h b/fs/gfs2/locking/dlm/lock_dlm.h index ad944c64eab1..845a27fd303e 100644 --- a/fs/gfs2/locking/dlm/lock_dlm.h +++ b/fs/gfs2/locking/dlm/lock_dlm.h | |||
@@ -79,9 +79,6 @@ struct gdlm_ls { | |||
79 | wait_queue_head_t wait_control; | 79 | wait_queue_head_t wait_control; |
80 | struct task_struct *thread; | 80 | struct task_struct *thread; |
81 | wait_queue_head_t thread_wait; | 81 | wait_queue_head_t thread_wait; |
82 | unsigned long drop_time; | ||
83 | int drop_locks_count; | ||
84 | int drop_locks_period; | ||
85 | }; | 82 | }; |
86 | 83 | ||
87 | enum { | 84 | enum { |
diff --git a/fs/gfs2/locking/dlm/mount.c b/fs/gfs2/locking/dlm/mount.c index 0628520a445f..fa31c54c2e67 100644 --- a/fs/gfs2/locking/dlm/mount.c +++ b/fs/gfs2/locking/dlm/mount.c | |||
@@ -22,8 +22,6 @@ static struct gdlm_ls *init_gdlm(lm_callback_t cb, struct gfs2_sbd *sdp, | |||
22 | if (!ls) | 22 | if (!ls) |
23 | return NULL; | 23 | return NULL; |
24 | 24 | ||
25 | ls->drop_locks_count = GDLM_DROP_COUNT; | ||
26 | ls->drop_locks_period = GDLM_DROP_PERIOD; | ||
27 | ls->fscb = cb; | 25 | ls->fscb = cb; |
28 | ls->sdp = sdp; | 26 | ls->sdp = sdp; |
29 | ls->fsflags = flags; | 27 | ls->fsflags = flags; |
@@ -33,7 +31,6 @@ static struct gdlm_ls *init_gdlm(lm_callback_t cb, struct gfs2_sbd *sdp, | |||
33 | INIT_LIST_HEAD(&ls->all_locks); | 31 | INIT_LIST_HEAD(&ls->all_locks); |
34 | init_waitqueue_head(&ls->thread_wait); | 32 | init_waitqueue_head(&ls->thread_wait); |
35 | init_waitqueue_head(&ls->wait_control); | 33 | init_waitqueue_head(&ls->wait_control); |
36 | ls->drop_time = jiffies; | ||
37 | ls->jid = -1; | 34 | ls->jid = -1; |
38 | 35 | ||
39 | strncpy(buf, table_name, 256); | 36 | strncpy(buf, table_name, 256); |
diff --git a/fs/gfs2/locking/dlm/sysfs.c b/fs/gfs2/locking/dlm/sysfs.c index a4ff271df9ee..4ec571c3d8a9 100644 --- a/fs/gfs2/locking/dlm/sysfs.c +++ b/fs/gfs2/locking/dlm/sysfs.c | |||
@@ -114,17 +114,6 @@ static ssize_t recover_status_show(struct gdlm_ls *ls, char *buf) | |||
114 | return sprintf(buf, "%d\n", ls->recover_jid_status); | 114 | return sprintf(buf, "%d\n", ls->recover_jid_status); |
115 | } | 115 | } |
116 | 116 | ||
117 | static ssize_t drop_count_show(struct gdlm_ls *ls, char *buf) | ||
118 | { | ||
119 | return sprintf(buf, "%d\n", ls->drop_locks_count); | ||
120 | } | ||
121 | |||
122 | static ssize_t drop_count_store(struct gdlm_ls *ls, const char *buf, size_t len) | ||
123 | { | ||
124 | ls->drop_locks_count = simple_strtol(buf, NULL, 0); | ||
125 | return len; | ||
126 | } | ||
127 | |||
128 | struct gdlm_attr { | 117 | struct gdlm_attr { |
129 | struct attribute attr; | 118 | struct attribute attr; |
130 | ssize_t (*show)(struct gdlm_ls *, char *); | 119 | ssize_t (*show)(struct gdlm_ls *, char *); |
@@ -144,7 +133,6 @@ GDLM_ATTR(first_done, 0444, first_done_show, NULL); | |||
144 | GDLM_ATTR(recover, 0644, recover_show, recover_store); | 133 | GDLM_ATTR(recover, 0644, recover_show, recover_store); |
145 | GDLM_ATTR(recover_done, 0444, recover_done_show, NULL); | 134 | GDLM_ATTR(recover_done, 0444, recover_done_show, NULL); |
146 | GDLM_ATTR(recover_status, 0444, recover_status_show, NULL); | 135 | GDLM_ATTR(recover_status, 0444, recover_status_show, NULL); |
147 | GDLM_ATTR(drop_count, 0644, drop_count_show, drop_count_store); | ||
148 | 136 | ||
149 | static struct attribute *gdlm_attrs[] = { | 137 | static struct attribute *gdlm_attrs[] = { |
150 | &gdlm_attr_proto_name.attr, | 138 | &gdlm_attr_proto_name.attr, |
@@ -157,7 +145,6 @@ static struct attribute *gdlm_attrs[] = { | |||
157 | &gdlm_attr_recover.attr, | 145 | &gdlm_attr_recover.attr, |
158 | &gdlm_attr_recover_done.attr, | 146 | &gdlm_attr_recover_done.attr, |
159 | &gdlm_attr_recover_status.attr, | 147 | &gdlm_attr_recover_status.attr, |
160 | &gdlm_attr_drop_count.attr, | ||
161 | NULL, | 148 | NULL, |
162 | }; | 149 | }; |
163 | 150 | ||
diff --git a/fs/gfs2/locking/dlm/thread.c b/fs/gfs2/locking/dlm/thread.c index f30350abd62f..38823efd698c 100644 --- a/fs/gfs2/locking/dlm/thread.c +++ b/fs/gfs2/locking/dlm/thread.c | |||
@@ -20,19 +20,6 @@ static inline int no_work(struct gdlm_ls *ls) | |||
20 | return ret; | 20 | return ret; |
21 | } | 21 | } |
22 | 22 | ||
23 | static inline int check_drop(struct gdlm_ls *ls) | ||
24 | { | ||
25 | if (!ls->drop_locks_count) | ||
26 | return 0; | ||
27 | |||
28 | if (time_after(jiffies, ls->drop_time + ls->drop_locks_period * HZ)) { | ||
29 | ls->drop_time = jiffies; | ||
30 | if (ls->all_locks_count >= ls->drop_locks_count) | ||
31 | return 1; | ||
32 | } | ||
33 | return 0; | ||
34 | } | ||
35 | |||
36 | static int gdlm_thread(void *data) | 23 | static int gdlm_thread(void *data) |
37 | { | 24 | { |
38 | struct gdlm_ls *ls = (struct gdlm_ls *) data; | 25 | struct gdlm_ls *ls = (struct gdlm_ls *) data; |
@@ -52,12 +39,6 @@ static int gdlm_thread(void *data) | |||
52 | gdlm_do_lock(lp); | 39 | gdlm_do_lock(lp); |
53 | spin_lock(&ls->async_lock); | 40 | spin_lock(&ls->async_lock); |
54 | } | 41 | } |
55 | /* Does this ever happen these days? I hope not anyway */ | ||
56 | if (check_drop(ls)) { | ||
57 | spin_unlock(&ls->async_lock); | ||
58 | ls->fscb(ls->sdp, LM_CB_DROPLOCKS, NULL); | ||
59 | spin_lock(&ls->async_lock); | ||
60 | } | ||
61 | spin_unlock(&ls->async_lock); | 42 | spin_unlock(&ls->async_lock); |
62 | } | 43 | } |
63 | 44 | ||
diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c index 9bd97c5543bd..6ba69dd1a729 100644 --- a/fs/gfs2/ops_fstype.c +++ b/fs/gfs2/ops_fstype.c | |||
@@ -874,7 +874,7 @@ fail_sb: | |||
874 | fail_locking: | 874 | fail_locking: |
875 | init_locking(sdp, &mount_gh, UNDO); | 875 | init_locking(sdp, &mount_gh, UNDO); |
876 | fail_lm: | 876 | fail_lm: |
877 | gfs2_gl_hash_clear(sdp, WAIT); | 877 | gfs2_gl_hash_clear(sdp); |
878 | gfs2_lm_unmount(sdp); | 878 | gfs2_lm_unmount(sdp); |
879 | while (invalidate_inodes(sb)) | 879 | while (invalidate_inodes(sb)) |
880 | yield(); | 880 | yield(); |
diff --git a/fs/gfs2/ops_super.c b/fs/gfs2/ops_super.c index 66907922109f..f66ea0f7a356 100644 --- a/fs/gfs2/ops_super.c +++ b/fs/gfs2/ops_super.c | |||
@@ -126,7 +126,7 @@ static void gfs2_put_super(struct super_block *sb) | |||
126 | gfs2_clear_rgrpd(sdp); | 126 | gfs2_clear_rgrpd(sdp); |
127 | gfs2_jindex_free(sdp); | 127 | gfs2_jindex_free(sdp); |
128 | /* Take apart glock structures and buffer lists */ | 128 | /* Take apart glock structures and buffer lists */ |
129 | gfs2_gl_hash_clear(sdp, WAIT); | 129 | gfs2_gl_hash_clear(sdp); |
130 | /* Unmount the locking protocol */ | 130 | /* Unmount the locking protocol */ |
131 | gfs2_lm_unmount(sdp); | 131 | gfs2_lm_unmount(sdp); |
132 | 132 | ||
diff --git a/fs/gfs2/sys.c b/fs/gfs2/sys.c index 9ab9fc85ecd0..6f7e2e5858e0 100644 --- a/fs/gfs2/sys.c +++ b/fs/gfs2/sys.c | |||
@@ -110,18 +110,6 @@ static ssize_t statfs_sync_store(struct gfs2_sbd *sdp, const char *buf, | |||
110 | return len; | 110 | return len; |
111 | } | 111 | } |
112 | 112 | ||
113 | static ssize_t shrink_store(struct gfs2_sbd *sdp, const char *buf, size_t len) | ||
114 | { | ||
115 | if (!capable(CAP_SYS_ADMIN)) | ||
116 | return -EACCES; | ||
117 | |||
118 | if (simple_strtol(buf, NULL, 0) != 1) | ||
119 | return -EINVAL; | ||
120 | |||
121 | gfs2_gl_hash_clear(sdp, NO_WAIT); | ||
122 | return len; | ||
123 | } | ||
124 | |||
125 | static ssize_t quota_sync_store(struct gfs2_sbd *sdp, const char *buf, | 113 | static ssize_t quota_sync_store(struct gfs2_sbd *sdp, const char *buf, |
126 | size_t len) | 114 | size_t len) |
127 | { | 115 | { |
@@ -175,7 +163,6 @@ static struct gfs2_attr gfs2_attr_##name = __ATTR(name, mode, show, store) | |||
175 | GFS2_ATTR(id, 0444, id_show, NULL); | 163 | GFS2_ATTR(id, 0444, id_show, NULL); |
176 | GFS2_ATTR(fsname, 0444, fsname_show, NULL); | 164 | GFS2_ATTR(fsname, 0444, fsname_show, NULL); |
177 | GFS2_ATTR(freeze, 0644, freeze_show, freeze_store); | 165 | GFS2_ATTR(freeze, 0644, freeze_show, freeze_store); |
178 | GFS2_ATTR(shrink, 0200, NULL, shrink_store); | ||
179 | GFS2_ATTR(withdraw, 0644, withdraw_show, withdraw_store); | 166 | GFS2_ATTR(withdraw, 0644, withdraw_show, withdraw_store); |
180 | GFS2_ATTR(statfs_sync, 0200, NULL, statfs_sync_store); | 167 | GFS2_ATTR(statfs_sync, 0200, NULL, statfs_sync_store); |
181 | GFS2_ATTR(quota_sync, 0200, NULL, quota_sync_store); | 168 | GFS2_ATTR(quota_sync, 0200, NULL, quota_sync_store); |
@@ -186,7 +173,6 @@ static struct attribute *gfs2_attrs[] = { | |||
186 | &gfs2_attr_id.attr, | 173 | &gfs2_attr_id.attr, |
187 | &gfs2_attr_fsname.attr, | 174 | &gfs2_attr_fsname.attr, |
188 | &gfs2_attr_freeze.attr, | 175 | &gfs2_attr_freeze.attr, |
189 | &gfs2_attr_shrink.attr, | ||
190 | &gfs2_attr_withdraw.attr, | 176 | &gfs2_attr_withdraw.attr, |
191 | &gfs2_attr_statfs_sync.attr, | 177 | &gfs2_attr_statfs_sync.attr, |
192 | &gfs2_attr_quota_sync.attr, | 178 | &gfs2_attr_quota_sync.attr, |
diff --git a/include/linux/lm_interface.h b/include/linux/lm_interface.h index f274997bc283..d0a7112b9719 100644 --- a/include/linux/lm_interface.h +++ b/include/linux/lm_interface.h | |||
@@ -138,9 +138,6 @@ typedef void (*lm_callback_t) (void *ptr, unsigned int type, void *data); | |||
138 | * LM_CB_NEED_RECOVERY | 138 | * LM_CB_NEED_RECOVERY |
139 | * The given journal needs to be recovered. | 139 | * The given journal needs to be recovered. |
140 | * | 140 | * |
141 | * LM_CB_DROPLOCKS | ||
142 | * Reduce the number of cached locks. | ||
143 | * | ||
144 | * LM_CB_ASYNC | 141 | * LM_CB_ASYNC |
145 | * The given lock has been granted. | 142 | * The given lock has been granted. |
146 | */ | 143 | */ |
@@ -149,7 +146,6 @@ typedef void (*lm_callback_t) (void *ptr, unsigned int type, void *data); | |||
149 | #define LM_CB_NEED_D 258 | 146 | #define LM_CB_NEED_D 258 |
150 | #define LM_CB_NEED_S 259 | 147 | #define LM_CB_NEED_S 259 |
151 | #define LM_CB_NEED_RECOVERY 260 | 148 | #define LM_CB_NEED_RECOVERY 260 |
152 | #define LM_CB_DROPLOCKS 261 | ||
153 | #define LM_CB_ASYNC 262 | 149 | #define LM_CB_ASYNC 262 |
154 | 150 | ||
155 | /* | 151 | /* |