]> git.proxmox.com Git - mirror_spl-debian.git/blame - modules/spl/spl-rwlock.c
- Fix write-only behavior in vn-open()
[mirror_spl-debian.git] / modules / spl / spl-rwlock.c
CommitLineData
f4b37741 1#include <sys/rwlock.h>
f1ca4da6 2
3int
ed61a7d0 4__rw_read_held(krwlock_t *rwlp)
f1ca4da6 5{
6 BUG_ON(rwlp->rw_magic != RW_MAGIC);
7
ed61a7d0 8 if (__rw_lock_held(rwlp) && rwlp->rw_owner == NULL) {
f1ca4da6 9 return 1;
10 }
f1b59d26 11
f1ca4da6 12 return 0;
13}
ed61a7d0 14EXPORT_SYMBOL(__rw_read_held);
f1ca4da6 15
16int
ed61a7d0 17__rw_write_held(krwlock_t *rwlp)
f1ca4da6 18{
19 BUG_ON(rwlp->rw_magic != RW_MAGIC);
20
ed61a7d0 21 if (rwlp->rw_owner == current) {
f1ca4da6 22 return 1;
23 }
24
25 return 0;
26}
ed61a7d0 27EXPORT_SYMBOL(__rw_write_held);
f1ca4da6 28
29int
ed61a7d0 30__rw_lock_held(krwlock_t *rwlp)
f1ca4da6 31{
32 BUG_ON(rwlp->rw_magic != RW_MAGIC);
33
ed61a7d0 34#ifdef CONFIG_RWSEM_GENERIC_SPINLOCK
35 if (rwlp->rw_sem.activity != 0) {
36#else
37 if (rwlp->rw_sem.count != 0) {
38#endif
f1ca4da6 39 return 1;
40 }
41
42 return 0;
43}
ed61a7d0 44EXPORT_SYMBOL(__rw_lock_held);