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

« back to all changes in this revision

Viewing changes to fs/xfs/xfs_dmapi.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
 
/*
2
 
 * Copyright (c) 2000-2005 Silicon Graphics, Inc.
3
 
 * All Rights Reserved.
4
 
 *
5
 
 * This program is free software; you can redistribute it and/or
6
 
 * modify it under the terms of the GNU General Public License as
7
 
 * published by the Free Software Foundation.
8
 
 *
9
 
 * This program is distributed in the hope that it would be useful,
10
 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
 
 * GNU General Public License for more details.
13
 
 *
14
 
 * You should have received a copy of the GNU General Public License
15
 
 * along with this program; if not, write the Free Software Foundation,
16
 
 * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
17
 
 */
18
 
#ifndef __XFS_DMAPI_H__
19
 
#define __XFS_DMAPI_H__
20
 
 
21
 
/*      Values used to define the on-disk version of dm_attrname_t. All
22
 
 *      on-disk attribute names start with the 8-byte string "SGI_DMI_".
23
 
 *
24
 
 *      In the on-disk inode, DMAPI attribute names consist of the user-provided
25
 
 *      name with the DMATTR_PREFIXSTRING pre-pended.  This string must NEVER be
26
 
 *      changed.
27
 
 */
28
 
 
29
 
#define DMATTR_PREFIXLEN        8
30
 
#define DMATTR_PREFIXSTRING     "SGI_DMI_"
31
 
 
32
 
typedef enum {
33
 
        DM_EVENT_INVALID        = -1,
34
 
        DM_EVENT_CANCEL         = 0,            /* not supported */
35
 
        DM_EVENT_MOUNT          = 1,
36
 
        DM_EVENT_PREUNMOUNT     = 2,
37
 
        DM_EVENT_UNMOUNT        = 3,
38
 
        DM_EVENT_DEBUT          = 4,            /* not supported */
39
 
        DM_EVENT_CREATE         = 5,
40
 
        DM_EVENT_CLOSE          = 6,            /* not supported */
41
 
        DM_EVENT_POSTCREATE     = 7,
42
 
        DM_EVENT_REMOVE         = 8,
43
 
        DM_EVENT_POSTREMOVE     = 9,
44
 
        DM_EVENT_RENAME         = 10,
45
 
        DM_EVENT_POSTRENAME     = 11,
46
 
        DM_EVENT_LINK           = 12,
47
 
        DM_EVENT_POSTLINK       = 13,
48
 
        DM_EVENT_SYMLINK        = 14,
49
 
        DM_EVENT_POSTSYMLINK    = 15,
50
 
        DM_EVENT_READ           = 16,
51
 
        DM_EVENT_WRITE          = 17,
52
 
        DM_EVENT_TRUNCATE       = 18,
53
 
        DM_EVENT_ATTRIBUTE      = 19,
54
 
        DM_EVENT_DESTROY        = 20,
55
 
        DM_EVENT_NOSPACE        = 21,
56
 
        DM_EVENT_USER           = 22,
57
 
        DM_EVENT_MAX            = 23
58
 
} dm_eventtype_t;
59
 
#define HAVE_DM_EVENTTYPE_T
60
 
 
61
 
typedef enum {
62
 
        DM_RIGHT_NULL,
63
 
        DM_RIGHT_SHARED,
64
 
        DM_RIGHT_EXCL
65
 
} dm_right_t;
66
 
#define HAVE_DM_RIGHT_T
67
 
 
68
 
/* Defines for determining if an event message should be sent. */
69
 
#ifdef HAVE_DMAPI
70
 
#define DM_EVENT_ENABLED(ip, event) ( \
71
 
        unlikely ((ip)->i_mount->m_flags & XFS_MOUNT_DMAPI) && \
72
 
                ( ((ip)->i_d.di_dmevmask & (1 << event)) || \
73
 
                  ((ip)->i_mount->m_dmevmask & (1 << event)) ) \
74
 
        )
75
 
#else
76
 
#define DM_EVENT_ENABLED(ip, event)     (0)
77
 
#endif
78
 
 
79
 
#define DM_XFS_VALID_FS_EVENTS          ( \
80
 
        (1 << DM_EVENT_PREUNMOUNT)      | \
81
 
        (1 << DM_EVENT_UNMOUNT)         | \
82
 
        (1 << DM_EVENT_NOSPACE)         | \
83
 
        (1 << DM_EVENT_DEBUT)           | \
84
 
        (1 << DM_EVENT_CREATE)          | \
85
 
        (1 << DM_EVENT_POSTCREATE)      | \
86
 
        (1 << DM_EVENT_REMOVE)          | \
87
 
        (1 << DM_EVENT_POSTREMOVE)      | \
88
 
        (1 << DM_EVENT_RENAME)          | \
89
 
        (1 << DM_EVENT_POSTRENAME)      | \
90
 
        (1 << DM_EVENT_LINK)            | \
91
 
        (1 << DM_EVENT_POSTLINK)        | \
92
 
        (1 << DM_EVENT_SYMLINK)         | \
93
 
        (1 << DM_EVENT_POSTSYMLINK)     | \
94
 
        (1 << DM_EVENT_ATTRIBUTE)       | \
95
 
        (1 << DM_EVENT_DESTROY)         )
96
 
 
97
 
/* Events valid in dm_set_eventlist() when called with a file handle for
98
 
   a regular file or a symlink.  These events are persistent.
99
 
*/
100
 
 
101
 
#define DM_XFS_VALID_FILE_EVENTS        ( \
102
 
        (1 << DM_EVENT_ATTRIBUTE)       | \
103
 
        (1 << DM_EVENT_DESTROY)         )
104
 
 
105
 
/* Events valid in dm_set_eventlist() when called with a file handle for
106
 
   a directory.  These events are persistent.
107
 
*/
108
 
 
109
 
#define DM_XFS_VALID_DIRECTORY_EVENTS   ( \
110
 
        (1 << DM_EVENT_CREATE)          | \
111
 
        (1 << DM_EVENT_POSTCREATE)      | \
112
 
        (1 << DM_EVENT_REMOVE)          | \
113
 
        (1 << DM_EVENT_POSTREMOVE)      | \
114
 
        (1 << DM_EVENT_RENAME)          | \
115
 
        (1 << DM_EVENT_POSTRENAME)      | \
116
 
        (1 << DM_EVENT_LINK)            | \
117
 
        (1 << DM_EVENT_POSTLINK)        | \
118
 
        (1 << DM_EVENT_SYMLINK)         | \
119
 
        (1 << DM_EVENT_POSTSYMLINK)     | \
120
 
        (1 << DM_EVENT_ATTRIBUTE)       | \
121
 
        (1 << DM_EVENT_DESTROY)         )
122
 
 
123
 
/* Events supported by the XFS filesystem. */
124
 
#define DM_XFS_SUPPORTED_EVENTS         ( \
125
 
        (1 << DM_EVENT_MOUNT)           | \
126
 
        (1 << DM_EVENT_PREUNMOUNT)      | \
127
 
        (1 << DM_EVENT_UNMOUNT)         | \
128
 
        (1 << DM_EVENT_NOSPACE)         | \
129
 
        (1 << DM_EVENT_CREATE)          | \
130
 
        (1 << DM_EVENT_POSTCREATE)      | \
131
 
        (1 << DM_EVENT_REMOVE)          | \
132
 
        (1 << DM_EVENT_POSTREMOVE)      | \
133
 
        (1 << DM_EVENT_RENAME)          | \
134
 
        (1 << DM_EVENT_POSTRENAME)      | \
135
 
        (1 << DM_EVENT_LINK)            | \
136
 
        (1 << DM_EVENT_POSTLINK)        | \
137
 
        (1 << DM_EVENT_SYMLINK)         | \
138
 
        (1 << DM_EVENT_POSTSYMLINK)     | \
139
 
        (1 << DM_EVENT_READ)            | \
140
 
        (1 << DM_EVENT_WRITE)           | \
141
 
        (1 << DM_EVENT_TRUNCATE)        | \
142
 
        (1 << DM_EVENT_ATTRIBUTE)       | \
143
 
        (1 << DM_EVENT_DESTROY)         )
144
 
 
145
 
 
146
 
/*
147
 
 *      Definitions used for the flags field on dm_send_*_event().
148
 
 */
149
 
 
150
 
#define DM_FLAGS_NDELAY         0x001   /* return EAGAIN after dm_pending() */
151
 
#define DM_FLAGS_UNWANTED       0x002   /* event not in fsys dm_eventset_t */
152
 
#define DM_FLAGS_IMUX           0x004   /* thread holds i_mutex */
153
 
#define DM_FLAGS_IALLOCSEM_RD   0x010   /* thread holds i_alloc_sem rd */
154
 
#define DM_FLAGS_IALLOCSEM_WR   0x020   /* thread holds i_alloc_sem wr */
155
 
 
156
 
/*
157
 
 *      Pull in platform specific event flags defines
158
 
 */
159
 
#include "xfs_dmapi_priv.h"
160
 
 
161
 
/*
162
 
 *      Macros to turn caller specified delay/block flags into
163
 
 *      dm_send_xxxx_event flag DM_FLAGS_NDELAY.
164
 
 */
165
 
 
166
 
#define FILP_DELAY_FLAG(filp) ((filp->f_flags&(O_NDELAY|O_NONBLOCK)) ? \
167
 
                        DM_FLAGS_NDELAY : 0)
168
 
#define AT_DELAY_FLAG(f) ((f & XFS_ATTR_NONBLOCK) ? DM_FLAGS_NDELAY : 0)
169
 
 
170
 
#endif  /* __XFS_DMAPI_H__ */