Displaying 20 results from an estimated 87 matches for "read_unlock".
2010 Aug 04
6
[PATCH -v2 0/3] jbd2 scalability patches
This version fixes three bugs in the 2nd patch of this series that
caused kernel BUG when the system was under race. We weren't accounting
with t_oustanding_credits correctly, and there were race conditions
caused by the fact the I had overlooked the fact that
__jbd2_log_wait_for_space() and jbd2_get_transaction() requires
j_state_lock to be write locked.
Theodore Ts'o (3):
jbd2: Use
2019 May 13
3
[PATCH 10/10] virtio/s390: make airq summary indicators DMA
...>
> Signed-off-by: Halil Pasic <pasic at linux.ibm.com>
> ---
> drivers/s390/virtio/virtio_ccw.c | 24 +++++++++++++++++-------
> 1 file changed, 17 insertions(+), 7 deletions(-)
(...)
> @@ -237,7 +243,8 @@ static void virtio_airq_handler(struct airq_struct *airq)
> read_unlock(&info->lock);
> }
>
> -static struct airq_info *new_airq_info(void)
> +/* call with airq_areas_lock held */
Hm, where is airq_areas_lock defined? If it was introduced in one of
the previous patches, I have missed it.
> +static struct airq_info *new_airq_info(int index)
&g...
2019 May 13
3
[PATCH 10/10] virtio/s390: make airq summary indicators DMA
...>
> Signed-off-by: Halil Pasic <pasic at linux.ibm.com>
> ---
> drivers/s390/virtio/virtio_ccw.c | 24 +++++++++++++++++-------
> 1 file changed, 17 insertions(+), 7 deletions(-)
(...)
> @@ -237,7 +243,8 @@ static void virtio_airq_handler(struct airq_struct *airq)
> read_unlock(&info->lock);
> }
>
> -static struct airq_info *new_airq_info(void)
> +/* call with airq_areas_lock held */
Hm, where is airq_areas_lock defined? If it was introduced in one of
the previous patches, I have missed it.
> +static struct airq_info *new_airq_info(int index)
&g...
2008 Oct 07
6
A race condition introduced by changeset 15175: Re-init hypercall stubs page after HVM save/restore
...for the guest, it might panic after it''s restored.
The panic point is inside ap_suspend():
....
while (info->do_spin) {
cpu_relax();
read_lock(&suspend_lock);
HYPERVISOR_yield(); ----> guest might panic on the invocation of this function.
read_unlock(&suspend_lock);
}
...
The root cause is: ap might be invoking the hypercall while bsp is asking the hypervisor to re-initialize the hypercall page when the guest has been just restored!
What''s the purpose of re-initializing the hypercall page here? To improve the compatibility in...
2019 May 08
2
[PATCH 10/10] virtio/s390: make airq summary indicators DMA
...t; }
> - info->summary_indicator = 0;
> + *(get_summary_indicator(info)) = 0;
> smp_wmb();
> /* Walk through indicators field, summary indicator not active. */
> for (ai = 0;;) {
> @@ -237,7 +243,8 @@ static void virtio_airq_handler(struct airq_struct *airq)
> read_unlock(&info->lock);
> }
>
> -static struct airq_info *new_airq_info(void)
> +/* call with airq_areas_lock held */
> +static struct airq_info *new_airq_info(int index)
> {
> struct airq_info *info;
> int rc;
> @@ -252,7 +259,8 @@ static struct airq_info *new_...
2019 May 08
2
[PATCH 10/10] virtio/s390: make airq summary indicators DMA
...t; }
> - info->summary_indicator = 0;
> + *(get_summary_indicator(info)) = 0;
> smp_wmb();
> /* Walk through indicators field, summary indicator not active. */
> for (ai = 0;;) {
> @@ -237,7 +243,8 @@ static void virtio_airq_handler(struct airq_struct *airq)
> read_unlock(&info->lock);
> }
>
> -static struct airq_info *new_airq_info(void)
> +/* call with airq_areas_lock held */
> +static struct airq_info *new_airq_info(int index)
> {
> struct airq_info *info;
> int rc;
> @@ -252,7 +259,8 @@ static struct airq_info *new_...
2019 May 15
0
[PATCH 10/10] virtio/s390: make airq summary indicators DMA
...---
> >> drivers/s390/virtio/virtio_ccw.c | 24 +++++++++++++++++-------
> >> 1 file changed, 17 insertions(+), 7 deletions(-)
> >
> > (...)
> >
> >> @@ -237,7 +243,8 @@ static void virtio_airq_handler(struct airq_struct *airq)
> >> read_unlock(&info->lock);
> >> }
> >>
> >> -static struct airq_info *new_airq_info(void)
> >> +/* call with drivers/s390/virtio/virtio_ccw.cheld */
> >
> > Hm, where is airq_areas_lock defined? If it was introduced in one of
> > the previous...
2019 May 15
0
[PATCH 10/10] virtio/s390: make airq summary indicators DMA
...<pasic at linux.ibm.com>
>> ---
>> drivers/s390/virtio/virtio_ccw.c | 24 +++++++++++++++++-------
>> 1 file changed, 17 insertions(+), 7 deletions(-)
>
> (...)
>
>> @@ -237,7 +243,8 @@ static void virtio_airq_handler(struct airq_struct *airq)
>> read_unlock(&info->lock);
>> }
>>
>> -static struct airq_info *new_airq_info(void)
>> +/* call with drivers/s390/virtio/virtio_ccw.cheld */
>
> Hm, where is airq_areas_lock defined? If it was introduced in one of
> the previous patches, I have missed it.
There is...
2007 Apr 18
1
[Bridge] [PATCH] bridge use read_lock when scanning device list
...44 2004
@@ -252,12 +252,12 @@
struct net_device *dev;
int i = 0;
- rtnl_shlock();
+ read_lock(&dev_base_lock);
for (dev = dev_base; dev && i < num; dev = dev->next) {
if (dev->priv_flags & IFF_EBRIDGE)
indices[i++] = dev->ifindex;
}
- rtnl_shunlock();
+ read_unlock(&dev_base_lock);
return i;
}
2004 Nov 10
2
Reset Statistics?
2010 Jan 04
0
[RFC 03/12 RESEND PATCH] Btrfs: Reorder __btrfs_map_block to make code more efficient.
...pes_allocated = 1;
-again:
- if (multi_ret) {
- multi = kzalloc(btrfs_multi_bio_size(stripes_allocated),
- GFP_NOFS);
- if (!multi)
- return -ENOMEM;
-
- atomic_set(&multi->error, 0);
- }
-
read_lock(&em_tree->lock);
em = lookup_extent_mapping(em_tree, logical, *length);
read_unlock(&em_tree->lock);
@@ -2663,27 +2649,6 @@ again:
map = (struct map_lookup *)em->bdev;
offset = logical - em->start;
- if (mirror_num > map->num_stripes)
- mirror_num = 0;
-
- /* if our multi bio struct is too small, back off and try again */
- if (rw & (1 << BIO_RW...
2012 Oct 01
0
[PATCH] Btrfs: remove unnecessary IS_ERR in bio_readpage_error()
...| 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index 979fa0d..576ed9f 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -2071,7 +2071,7 @@ static int bio_readpage_error(struct bio *failed_bio, struct page *page,
}
read_unlock(&em_tree->lock);
- if (!em || IS_ERR(em)) {
+ if (!em) {
kfree(failrec);
return -EIO;
}
--
1.7.11.4
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.k...
2019 Apr 26
0
[PATCH 10/10] virtio/s390: make airq summary indicators DMA
...void *)airq_iv_get_ptr(info->aiv, ai));
}
- info->summary_indicator = 0;
+ *(get_summary_indicator(info)) = 0;
smp_wmb();
/* Walk through indicators field, summary indicator not active. */
for (ai = 0;;) {
@@ -237,7 +243,8 @@ static void virtio_airq_handler(struct airq_struct *airq)
read_unlock(&info->lock);
}
-static struct airq_info *new_airq_info(void)
+/* call with airq_areas_lock held */
+static struct airq_info *new_airq_info(int index)
{
struct airq_info *info;
int rc;
@@ -252,7 +259,8 @@ static struct airq_info *new_airq_info(void)
return NULL;
}
info->air...
2019 May 23
0
[PATCH v2 8/8] virtio/s390: make airq summary indicators DMA
...get_ptr(info->aiv, ai));
}
- info->summary_indicator = 0;
+ *(get_summary_indicator(info)) = 0;
smp_wmb();
/* Walk through indicators field, summary indicator not active. */
for (ai = 0;;) {
@@ -237,7 +243,7 @@ static void virtio_airq_handler(struct airq_struct *airq, bool floating)
read_unlock(&info->lock);
}
-static struct airq_info *new_airq_info(void)
+static struct airq_info *new_airq_info(int index)
{
struct airq_info *info;
int rc;
@@ -253,7 +259,8 @@ static struct airq_info *new_airq_info(void)
return NULL;
}
info->airq.handler = virtio_airq_handler;
- inf...
2019 May 29
0
[PATCH v3 8/8] virtio/s390: make airq summary indicators DMA
...get_ptr(info->aiv, ai));
}
- info->summary_indicator = 0;
+ *(get_summary_indicator(info)) = 0;
smp_wmb();
/* Walk through indicators field, summary indicator not active. */
for (ai = 0;;) {
@@ -237,7 +243,7 @@ static void virtio_airq_handler(struct airq_struct *airq, bool floating)
read_unlock(&info->lock);
}
-static struct airq_info *new_airq_info(void)
+static struct airq_info *new_airq_info(int index)
{
struct airq_info *info;
int rc;
@@ -253,7 +259,8 @@ static struct airq_info *new_airq_info(void)
return NULL;
}
info->airq.handler = virtio_airq_handler;
- inf...
2019 Jun 06
0
[PATCH v4 8/8] virtio/s390: make airq summary indicators DMA
...get_ptr(info->aiv, ai));
}
- info->summary_indicator = 0;
+ *(get_summary_indicator(info)) = 0;
smp_wmb();
/* Walk through indicators field, summary indicator not active. */
for (ai = 0;;) {
@@ -221,7 +227,7 @@ static void virtio_airq_handler(struct airq_struct *airq, bool floating)
read_unlock(&info->lock);
}
-static struct airq_info *new_airq_info(void)
+static struct airq_info *new_airq_info(int index)
{
struct airq_info *info;
int rc;
@@ -237,7 +243,8 @@ static struct airq_info *new_airq_info(void)
return NULL;
}
info->airq.handler = virtio_airq_handler;
- inf...
2019 Jun 12
0
[PATCH v5 8/8] virtio/s390: make airq summary indicators DMA
...get_ptr(info->aiv, ai));
}
- info->summary_indicator = 0;
+ *(get_summary_indicator(info)) = 0;
smp_wmb();
/* Walk through indicators field, summary indicator not active. */
for (ai = 0;;) {
@@ -221,7 +227,7 @@ static void virtio_airq_handler(struct airq_struct *airq, bool floating)
read_unlock(&info->lock);
}
-static struct airq_info *new_airq_info(void)
+static struct airq_info *new_airq_info(int index)
{
struct airq_info *info;
int rc;
@@ -237,7 +243,8 @@ static struct airq_info *new_airq_info(void)
return NULL;
}
info->airq.handler = virtio_airq_handler;
- inf...
2019 Aug 09
0
[RFC PATCH v6 27/92] kvm: introspection: use page track
...;access_tree, gfn);
+}
+
+static int kvmi_get_gfn_access(struct kvmi *ikvm, const gfn_t gfn,
+ u8 *access)
+{
+ struct kvmi_mem_access *m;
+
+ *access = full_access;
+
+ read_lock(&ikvm->access_tree_lock);
+ m = __kvmi_get_gfn_access(ikvm, gfn);
+ if (m)
+ *access = m->access;
+ read_unlock(&ikvm->access_tree_lock);
+
+ return m ? 0 : -1;
+}
+
+static bool kvmi_restricted_access(struct kvmi *ikvm, gpa_t gpa, u8 access)
+{
+ u8 allowed_access;
+ int err;
+
+ err = kvmi_get_gfn_access(ikvm, gpa_to_gfn(gpa), &allowed_access);
+
+ if (err)
+ return false;
+
+ /*
+ * We want t...
2019 May 15
0
[PATCH 10/10] virtio/s390: make airq summary indicators DMA
...t;> +??? *(get_summary_indicator(info)) = 0;
>> ????? smp_wmb();
>> ????? /* Walk through indicators field, summary indicator not active. */
>> ????? for (ai = 0;;) {
>> @@ -237,7 +243,8 @@ static void virtio_airq_handler(struct airq_struct
>> *airq)
>> ????? read_unlock(&info->lock);
>> ? }
>> -static struct airq_info *new_airq_info(void)
>> +/* call with airq_areas_lock held */
>> +static struct airq_info *new_airq_info(int index)
>> ? {
>> ????? struct airq_info *info;
>> ????? int rc;
>> @@ -252,7 +259,8 @@...
2020 Jul 06
0
[PATCH v3 3/6] powerpc: move spinlock implementation to simple_spinlock
...} while (unlikely(rw->lock != 0));
+ HMT_medium();
+ }
+}
+
+static inline int arch_read_trylock(arch_rwlock_t *rw)
+{
+ return __arch_read_trylock(rw) > 0;
+}
+
+static inline int arch_write_trylock(arch_rwlock_t *rw)
+{
+ return __arch_write_trylock(rw) == 0;
+}
+
+static inline void arch_read_unlock(arch_rwlock_t *rw)
+{
+ long tmp;
+
+ __asm__ __volatile__(
+ "# read_unlock\n\t"
+ PPC_RELEASE_BARRIER
+"1: lwarx %0,0,%1\n\
+ addic %0,%0,-1\n"
+" stwcx. %0,0,%1\n\
+ bne- 1b"
+ : "=&r"(tmp)
+ : "r"(&rw->lock)
+ : "cr0", &...