diff options
Diffstat (limited to 'fs/jbd')
-rw-r--r-- | fs/jbd/transaction.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/fs/jbd/transaction.c b/fs/jbd/transaction.c index 772b6531a2a2..8df5bac0b7a5 100644 --- a/fs/jbd/transaction.c +++ b/fs/jbd/transaction.c | |||
@@ -233,6 +233,8 @@ out: | |||
233 | return ret; | 233 | return ret; |
234 | } | 234 | } |
235 | 235 | ||
236 | static struct lock_class_key jbd_handle_key; | ||
237 | |||
236 | /* Allocate a new handle. This should probably be in a slab... */ | 238 | /* Allocate a new handle. This should probably be in a slab... */ |
237 | static handle_t *new_handle(int nblocks) | 239 | static handle_t *new_handle(int nblocks) |
238 | { | 240 | { |
@@ -243,6 +245,8 @@ static handle_t *new_handle(int nblocks) | |||
243 | handle->h_buffer_credits = nblocks; | 245 | handle->h_buffer_credits = nblocks; |
244 | handle->h_ref = 1; | 246 | handle->h_ref = 1; |
245 | 247 | ||
248 | lockdep_init_map(&handle->h_lockdep_map, "jbd_handle", &jbd_handle_key, 0); | ||
249 | |||
246 | return handle; | 250 | return handle; |
247 | } | 251 | } |
248 | 252 | ||
@@ -286,6 +290,9 @@ handle_t *journal_start(journal_t *journal, int nblocks) | |||
286 | current->journal_info = NULL; | 290 | current->journal_info = NULL; |
287 | handle = ERR_PTR(err); | 291 | handle = ERR_PTR(err); |
288 | } | 292 | } |
293 | |||
294 | lock_acquire(&handle->h_lockdep_map, 0, 0, 0, 2, _THIS_IP_); | ||
295 | |||
289 | return handle; | 296 | return handle; |
290 | } | 297 | } |
291 | 298 | ||
@@ -1411,6 +1418,8 @@ int journal_stop(handle_t *handle) | |||
1411 | spin_unlock(&journal->j_state_lock); | 1418 | spin_unlock(&journal->j_state_lock); |
1412 | } | 1419 | } |
1413 | 1420 | ||
1421 | lock_release(&handle->h_lockdep_map, 1, _THIS_IP_); | ||
1422 | |||
1414 | jbd_free_handle(handle); | 1423 | jbd_free_handle(handle); |
1415 | return err; | 1424 | return err; |
1416 | } | 1425 | } |