-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
- *
+/*
* GPL HEADER START
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* GPL HEADER END
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
+ *
+ * Copyright (c) 2011, 2012, Whamcloud, Inc.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
* Author: Andreas Dilger <adilger@clusterfs.com>
*/
-#ifndef EXPORT_SYMTAB
-# define EXPORT_SYMTAB
-#endif
-
#define DEBUG_SUBSYSTEM S_FILTER
#include <linux/version.h>
__u64 obd_max_pages = 0;
__u64 obd_max_alloc = 0;
struct lprocfs_stats *obd_memory = NULL;
+EXPORT_SYMBOL(obd_memory);
cfs_spinlock_t obd_updatemax_lock = CFS_SPIN_LOCK_UNLOCKED;
/* refine later and change to seqlock or simlar from libcfs */
OBD_SET_CTXT_MAGIC(save);
save->fs = get_fs();
- LASSERT(cfs_atomic_read(&cfs_fs_pwd(current->fs)->d_count));
- LASSERT(cfs_atomic_read(&new_ctx->pwd->d_count));
+ LASSERT(d_refcount(cfs_fs_pwd(current->fs)));
+ LASSERT(d_refcount(new_ctx->pwd));
save->pwd = dget(cfs_fs_pwd(current->fs));
save->pwdmnt = mntget(cfs_fs_mnt(current->fs));
- save->luc.luc_umask = current->fs->umask;
+ save->luc.luc_umask = cfs_curproc_umask();
save->ngroups = current_cred()->group_info->ngroups;
LASSERT(save->pwd);
if (!file || !file->f_op || !file->f_op->fsync)
RETURN(-ENOSYS);
- RETURN(file->f_op->fsync(file, file->f_dentry, 0));
+ RETURN(cfs_do_fsync(file, 0));
}
EXPORT_SYMBOL(lustre_fsync);
}
EXPORT_SYMBOL(l_dentry_open);
-#ifdef HAVE_VFS_READDIR_U64_INO
static int l_filldir(void *__buf, const char *name, int namlen, loff_t offset,
u64 ino, unsigned int d_type)
-#else
-static int l_filldir(void *__buf, const char *name, int namlen, loff_t offset,
- ino_t ino, unsigned int d_type)
-#endif
{
struct l_linux_dirent *dirent;
struct l_readdir_callback *buf = (struct l_readdir_callback *)__buf;
}
EXPORT_SYMBOL(simple_truncate);
-#ifdef LUSTRE_KERNEL_VERSION
-#ifndef HAVE_CLEAR_RDONLY_ON_PUT
-#error rdonly patchset must be updated [cfs bz11248]
-#endif
-void dev_set_rdonly(lvfs_sbdev_type dev);
-int dev_check_rdonly(lvfs_sbdev_type dev);
-
-void __lvfs_set_rdonly(lvfs_sbdev_type dev, lvfs_sbdev_type jdev)
+int __lvfs_set_rdonly(lvfs_sbdev_type dev, lvfs_sbdev_type jdev)
{
+#ifdef HAVE_DEV_SET_RDONLY
if (jdev && (jdev != dev)) {
CDEBUG(D_IOCTL | D_HA, "set journal dev %lx rdonly\n",
(long)jdev);
}
CDEBUG(D_IOCTL | D_HA, "set dev %lx rdonly\n", (long)dev);
dev_set_rdonly(dev);
+
+ return 0;
+#else
+ CERROR("DEV %lx CANNOT BE SET READONLY\n", (long)dev);
+
+ return -EOPNOTSUPP;
+#endif
}
+EXPORT_SYMBOL(__lvfs_set_rdonly);
int lvfs_check_rdonly(lvfs_sbdev_type dev)
{
+#ifdef HAVE_DEV_SET_RDONLY
return dev_check_rdonly(dev);
+#else
+ return 0;
+#endif
}
-
-EXPORT_SYMBOL(__lvfs_set_rdonly);
EXPORT_SYMBOL(lvfs_check_rdonly);
int lvfs_check_io_health(struct obd_device *obd, struct file *file)
RETURN(rc);
}
EXPORT_SYMBOL(lvfs_check_io_health);
-#endif /* LUSTRE_KERNEL_VERSION */
void obd_update_maxusage()
{
cfs_spin_unlock(&obd_updatemax_lock);
}
+EXPORT_SYMBOL(obd_update_maxusage);
__u64 obd_memory_max(void)
{
return ret;
}
+EXPORT_SYMBOL(obd_memory_max);
__u64 obd_pages_max(void)
{
return ret;
}
-
-EXPORT_SYMBOL(obd_update_maxusage);
EXPORT_SYMBOL(obd_pages_max);
-EXPORT_SYMBOL(obd_memory_max);
-EXPORT_SYMBOL(obd_memory);
#ifdef LPROCFS
__s64 lprocfs_read_helper(struct lprocfs_counter *lc,