#2.6.18 + RHEL5 (fc6)
-# RHEL5 in FS-cache patch rename PG_checked flag into PG_fs_misc
-AC_DEFUN([LC_PG_FS_MISC],
-[AC_MSG_CHECKING([kernel has PG_fs_misc])
-LB_LINUX_TRY_COMPILE([
- #include <linux/mm.h>
- #include <linux/page-flags.h>
-],[
- #ifndef PG_fs_misc
- #error PG_fs_misc not defined in kernel
- #endif
-],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_PG_FS_MISC, 1,
- [is kernel have PG_fs_misc])
-],[
- AC_MSG_RESULT(no)
-])
-])
-
-# RHEL5 PageChecked and SetPageChecked defined
-AC_DEFUN([LC_PAGE_CHECKED],
-[AC_MSG_CHECKING([kernel has PageChecked and SetPageChecked])
-LB_LINUX_TRY_COMPILE([
- #include <linux/mm.h>
-#ifdef HAVE_LINUX_MMTYPES_H
- #include <linux/mm_types.h>
-#endif
- #include <linux/page-flags.h>
-],[
- struct page *p = NULL;
-
- /* before 2.6.26 this define*/
- #ifndef PageChecked
- /* 2.6.26 use function instead of define for it */
- SetPageChecked(p);
- PageChecked(p);
- #endif
-],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_PAGE_CHECKED, 1,
- [does kernel have PageChecked and SetPageChecked])
-],[
- AC_MSG_RESULT(no)
-])
-])
-
#
# LC_LINUX_FIEMAP_H
#
-# If we have fiemap.h
-# after 2.6.27 use fiemap.h in include/linux
+# fiemap.h is added since v2.6.28
+# RHEL5 2.6.18 has it, while SLES10 2.6.27 does not
#
AC_DEFUN([LC_LINUX_FIEMAP_H],
[LB_CHECK_FILE([$LINUX/include/linux/fiemap.h],[
# 2.6.19
-# 2.6.19 API changes
-# inode don't have i_blksize field
-AC_DEFUN([LC_INODE_BLKSIZE],
-[AC_MSG_CHECKING([inode has i_blksize field])
-LB_LINUX_TRY_COMPILE([
-#include <linux/fs.h>
-],[
- struct inode i;
- i.i_blksize = 0;
-],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_INODE_BLKSIZE, 1,
- [struct inode has i_blksize field])
-],[
- AC_MSG_RESULT(no)
-])
-])
-
# LC_FILE_WRITEV
# 2.6.19 replaced writev with aio_write
AC_DEFUN([LC_FILE_WRITEV],
LC_UMOUNTBEGIN_HAS_VFSMOUNT
#2.6.18 + RHEL5 (fc6)
- LC_PG_FS_MISC
- LC_PAGE_CHECKED
LC_LINUX_FIEMAP_H
# 2.6.19
- LC_INODE_BLKSIZE
LC_FILE_WRITEV
LC_FILE_READV
#define ll_invalidate_bdev(a,b) invalidate_bdev((a))
#endif
-#ifdef HAVE_INODE_BLKSIZE
-#define ll_inode_blksize(a) (a)->i_blksize
-#else
#define ll_inode_blksize(a) (1<<(a)->i_blkbits)
-#endif
#ifdef HAVE_FS_RENAME_DOES_D_MOVE
#define LL_RENAME_DOES_D_MOVE FS_RENAME_DOES_D_MOVE
#include <lustre_fid.h>
#include "llite_internal.h"
-#ifndef HAVE_PAGE_CHECKED
-#ifdef HAVE_PG_FS_MISC
-#define PageChecked(page) test_bit(PG_fs_misc, &(page)->flags)
-#define SetPageChecked(page) set_bit(PG_fs_misc, &(page)->flags)
-#else
-#error PageChecked or PageFsMisc not defined in kernel
-#endif
-#endif
-
/*
* (new) readdir implementation overview.
*
stat->atime = inode->i_atime;
stat->mtime = inode->i_mtime;
stat->ctime = inode->i_ctime;
-#ifdef HAVE_INODE_BLKSIZE
- stat->blksize = inode->i_blksize;
-#else
- stat->blksize = 1 << inode->i_blkbits;
-#endif
+ stat->blksize = 1 << inode->i_blkbits;
stat->size = i_size_read(inode);
stat->blocks = inode->i_blocks;
} else {
inode->i_blkbits = inode->i_sb->s_blocksize_bits;
}
-#ifdef HAVE_INODE_BLKSIZE
- inode->i_blksize = 1<<inode->i_blkbits;
-#endif
if (body->valid & OBD_MD_FLUID)
inode->i_uid = body->uid;
if (body->valid & OBD_MD_FLGID)
LTIME_S(dst->i_ctime) = src->o_ctime;
if (valid & OBD_MD_FLSIZE)
i_size_write(dst, src->o_size);
- /* optimum IO size */
- if (valid & OBD_MD_FLBLKSZ && src->o_blksize > (1 << dst->i_blkbits)) {
- dst->i_blkbits = cfs_ffs(src->o_blksize) - 1;
-#ifdef HAVE_INODE_BLKSIZE
- dst->i_blksize = src->o_blksize;
-#endif
- }
+ /* optimum IO size */
+ if (valid & OBD_MD_FLBLKSZ && src->o_blksize > (1 << dst->i_blkbits))
+ dst->i_blkbits = cfs_ffs(src->o_blksize) - 1;
- if (dst->i_blkbits < CFS_PAGE_SHIFT) {
-#ifdef HAVE_INODE_BLKSIZE
- dst->i_blksize = CFS_PAGE_SIZE;
-#endif
- dst->i_blkbits = CFS_PAGE_SHIFT;
- }
+ if (dst->i_blkbits < CFS_PAGE_SHIFT)
+ dst->i_blkbits = CFS_PAGE_SHIFT;
/* allocation of space */
if (valid & OBD_MD_FLBLOCKS && src->o_blocks > dst->i_blocks)
dst->i_blocks = -1;
}
- if (valid & OBD_MD_FLBLKSZ) {
- dst->i_blkbits = cfs_ffs(src->o_blksize)-1;
-#ifdef HAVE_INODE_BLKSIZE
- dst->i_blksize = src->o_blksize;
-#endif
- }
+ if (valid & OBD_MD_FLBLKSZ)
+ dst->i_blkbits = cfs_ffs(src->o_blksize)-1;
if (valid & OBD_MD_FLMODE)
dst->i_mode = (dst->i_mode & S_IFMT) | (src->o_mode & ~S_IFMT);
if (valid & OBD_MD_FLUID)
attr->la_flags = LDISKFS_I(inode)->i_flags;
attr->la_nlink = inode->i_nlink;
attr->la_rdev = inode->i_rdev;
- attr->la_blksize = ll_inode_blksize(inode);
- attr->la_blkbits = inode->i_blkbits;
+ attr->la_blksize = 1 << inode->i_blkbits;
+ attr->la_blkbits = inode->i_blkbits;
}
static int osd_attr_get(const struct lu_env *env,