From: Martin Wilck <mwi...@arcor.de> make btrfs_inode_[amc]time work like the other btrfs_inode_xxx functions. The current definition appears broken to me; it never returns valid pointer unless an extent buffer address is added.
Signed-off-by: Martin Wilck <mwi...@arcor.de> --- ctree.h | 15 +++++++++------ 1 files changed, 9 insertions(+), 6 deletions(-) diff --git a/ctree.h b/ctree.h index 89036de..1d5a5fc 100644 --- a/ctree.h +++ b/ctree.h @@ -1414,27 +1414,30 @@ BTRFS_SETGET_STACK_FUNCS(stack_inode_flags, struct btrfs_inode_item, flags, 64); static inline struct btrfs_timespec * -btrfs_inode_atime(struct btrfs_inode_item *inode_item) +btrfs_inode_atime(struct extent_buffer *eb, + struct btrfs_inode_item *inode_item) { unsigned long ptr = (unsigned long)inode_item; ptr += offsetof(struct btrfs_inode_item, atime); - return (struct btrfs_timespec *)ptr; + return (struct btrfs_timespec *)(ptr + eb->data); } static inline struct btrfs_timespec * -btrfs_inode_mtime(struct btrfs_inode_item *inode_item) +btrfs_inode_mtime(struct extent_buffer *eb, + struct btrfs_inode_item *inode_item) { unsigned long ptr = (unsigned long)inode_item; ptr += offsetof(struct btrfs_inode_item, mtime); - return (struct btrfs_timespec *)ptr; + return (struct btrfs_timespec *)(ptr + eb->data); } static inline struct btrfs_timespec * -btrfs_inode_ctime(struct btrfs_inode_item *inode_item) +btrfs_inode_ctime(struct extent_buffer *eb, + struct btrfs_inode_item *inode_item) { unsigned long ptr = (unsigned long)inode_item; ptr += offsetof(struct btrfs_inode_item, ctime); - return (struct btrfs_timespec *)ptr; + return (struct btrfs_timespec *)(ptr + eb->data); } static inline struct btrfs_timespec * -- 1.7.3.4 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html