Whamcloud - gitweb
LU-9960 osd-zfs: don't auto-upgrade quota
[fs/lustre-release.git] / lustre / osd-zfs / osd_handler.c
index 36e3e46..25ffbc6 100644 (file)
@@ -39,7 +39,6 @@
 
 #define DEBUG_SUBSYSTEM S_OSD
 
-#include <lustre_ver.h>
 #include <libcfs/libcfs.h>
 #include <obd_support.h>
 #include <lustre_net.h>
@@ -47,7 +46,7 @@
 #include <obd_class.h>
 #include <lustre_disk.h>
 #include <lustre_fid.h>
-#include <uapi/linux/lustre_param.h>
+#include <uapi/linux/lustre/lustre_param.h>
 #include <md_object.h>
 
 #include "osd_internal.h"
@@ -851,9 +850,10 @@ static int osd_objset_open(struct osd_device *o)
        int             rc;
        ENTRY;
 
-       rc = -dmu_objset_own(o->od_mntdev, DMU_OST_ZFS,
+       rc = -osd_dmu_objset_own(o->od_mntdev, DMU_OST_ZFS,
                             o->od_dt_dev.dd_rdonly ? B_TRUE : B_FALSE,
-                            o, &o->od_os);
+                            B_FALSE, o, &o->od_os);
+
        if (rc) {
                CERROR("%s: can't open %s\n", o->od_svname, o->od_mntdev);
                o->od_os = NULL;
@@ -917,7 +917,7 @@ static int osd_objset_open(struct osd_device *o)
 
 out:
        if (rc != 0 && o->od_os != NULL) {
-               dmu_objset_disown(o->od_os, o);
+               osd_dmu_objset_disown(o->od_os, B_FALSE, o);
                o->od_os = NULL;
        }
 
@@ -1100,6 +1100,13 @@ static int osd_mount(const struct lu_env *env,
                GOTO(err, rc);
        }
 
+#ifdef HAVE_DMU_USEROBJ_ACCOUNTING
+       if (!osd_dmu_userobj_accounting_available(o))
+               CWARN("%s: dnode accounting not enabled: "
+                     "enable feature@userobj_accounting in pool\n",
+                     o->od_mntdev);
+#endif
+
        /* parse mount option "noacl", and enable ACL by default */
        opts = lustre_cfg_string(cfg, 3);
        if (opts == NULL || strstr(opts, "noacl") == NULL)
@@ -1108,7 +1115,7 @@ static int osd_mount(const struct lu_env *env,
        osd_unlinked_drain(env, o);
 err:
        if (rc && o->od_os) {
-               dmu_objset_disown(o->od_os, o);
+               osd_dmu_objset_disown(o->od_os, B_FALSE, o);
                o->od_os = NULL;
        }
 
@@ -1148,8 +1155,7 @@ static void osd_umount(const struct lu_env *env, struct osd_device *o)
                        txg_wait_synced(dmu_objset_pool(o->od_os), 0ULL);
 
                /* close the object set */
-               dmu_objset_disown(o->od_os, o);
-
+               osd_dmu_objset_disown(o->od_os, B_FALSE, o);
                o->od_os = NULL;
        }