(type *)( (char *)__mptr - offsetof(type,member) );})
#endif
-#define UP_WRITE_I_ALLOC_SEM(i) up_write(&(i)->i_alloc_sem)
-#define DOWN_WRITE_I_ALLOC_SEM(i) down_write(&(i)->i_alloc_sem)
-#define LASSERT_I_ALLOC_SEM_WRITE_LOCKED(i) LASSERT(down_read_trylock(&(i)->i_alloc_sem) == 0)
-
-#define UP_READ_I_ALLOC_SEM(i) up_read(&(i)->i_alloc_sem)
-#define DOWN_READ_I_ALLOC_SEM(i) down_read(&(i)->i_alloc_sem)
-#define LASSERT_I_ALLOC_SEM_READ_LOCKED(i) LASSERT(down_write_trylock(&(i)->i_alloc_sem) == 0)
+#ifdef HAVE_INODE_DIO_WAIT
+/* inode_dio_wait(i) use as-is for write lock */
+# define inode_dio_write_done(i) do {} while (0) /* for write unlock */
+# define inode_dio_read(i) atomic_inc(&(i)->i_dio_count)
+/* inode_dio_done(i) use as-is for read unlock */
+#else
+# define inode_dio_wait(i) down_write(&(i)->i_alloc_sem)
+# define inode_dio_write_done(i) up_write(&(i)->i_alloc_sem)
+# define inode_dio_read(i) down_read(&(i)->i_alloc_sem)
+# define inode_dio_done(i) up_read(&(i)->i_alloc_sem)
+#endif
#include <linux/mpage.h> /* for generic_writepages */