diff options
Diffstat (limited to 'api/src/glfs-internal.h')
-rw-r--r-- | api/src/glfs-internal.h | 38 |
1 files changed, 26 insertions, 12 deletions
diff --git a/api/src/glfs-internal.h b/api/src/glfs-internal.h index 275f8d1534b..384050be8ad 100644 --- a/api/src/glfs-internal.h +++ b/api/src/glfs-internal.h @@ -199,18 +199,32 @@ int glfs_first_lookup (xlator_t *subvol); void glfs_process_upcall_event (struct glfs *fs, void *data); GFAPI_PRIVATE(glfs_process_upcall_event, 3.7.0); -static inline void -__glfs_entry_fs (struct glfs *fs) -{ - THIS = fs->ctx->master; -} - - -static inline void -__glfs_entry_fd (struct glfs_fd *fd) -{ - THIS = fd->fd->inode->table->xl->ctx->master; -} +#define DECLARE_OLD_THIS xlator_t *old_THIS = NULL + +#define __GLFS_ENTRY_VALIDATE_FS(fs, label) \ +do { \ + if (!fs) { \ + errno = EINVAL; \ + goto label; \ + } \ + old_THIS = THIS; \ + THIS = fs->ctx->master; \ +} while (0) + +#define __GLFS_EXIT_FS \ +do { \ + THIS = old_THIS; \ +} while (0) + +#define __GLFS_ENTRY_VALIDATE_FD(glfd, label) \ +do { \ + if (!glfd) { \ + errno = EINVAL; \ + goto label; \ + } \ + old_THIS = THIS; \ + THIS = glfd->fd->inode->table->xl->ctx->master; \ +} while (0) /* |