#include <linux/version.h>
#include <linux/bitops.h>
#include <linux/quota.h>
-#ifdef HAVE_QUOTAIO_V1_H
-# include <linux/quotaio_v1.h>
+#ifdef HAVE_QUOTAIO_H
# include <linux/quotaio_v2.h>
-#elif defined(HAVE_FS_QUOTA_QUOTAIO_V1_H)
-# include <quota/quotaio_v1.h>
+#elif defined(HAVE_FS_QUOTA_QUOTAIO_H)
# include <quota/quotaio_v2.h>
# include <quota/quota_tree.h>
# define V2_DQTREEOFF QT_TREEOFF
-#else
-# include <quotaio_v1.h>
+#elif defined(HAVE_FS_QUOTAIO_V1_H)
# include <quotaio_v2.h>
# include <quota_tree.h>
# define V2_DQTREEOFF QT_TREEOFF
+# define V2_INITQVERSIONS_R1 V2_INITQVERSIONS
+#endif
+
+#ifdef QFMT_VFS_V1
+#define QFMT_LUSTRE QFMT_VFS_V1
+#else
+#define QFMT_LUSTRE QFMT_VFS_V0
#endif
#if defined(HAVE_EXT3_XATTR_H)
ext3_ext_insert_extent(handle, inode, path, newext)
#endif
+#ifdef EXT3_DISCARD_PREALLOCATIONS
+#define ext3_mb_discard_inode_preallocations(inode) \
+ ext3_discard_preallocations(inode)
+#endif
+
static cfs_mem_cache_t *fcb_cache;
return 0;
}
-/*
- * We need to hack the return value for the free inode counts because
- * the current EA code requires one filesystem block per inode with EAs,
- * so it is possible to run out of blocks before we run out of inodes.
- *
- * This can be removed when the ext3 EA code is fixed.
- */
static int fsfilt_ext3_statfs(struct super_block *sb, struct obd_statfs *osfs)
{
struct kstatfs sfs;
memset(&sfs, 0, sizeof(sfs));
rc = ll_do_statfs(sb, &sfs);
- if (!rc && sfs.f_bfree < sfs.f_ffree) {
- sfs.f_files = (sfs.f_files - sfs.f_ffree) + sfs.f_bfree;
- sfs.f_ffree = sfs.f_bfree;
- }
-
statfs_pack(osfs, &sfs);
return rc;
}
sbi->s_qf_names[USRQUOTA] = NULL;
return -ENOMEM;
}
- sbi->s_jquota_fmt = QFMT_VFS_V0;
+ sbi->s_jquota_fmt = QFMT_LUSTRE;
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,13))
set_opt(sbi->s_mount_opt, QUOTA);
#endif
LASSERT(oqc->qc_id == LUSTRE_QUOTA_V2);
- rc = ll_quota_on(sb, i, QFMT_VFS_V0,
+ rc = ll_quota_on(sb, i, QFMT_LUSTRE,
name[i], 0);
} else if (oqc->qc_cmd == Q_QUOTAOFF) {
rc = ll_quota_off(sb, i, 0);