Whamcloud - gitweb
in getattr requests, get the authoritative file size from the OST
[fs/lustre-release.git] / lustre / include / linux / obd_support.h
index ceffa9a..c7d1328 100644 (file)
 /* global variables */
 extern unsigned long obd_memory;
 extern unsigned long obd_fail_loc;
+extern unsigned long obd_timeout;
+extern char obd_recovery_upcall[128];
 
-enum {
-        OBD_FAIL_MDS = 0x100,
-        OBD_FAIL_MDS_HANDLE_UNPACK,
-        OBD_FAIL_MDS_GETATTR_NET,
-        OBD_FAIL_MDS_GETATTR_PACK,
-        OBD_FAIL_MDS_READPAGE_NET,
-        OBD_FAIL_MDS_READPAGE_PACK,
-        OBD_FAIL_MDS_READPAGE_BULK_NET,
-        OBD_FAIL_MDS_SENDPAGE,
-        OBD_FAIL_MDS_REINT_NET,
-        OBD_FAIL_MDS_REINT_UNPACK,
-        OBD_FAIL_MDS_REINT_SETATTR,
-        OBD_FAIL_MDS_REINT_SETATTR_WRITE,
-        OBD_FAIL_MDS_REINT_CREATE,
-        OBD_FAIL_MDS_REINT_CREATE_WRITE,
-        OBD_FAIL_MDS_REINT_UNLINK,
-        OBD_FAIL_MDS_REINT_UNLINK_WRITE,
-        OBD_FAIL_MDS_REINT_LINK,
-        OBD_FAIL_MDS_REINT_LINK_WRITE,
-        OBD_FAIL_MDS_REINT_RENAME,
-        OBD_FAIL_MDS_REINT_RENAME_WRITE,
-        OBD_FAIL_MDS_OPEN_NET,
-        OBD_FAIL_MDS_OPEN_PACK,
-        OBD_FAIL_MDS_CLOSE_NET,
-        OBD_FAIL_MDS_CLOSE_PACK,
-
-        OBD_FAIL_OST = 0x200,
-        OBD_FAIL_OST_CONNECT_NET,
-        OBD_FAIL_OST_DISCONNECT_NET,
-        OBD_FAIL_OST_GET_INFO_NET,
-        OBD_FAIL_OST_CREATE_NET,
-        OBD_FAIL_OST_DESTROY_NET,
-        OBD_FAIL_OST_GETATTR_NET,
-        OBD_FAIL_OST_SETATTR_NET,
-        OBD_FAIL_OST_OPEN_NET,
-        OBD_FAIL_OST_CLOSE_NET,
-        OBD_FAIL_OST_BRW_NET,
-        OBD_FAIL_OST_PUNCH_NET,
-
-        OBB_FAIL_LDLM = 0x300,
-        OBD_FAIL_LDLM_ENQUEUE,
-        OBD_FAIL_LDLM_CONVERT,
-        OBD_FAIL_LDLM_CANCEL,
-        OBD_FAIL_LDLM_CALLBACK,
-
-};
+#define OBD_FAIL_MDS                     0x100
+#define OBD_FAIL_MDS_HANDLE_UNPACK       0x101
+#define OBD_FAIL_MDS_GETATTR_NET         0x102
+#define OBD_FAIL_MDS_GETATTR_PACK        0x103
+#define OBD_FAIL_MDS_READPAGE_NET        0x104
+#define OBD_FAIL_MDS_READPAGE_PACK       0x105
+#define OBD_FAIL_MDS_SENDPAGE            0x106
+#define OBD_FAIL_MDS_REINT_NET           0x107
+#define OBD_FAIL_MDS_REINT_UNPACK        0x108
+#define OBD_FAIL_MDS_REINT_SETATTR       0x109
+#define OBD_FAIL_MDS_REINT_SETATTR_WRITE 0x10a
+#define OBD_FAIL_MDS_REINT_CREATE        0x10b
+#define OBD_FAIL_MDS_REINT_CREATE_WRITE  0x10c
+#define OBD_FAIL_MDS_REINT_UNLINK        0x10d
+#define OBD_FAIL_MDS_REINT_UNLINK_WRITE  0x10e
+#define OBD_FAIL_MDS_REINT_LINK          0x10f
+#define OBD_FAIL_MDS_REINT_LINK_WRITE    0x110
+#define OBD_FAIL_MDS_REINT_RENAME        0x111
+#define OBD_FAIL_MDS_REINT_RENAME_WRITE  0x112
+#define OBD_FAIL_MDS_OPEN_NET            0x113
+#define OBD_FAIL_MDS_OPEN_PACK           0x114
+#define OBD_FAIL_MDS_CLOSE_NET           0x115
+#define OBD_FAIL_MDS_CLOSE_PACK          0x116
+#define OBD_FAIL_MDS_CONNECT_NET         0x117
+#define OBD_FAIL_MDS_CONNECT_PACK        0x118
+#define OBD_FAIL_MDS_REINT_NET_REP       0x119
+#define OBD_FAIL_MDS_DISCONNECT_NET      0x11a
+#define OBD_FAIL_MDS_GETSTATUS_NET       0x11b
+#define OBD_FAIL_MDS_GETSTATUS_PACK      0x11c
+#define OBD_FAIL_MDS_STATFS_PACK         0x11d
+#define OBD_FAIL_MDS_STATFS_NET          0x11e
+
+#define OBD_FAIL_OST                     0x200
+#define OBD_FAIL_OST_CONNECT_NET         0x201
+#define OBD_FAIL_OST_DISCONNECT_NET      0x202
+#define OBD_FAIL_OST_GET_INFO_NET        0x203
+#define OBD_FAIL_OST_CREATE_NET          0x204
+#define OBD_FAIL_OST_DESTROY_NET         0x205
+#define OBD_FAIL_OST_GETATTR_NET         0x206
+#define OBD_FAIL_OST_SETATTR_NET         0x207
+#define OBD_FAIL_OST_OPEN_NET            0x208
+#define OBD_FAIL_OST_CLOSE_NET           0x209
+#define OBD_FAIL_OST_BRW_NET             0x20a
+#define OBD_FAIL_OST_PUNCH_NET           0x20b
+#define OBD_FAIL_OST_STATFS_NET          0x20c
+#define OBD_FAIL_OST_HANDLE_UNPACK       0x20d
+#define OBD_FAIL_OST_BRW_WRITE_BULK      0x20e
+#define OBD_FAIL_OST_BRW_READ_BULK       0x20f
+
+#define OBD_FAIL_LDLM                    0x300
+#define OBD_FAIL_LDLM_NAMESPACE_NEW      0x301
+#define OBD_FAIL_LDLM_ENQUEUE            0x302
+#define OBD_FAIL_LDLM_CONVERT            0x303
+#define OBD_FAIL_LDLM_CANCEL             0x304
+#define OBD_FAIL_LDLM_BL_CALLBACK        0x305
+#define OBD_FAIL_LDLM_CP_CALLBACK        0x306
+
+#define OBD_FAIL_OSC                     0x400
+#define OBD_FAIL_OSC_BRW_READ_BULK       0x401
+#define OBD_FAIL_OSC_BRW_WRITE_BULK      0x402
+#define OBD_FAIL_OSC_LOCK_BL_AST         0x403
+#define OBD_FAIL_OSC_LOCK_BL_REPLY       0x404
 
 /* preparation for a more advanced failure testbed (not functional yet) */
 #define OBD_FAIL_MASK_SYS    0x0000FF00
@@ -95,12 +113,17 @@ do {                                                                         \
         if (OBD_FAIL_CHECK(id)) {                                            \
                 CERROR("obd_fail_loc=%x, fail operation rc=%d\n", id, ret);  \
                 obd_fail_loc |= OBD_FAILED;                                  \
+                if ((id) & OBD_FAIL_ONCE)                                    \
+                        obd_fail_loc |= OBD_FAIL_ONCE;                       \
                 RETURN(ret);                                                 \
         }                                                                    \
 } while(0)
 
+#include <linux/types.h>
 #include <linux/blkdev.h>
 
+#define fixme() CDEBUG(D_OTHER, "FIXME\n");
+
 static inline void OBD_FAIL_WRITE(int id, kdev_t dev)
 {
         if (OBD_FAIL_CHECK(id)) {
@@ -117,28 +140,28 @@ static inline void OBD_FAIL_WRITE(int id, kdev_t dev)
         }
 }
 
-#define OBD_ALLOC(ptr, size)                                    \
-do {                                                            \
-        long s = (size);                                        \
-        (ptr) = kmalloc(s, GFP_KERNEL);                         \
-        if ((ptr) == NULL) {                                    \
-                CERROR("kernel malloc of %ld bytes failed at "  \
-                       "%s:%d\n", s, __FILE__, __LINE__);       \
-        } else {                                                \
-                memset((ptr), 0, s);                            \
-                obd_memory += s;                                \
-        }                                                       \
-        CDEBUG(D_MALLOC, "kmalloced: %ld at %x (tot %ld).\n",   \
-               s, (int)(ptr), obd_memory);                      \
+#define OBD_ALLOC(ptr, size)                                            \
+do {                                                                    \
+        long s = (size);                                                \
+        (ptr) = kmalloc(s, GFP_KERNEL);                                 \
+        if ((ptr) == NULL) {                                            \
+                CERROR("kmalloc of '" #ptr "' (%ld bytes) failed "      \
+                       "at %s:%d\n", s, __FILE__, __LINE__);            \
+        } else {                                                        \
+                memset((ptr), 0, s);                                    \
+                obd_memory += s;                                        \
+                CDEBUG(D_MALLOC, "kmalloced '" #ptr "': %ld at "        \
+                       "%p (tot %ld).\n", s, (ptr), obd_memory);        \
+        }                                                               \
 } while (0)
 
-#define OBD_FREE(ptr, size)                                     \
-do {                                                            \
-        int s = (size);                                         \
-        kfree((ptr));                                           \
-        CDEBUG(D_MALLOC, "kfreed: %d at %x (tot %ld).\n",       \
-               s, (int)(ptr), obd_memory);                      \
-        obd_memory -= s;                                        \
+#define OBD_FREE(ptr, size)                                             \
+do {                                                                    \
+        int s = (size);                                                 \
+        kfree((ptr));                                                   \
+        obd_memory -= s;                                                \
+        CDEBUG(D_MALLOC, "kfreed '" #ptr "': %d at %p (tot %ld).\n",    \
+               s, (ptr), obd_memory);                                   \
 } while (0)
 
 #endif