~ubuntu-branches/debian/wheezy/linux-2.6/wheezy

« back to all changes in this revision

Viewing changes to fs/ocfs2/dlm/userdlm.h

  • Committer: Bazaar Package Importer
  • Author(s): Ben Hutchings, Ben Hutchings, Aurelien Jarno, Martin Michlmayr
  • Date: 2011-04-06 13:53:30 UTC
  • mfrom: (43.1.5 sid)
  • Revision ID: james.westby@ubuntu.com-20110406135330-wjufxhd0tvn3zx4z
Tags: 2.6.38-3
[ Ben Hutchings ]
* [ppc64] Add to linux-tools package architectures (Closes: #620124)
* [amd64] Save cr4 to mmu_cr4_features at boot time (Closes: #620284)
* appletalk: Fix bugs introduced when removing use of BKL
* ALSA: Fix yet another race in disconnection
* cciss: Fix lost command issue
* ath9k: Fix kernel panic in AR2427
* ses: Avoid kernel panic when lun 0 is not mapped
* PCI/ACPI: Report ASPM support to BIOS if not disabled from command line

[ Aurelien Jarno ]
* rtlwifi: fix build when PCI is not enabled.

[ Martin Michlmayr ]
* rtlwifi: Eliminate udelay calls with too large values (Closes: #620204)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* -*- mode: c; c-basic-offset: 8; -*-
2
 
 * vim: noexpandtab sw=8 ts=8 sts=0:
3
 
 *
4
 
 * userdlm.h
5
 
 *
6
 
 * Userspace dlm defines
7
 
 *
8
 
 * Copyright (C) 2002, 2004 Oracle.  All rights reserved.
9
 
 *
10
 
 * This program is free software; you can redistribute it and/or
11
 
 * modify it under the terms of the GNU General Public
12
 
 * License as published by the Free Software Foundation; either
13
 
 * version 2 of the License, or (at your option) any later version.
14
 
 *
15
 
 * This program is distributed in the hope that it will be useful,
16
 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18
 
 * General Public License for more details.
19
 
 *
20
 
 * You should have received a copy of the GNU General Public
21
 
 * License along with this program; if not, write to the
22
 
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
23
 
 * Boston, MA 021110-1307, USA.
24
 
 */
25
 
 
26
 
 
27
 
#ifndef USERDLM_H
28
 
#define USERDLM_H
29
 
 
30
 
#include <linux/module.h>
31
 
#include <linux/fs.h>
32
 
#include <linux/types.h>
33
 
#include <linux/workqueue.h>
34
 
 
35
 
/* user_lock_res->l_flags flags. */
36
 
#define USER_LOCK_ATTACHED      (0x00000001) /* we have initialized
37
 
                                               * the lvb */
38
 
#define USER_LOCK_BUSY          (0x00000002) /* we are currently in
39
 
                                               * dlm_lock */
40
 
#define USER_LOCK_BLOCKED       (0x00000004) /* blocked waiting to
41
 
                                              * downconvert*/
42
 
#define USER_LOCK_IN_TEARDOWN   (0x00000008) /* we're currently
43
 
                                              * destroying this
44
 
                                              * lock. */
45
 
#define USER_LOCK_QUEUED        (0x00000010) /* lock is on the
46
 
                                              * workqueue */
47
 
#define USER_LOCK_IN_CANCEL     (0x00000020)
48
 
 
49
 
struct user_lock_res {
50
 
        spinlock_t               l_lock;
51
 
 
52
 
        int                      l_flags;
53
 
 
54
 
#define USER_DLM_LOCK_ID_MAX_LEN  32
55
 
        char                     l_name[USER_DLM_LOCK_ID_MAX_LEN];
56
 
        int                      l_namelen;
57
 
        int                      l_level;
58
 
        unsigned int             l_ro_holders;
59
 
        unsigned int             l_ex_holders;
60
 
        struct dlm_lockstatus    l_lksb;
61
 
 
62
 
        int                      l_requested;
63
 
        int                      l_blocking;
64
 
 
65
 
        wait_queue_head_t        l_event;
66
 
 
67
 
        struct work_struct       l_work;
68
 
};
69
 
 
70
 
extern struct workqueue_struct *user_dlm_worker;
71
 
 
72
 
void user_dlm_lock_res_init(struct user_lock_res *lockres,
73
 
                            struct dentry *dentry);
74
 
int user_dlm_destroy_lock(struct user_lock_res *lockres);
75
 
int user_dlm_cluster_lock(struct user_lock_res *lockres,
76
 
                          int level,
77
 
                          int lkm_flags);
78
 
void user_dlm_cluster_unlock(struct user_lock_res *lockres,
79
 
                             int level);
80
 
void user_dlm_write_lvb(struct inode *inode,
81
 
                        const char *val,
82
 
                        unsigned int len);
83
 
void user_dlm_read_lvb(struct inode *inode,
84
 
                       char *val,
85
 
                       unsigned int len);
86
 
struct dlm_ctxt *user_dlm_register_context(struct qstr *name,
87
 
                                           struct dlm_protocol_version *proto);
88
 
void user_dlm_unregister_context(struct dlm_ctxt *dlm);
89
 
 
90
 
struct dlmfs_inode_private {
91
 
        struct dlm_ctxt             *ip_dlm;
92
 
 
93
 
        struct user_lock_res ip_lockres; /* unused for directories. */
94
 
        struct inode         *ip_parent;
95
 
 
96
 
        struct inode         ip_vfs_inode;
97
 
};
98
 
 
99
 
static inline struct dlmfs_inode_private *
100
 
DLMFS_I(struct inode *inode)
101
 
{
102
 
        return container_of(inode,
103
 
                            struct dlmfs_inode_private,
104
 
                            ip_vfs_inode);
105
 
}
106
 
 
107
 
struct dlmfs_filp_private {
108
 
        int                  fp_lock_level;
109
 
};
110
 
 
111
 
#define DLMFS_MAGIC     0x76a9f425
112
 
 
113
 
#endif /* USERDLM_H */