hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/md/persistent-data/dm-block-manager.c
....@@ -35,7 +35,10 @@
3535 #define MAX_HOLDERS 4
3636 #define MAX_STACK 10
3737
38
-typedef unsigned long stack_entries[MAX_STACK];
38
+struct stack_store {
39
+ unsigned int nr_entries;
40
+ unsigned long entries[MAX_STACK];
41
+};
3942
4043 struct block_lock {
4144 spinlock_t lock;
....@@ -44,8 +47,7 @@
4447 struct task_struct *holders[MAX_HOLDERS];
4548
4649 #ifdef CONFIG_DM_DEBUG_BLOCK_STACK_TRACING
47
- struct stack_trace traces[MAX_HOLDERS];
48
- stack_entries entries[MAX_HOLDERS];
50
+ struct stack_store traces[MAX_HOLDERS];
4951 #endif
5052 };
5153
....@@ -73,7 +75,7 @@
7375 {
7476 unsigned h = __find_holder(lock, NULL);
7577 #ifdef CONFIG_DM_DEBUG_BLOCK_STACK_TRACING
76
- struct stack_trace *t;
78
+ struct stack_store *t;
7779 #endif
7880
7981 get_task_struct(task);
....@@ -81,11 +83,7 @@
8183
8284 #ifdef CONFIG_DM_DEBUG_BLOCK_STACK_TRACING
8385 t = lock->traces + h;
84
- t->nr_entries = 0;
85
- t->max_entries = MAX_STACK;
86
- t->entries = lock->entries[h];
87
- t->skip = 2;
88
- save_stack_trace(t);
86
+ t->nr_entries = stack_trace_save(t->entries, MAX_STACK, 2);
8987 #endif
9088 }
9189
....@@ -106,7 +104,8 @@
106104 DMERR("recursive lock detected in metadata");
107105 #ifdef CONFIG_DM_DEBUG_BLOCK_STACK_TRACING
108106 DMERR("previously held here:");
109
- print_stack_trace(lock->traces + i, 4);
107
+ stack_trace_print(lock->traces[i].entries,
108
+ lock->traces[i].nr_entries, 4);
110109
111110 DMERR("subsequent acquisition attempted here:");
112111 dump_stack();
....@@ -462,7 +461,7 @@
462461 int r;
463462
464463 p = dm_bufio_read(bm->bufio, b, (struct dm_buffer **) result);
465
- if (unlikely(IS_ERR(p)))
464
+ if (IS_ERR(p))
466465 return PTR_ERR(p);
467466
468467 aux = dm_bufio_get_aux_data(to_buffer(*result));
....@@ -498,7 +497,7 @@
498497 return -EPERM;
499498
500499 p = dm_bufio_read(bm->bufio, b, (struct dm_buffer **) result);
501
- if (unlikely(IS_ERR(p)))
500
+ if (IS_ERR(p))
502501 return PTR_ERR(p);
503502
504503 aux = dm_bufio_get_aux_data(to_buffer(*result));
....@@ -531,7 +530,7 @@
531530 int r;
532531
533532 p = dm_bufio_get(bm->bufio, b, (struct dm_buffer **) result);
534
- if (unlikely(IS_ERR(p)))
533
+ if (IS_ERR(p))
535534 return PTR_ERR(p);
536535 if (unlikely(!p))
537536 return -EWOULDBLOCK;
....@@ -567,7 +566,7 @@
567566 return -EPERM;
568567
569568 p = dm_bufio_new(bm->bufio, b, (struct dm_buffer **) result);
570
- if (unlikely(IS_ERR(p)))
569
+ if (IS_ERR(p))
571570 return PTR_ERR(p);
572571
573572 memset(p, 0, dm_bm_block_size(bm));