123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- /*
- * Copyright (c) 2000-2003,2005 Silicon Graphics, Inc.
- * All Rights Reserved.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it would be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
- #include "xfs.h"
- #include "xfs_fs.h"
- #include "xfs_types.h"
- #include "xfs_log.h"
- #include "xfs_trans.h"
- #include "xfs_sb.h"
- #include "xfs_dmapi.h"
- #include "xfs_inum.h"
- #include "xfs_ag.h"
- #include "xfs_mount.h"
- #include "xfs_clnt.h"
- static struct xfs_dmops xfs_dmcore_stub = {
- .xfs_send_data = (xfs_send_data_t)fs_nosys,
- .xfs_send_mmap = (xfs_send_mmap_t)fs_noerr,
- .xfs_send_destroy = (xfs_send_destroy_t)fs_nosys,
- .xfs_send_namesp = (xfs_send_namesp_t)fs_nosys,
- .xfs_send_mount = (xfs_send_mount_t)fs_nosys,
- .xfs_send_unmount = (xfs_send_unmount_t)fs_noerr,
- };
- int
- xfs_dmops_get(struct xfs_mount *mp, struct xfs_mount_args *args)
- {
- if (args->flags & XFSMNT_DMAPI) {
- struct xfs_dmops *ops;
- ops = symbol_get(xfs_dmcore_xfs);
- if (!ops) {
- request_module("xfs_dmapi");
- ops = symbol_get(xfs_dmcore_xfs);
- }
- if (!ops) {
- cmn_err(CE_WARN, "XFS: no dmapi support available.");
- return EINVAL;
- }
- mp->m_dm_ops = ops;
- } else {
- mp->m_dm_ops = &xfs_dmcore_stub;
- }
- return 0;
- }
- void
- xfs_dmops_put(struct xfs_mount *mp)
- {
- if (mp->m_dm_ops != &xfs_dmcore_stub)
- symbol_put(xfs_dmcore_xfs);
- }
|