-long l_readdir(struct file *file, struct list_head *dentry_list)
-{
- struct l_linux_dirent *lastdirent;
- struct l_readdir_callback buf;
- int error;
-
- buf.lrc_dirent = NULL;
- buf.lrc_list = dentry_list;
-
- error = vfs_readdir(file, l_filldir, &buf);
- if (error < 0)
- return error;
-
- lastdirent = buf.lrc_dirent;
- if (lastdirent)
- lastdirent->lld_off = file->f_pos;
-
- return 0;
-}
-EXPORT_SYMBOL(l_readdir);
-EXPORT_SYMBOL(obd_memory);
-EXPORT_SYMBOL(obd_memmax);
-
-#ifdef LUSTRE_KERNEL_VERSION
-
-#ifndef HAVE_CLEAR_RDONLY_ON_PUT
-#error rdonly patchset must be updated
-#endif
-
-void dev_set_rdonly(lvfs_sbdev_type dev);
-void dev_clear_rdonly(lvfs_sbdev_type dev);
-int dev_check_rdonly(lvfs_sbdev_type dev);
-
-void lvfs_set_rdonly(lvfs_sbdev_type dev)
-{
- CDEBUG(D_IOCTL | D_HA, "set dev %lx rdonly\n", (long)dev);
- lvfs_sbdev_sync(dev);
- dev_set_rdonly(dev);
-}
-
-int lvfs_check_rdonly(lvfs_sbdev_type dev)
-{
- return dev_check_rdonly(dev);
-}
-
-void lvfs_clear_rdonly(lvfs_sbdev_type dev)
-{
- CDEBUG(D_IOCTL | D_HA, "(will unset dev %lx rdonly on put)\n",
- (long)dev);
-}
-
-EXPORT_SYMBOL(lvfs_set_rdonly);
-EXPORT_SYMBOL(lvfs_check_rdonly);
-EXPORT_SYMBOL(lvfs_clear_rdonly);
-#endif
-
-int lvfs_check_io_health(struct obd_device *obd, struct file *file)
-{
- char *write_page = NULL;
- loff_t offset = 0;
- int rc = 0;
- ENTRY;
-
- OBD_ALLOC(write_page, CFS_PAGE_SIZE);
- if (!write_page)
- RETURN(-ENOMEM);
-
- rc = fsfilt_write_record(obd, file, write_page, CFS_PAGE_SIZE, &offset, 1);
-
- OBD_FREE(write_page, CFS_PAGE_SIZE);
-
- CDEBUG(D_INFO, "write 1 page synchronously for checking io rc %d\n",rc);
- RETURN(rc);
-}
-EXPORT_SYMBOL(lvfs_check_io_health);
-
-static int __init lvfs_linux_init(void)
-{
- RETURN(0);
-}
-
-static void __exit lvfs_linux_exit(void)
-{
- int leaked;
- ENTRY;
-
- leaked = atomic_read(&obd_memory);
- CDEBUG(leaked ? D_ERROR : D_INFO,
- "obd mem max: %d leaked: %d\n", obd_memmax, leaked);
-
- EXIT;
- return;
-}
-
-MODULE_AUTHOR("Cluster File Systems, Inc. <info@clusterfs.com>");