Whamcloud - gitweb
LU-11393 osd-zfs: time struct changes 45/33345/4
authorNathaniel Clark <nclark@whamcloud.com>
Wed, 10 Oct 2018 21:16:58 +0000 (17:16 -0400)
committerOleg Drokin <green@whamcloud.com>
Tue, 23 Oct 2018 05:19:34 +0000 (05:19 +0000)
Account for changes in 0.7.10 and pre 0.8 changes in ZFS that change
the time structure.

Test-Parameters: trivial
Signed-off-by: Nathaniel Clark <nclark@whamcloud.com>
Change-Id: I5c2373d053ea92d8bf04befe1d096159b8a34126
Reviewed-on: https://review.whamcloud.com/33345
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Alex Zhuravlev <bzzz@whamcloud.com>
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
config/lustre-build-zfs.m4
lustre/osd-zfs/osd_internal.h
lustre/osd-zfs/osd_object.c
lustre/osd-zfs/osd_xattr.c

index 7ea8071..5d024c2 100644 (file)
@@ -670,6 +670,19 @@ your distribution.
                        AC_DEFINE(HAVE_DMU_TX_MARK_NETFREE, 1,
                                [Have dmu_tx_mark_netfree])
                ])
+               dnl #
+               dnl # ZFS 0.7.10 changes timestruc_t to inode_timespec_t
+               dnl #
+               LB_CHECK_COMPILE([if SPL has 'inode_timespec_t'],
+               zfs_have_inode_timespec, [
+                       #include <sys/fs/zfs.h>
+               ],[
+                       inode_timespec_t now;
+                       gethrestime(&now);
+               ],[
+                       AC_DEFINE(HAVE_ZFS_INODE_TIMESPEC, 1,
+                               [Have inode_timespec_t])
+               ])
        ])
 
        AS_IF([test "x$enable_zfs" = xyes], [
index 3b53401..d34afe5 100644 (file)
@@ -1096,4 +1096,8 @@ osd_index_backup(const struct lu_env *env, struct osd_device *osd, bool backup)
 #define dmu_tx_mark_netfree(tx)
 #endif
 
+#ifndef HAVE_ZFS_INODE_TIMESPEC
+#define inode_timespec_t timestruc_t
+#endif
+
 #endif /* _OSD_INTERNAL_H */
index 6d8c3dd..909af49 100644 (file)
@@ -1515,13 +1515,13 @@ int __osd_attr_init(const struct lu_env *env, struct osd_device *osd,
                    struct lu_attr *la, uint64_t parent,
                    nvlist_t *xattr)
 {
-       sa_bulk_attr_t  *bulk = osd_oti_get(env)->oti_attr_bulk;
-       struct osa_attr *osa = &osd_oti_get(env)->oti_osa;
-       uint64_t         gen;
-       uint64_t         crtime[2];
-       timestruc_t      now;
-       int              cnt;
-       int              rc;
+       sa_bulk_attr_t *bulk = osd_oti_get(env)->oti_attr_bulk;
+       struct osa_attr *osa = &osd_oti_get(env)->oti_osa;
+       uint64_t gen;
+       uint64_t crtime[2];
+       inode_timespec_t now;
+       int cnt;
+       int rc;
        char *dxattr = NULL;
        size_t sa_size;
 
index f6ac3a7..67be1b4 100644 (file)
@@ -426,12 +426,12 @@ int osd_declare_xattr_set(const struct lu_env *env, struct dt_object *dt,
 int __osd_sa_attr_init(const struct lu_env *env, struct osd_object *obj,
                       struct osd_thandle *oh)
 {
-       sa_bulk_attr_t  *bulk = osd_oti_get(env)->oti_attr_bulk;
-       struct osa_attr *osa = &osd_oti_get(env)->oti_osa;
+       sa_bulk_attr_t *bulk = osd_oti_get(env)->oti_attr_bulk;
+       struct osa_attr *osa = &osd_oti_get(env)->oti_osa;
        struct lu_buf *lb = &osd_oti_get(env)->oti_xattr_lbuf;
        struct osd_device *osd = osd_obj2dev(obj);
        uint64_t crtime[2], gen;
-       timestruc_t now;
+       inode_timespec_t now;
        size_t size;
        int rc, cnt;