Whamcloud - gitweb
LU-7311 osd: quotactl_ops has changed in kernel 3.19 93/16893/4
authorFrank Zago <fzago@cray.com>
Thu, 15 Oct 2015 16:27:21 +0000 (12:27 -0400)
committerOleg Drokin <oleg.drokin@intel.com>
Wed, 27 Jul 2016 03:02:05 +0000 (03:02 +0000)
The kernel 3.19 has quotactl_ops->[sg]et_dqblk that take struct kqid
and qc_dqblk. Added in kernel commit 14bf61ffe.

Signed-off-by: frank zago <fzago@cray.com>
Change-Id: Ie9943d2537c137ececa03040151059e34850f5de
Reviewed-on: http://review.whamcloud.com/16893
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Niu Yawei <yawei.niu@intel.com>
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Reviewed-by: Yang Sheng <yang.sheng@intel.com>
Reviewed-by: James Simmons <uja.ornl@yahoo.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/autoconf/lustre-core.m4
lustre/osd-ldiskfs/osd_internal.h
lustre/osd-ldiskfs/osd_quota.c

index 365727e..41048be 100644 (file)
@@ -1851,6 +1851,30 @@ ki_nbytes, [
 ]) # LC_KIOCB_HAS_NBYTES
 
 #
+# LC_HAVE_DQUOT_QC_DQBLK
+#
+# 3.19 has quotactl_ops->[sg]et_dqblk that take struct kqid and qc_dqblk
+# Added in commit 14bf61ffe
+#
+AC_DEFUN([LC_HAVE_DQUOT_QC_DQBLK], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_COMPILE([if 'quotactl_ops.set_dqblk' takes struct qc_dqblk],
+qc_dqblk, [
+       #include <linux/fs.h>
+       #include <linux/quota.h>
+],[
+       ((struct quotactl_ops *)0)->set_dqblk(NULL, *((struct kqid*)0), (struct qc_dqblk*)0);
+],[
+       AC_DEFINE(HAVE_DQUOT_QC_DQBLK, 1,
+               [quotactl_ops.set_dqblk takes struct qc_dqblk])
+       AC_DEFINE(HAVE_DQUOT_KQID, 1,
+               [quotactl_ops.set_dqblk takes struct kqid])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LC_HAVE_DQUOT_QC_DQBLK
+
+#
 # LC_BACKING_DEV_INFO_REMOVAL
 #
 # 3.20 kernel removed backing_dev_info from address_space
@@ -2291,6 +2315,7 @@ AC_DEFUN([LC_PROG_LINUX], [
 
        # 3.19
        LC_KIOCB_HAS_NBYTES
+       LC_HAVE_DQUOT_QC_DQBLK
 
        # 3.20
        LC_BACKING_DEV_INFO_REMOVAL
index 1280721..d44e389 100644 (file)
@@ -607,7 +607,9 @@ struct osd_thread_info {
 
        /* used by quota code */
        union {
-#ifdef HAVE_DQUOT_FS_DISK_QUOTA
+#if defined(HAVE_DQUOT_QC_DQBLK)
+               struct qc_dqblk         oti_qdq;
+#elif defined(HAVE_DQUOT_FS_DISK_QUOTA)
                struct fs_disk_quota    oti_fdq;
 #else
                struct if_dqblk         oti_dqblk;
index 57b7733..e426b43 100644 (file)
@@ -102,7 +102,9 @@ static int osd_acct_index_lookup(const struct lu_env *env,
                                 const struct dt_key *dtkey)
 {
        struct osd_thread_info  *info = osd_oti_get(env);
-#ifdef HAVE_DQUOT_FS_DISK_QUOTA
+#if defined(HAVE_DQUOT_QC_DQBLK)
+       struct qc_dqblk         *dqblk = &info->oti_qdq;
+#elif defined(HAVE_DQUOT_FS_DISK_QUOTA)
        struct fs_disk_quota    *dqblk = &info->oti_fdq;
 #else
        struct if_dqblk         *dqblk = &info->oti_dqblk;
@@ -126,7 +128,10 @@ static int osd_acct_index_lookup(const struct lu_env *env,
 #endif
        if (rc)
                RETURN(rc);
-#ifdef HAVE_DQUOT_FS_DISK_QUOTA
+#if defined(HAVE_DQUOT_QC_DQBLK)
+       rec->bspace = dqblk->d_space;
+       rec->ispace = dqblk->d_ino_count;
+#elif defined(HAVE_DQUOT_FS_DISK_QUOTA)
        rec->bspace = dqblk->d_bcount;
        rec->ispace = dqblk->d_icount;
 #else