diff options
author | Koen Kooi <koen@dominion.thruhere.net> | 2012-02-10 15:32:32 +0100 |
---|---|---|
committer | Denys Dmytriyenko <denys@ti.com> | 2012-02-27 09:04:13 -0500 |
commit | c4eefd753012467261cf221babd2e8639b81d3ca (patch) | |
tree | 0f6e09a6b51f410455330f046a8e03787d5a126e /recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0077-pnfsblock-acquire-im_lock-in-_preload_range.patch | |
parent | 14f31c3c5a19dde049355ced3edd121c31842460 (diff) | |
download | meta-ti-c4eefd753012467261cf221babd2e8639b81d3ca.tar.gz |
linux-ti33x-psp 3.2: update to 3.2.5
Runtime tested on a beaglebone A3
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Diffstat (limited to 'recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0077-pnfsblock-acquire-im_lock-in-_preload_range.patch')
-rw-r--r-- | recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0077-pnfsblock-acquire-im_lock-in-_preload_range.patch | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0077-pnfsblock-acquire-im_lock-in-_preload_range.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0077-pnfsblock-acquire-im_lock-in-_preload_range.patch new file mode 100644 index 00000000..1bcc2726 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0077-pnfsblock-acquire-im_lock-in-_preload_range.patch | |||
@@ -0,0 +1,64 @@ | |||
1 | From 6feb42647758cf08e5707c9f6a2f0d78d6fb3cc8 Mon Sep 17 00:00:00 2001 | ||
2 | From: Peng Tao <bergwolf@gmail.com> | ||
3 | Date: Thu, 12 Jan 2012 23:18:41 +0800 | ||
4 | Subject: [PATCH 077/130] pnfsblock: acquire im_lock in _preload_range | ||
5 | |||
6 | commit 39e567ae36fe03c2b446e1b83ee3d39bea08f90b upstream. | ||
7 | |||
8 | When calling _add_entry, we should take the im_lock to protect | ||
9 | agains other modifiers. | ||
10 | |||
11 | Signed-off-by: Peng Tao <peng_tao@emc.com> | ||
12 | Signed-off-by: Benny Halevy <bhalevy@tonian.com> | ||
13 | Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com> | ||
14 | Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> | ||
15 | --- | ||
16 | fs/nfs/blocklayout/extents.c | 11 ++++++----- | ||
17 | 1 files changed, 6 insertions(+), 5 deletions(-) | ||
18 | |||
19 | diff --git a/fs/nfs/blocklayout/extents.c b/fs/nfs/blocklayout/extents.c | ||
20 | index 19fa7b0..c69682a 100644 | ||
21 | --- a/fs/nfs/blocklayout/extents.c | ||
22 | +++ b/fs/nfs/blocklayout/extents.c | ||
23 | @@ -139,11 +139,13 @@ static int _set_range(struct my_tree *tree, int32_t tag, u64 s, u64 length) | ||
24 | } | ||
25 | |||
26 | /* Ensure that future operations on given range of tree will not malloc */ | ||
27 | -static int _preload_range(struct my_tree *tree, u64 offset, u64 length) | ||
28 | +static int _preload_range(struct pnfs_inval_markings *marks, | ||
29 | + u64 offset, u64 length) | ||
30 | { | ||
31 | u64 start, end, s; | ||
32 | int count, i, used = 0, status = -ENOMEM; | ||
33 | struct pnfs_inval_tracking **storage; | ||
34 | + struct my_tree *tree = &marks->im_tree; | ||
35 | |||
36 | dprintk("%s(%llu, %llu) enter\n", __func__, offset, length); | ||
37 | start = normalize(offset, tree->mtt_step_size); | ||
38 | @@ -161,12 +163,11 @@ static int _preload_range(struct my_tree *tree, u64 offset, u64 length) | ||
39 | goto out_cleanup; | ||
40 | } | ||
41 | |||
42 | - /* Now need lock - HOW??? */ | ||
43 | - | ||
44 | + spin_lock(&marks->im_lock); | ||
45 | for (s = start; s < end; s += tree->mtt_step_size) | ||
46 | used += _add_entry(tree, s, INTERNAL_EXISTS, storage[used]); | ||
47 | + spin_unlock(&marks->im_lock); | ||
48 | |||
49 | - /* Unlock - HOW??? */ | ||
50 | status = 0; | ||
51 | |||
52 | out_cleanup: | ||
53 | @@ -286,7 +287,7 @@ int bl_mark_sectors_init(struct pnfs_inval_markings *marks, | ||
54 | |||
55 | start = normalize(offset, marks->im_block_size); | ||
56 | end = normalize_up(offset + length, marks->im_block_size); | ||
57 | - if (_preload_range(&marks->im_tree, start, end - start)) | ||
58 | + if (_preload_range(marks, start, end - start)) | ||
59 | goto outerr; | ||
60 | |||
61 | spin_lock(&marks->im_lock); | ||
62 | -- | ||
63 | 1.7.7.4 | ||
64 | |||