| // SPDX-License-Identifier: GPL-2.0 |
| /* |
| * Copyright (c) 2000,2002,2005 Silicon Graphics, Inc. |
| * Copyright (c) 2013 Red Hat, Inc. |
| * All Rights Reserved. |
| */ |
| #include "xfs.h" |
| #include "xfs_fs.h" |
| #include "xfs_shared.h" |
| #include "xfs_format.h" |
| #include "xfs_log_format.h" |
| #include "xfs_trans_resv.h" |
| #include "xfs_mount.h" |
| #include "xfs_inode.h" |
| #include "xfs_dir2.h" |
| #include "xfs_dir2_priv.h" |
| |
| static const struct xfs_dir_ops xfs_dir2_ops = { |
| }; |
| |
| static const struct xfs_dir_ops xfs_dir2_ftype_ops = { |
| }; |
| |
| static const struct xfs_dir_ops xfs_dir3_ops = { |
| }; |
| |
| /* |
| * Return the ops structure according to the current config. If we are passed |
| * an inode, then that overrides the default config we use which is based on |
| * feature bits. |
| */ |
| const struct xfs_dir_ops * |
| xfs_dir_get_ops( |
| struct xfs_mount *mp, |
| struct xfs_inode *dp) |
| { |
| if (dp) |
| return dp->d_ops; |
| if (mp->m_dir_inode_ops) |
| return mp->m_dir_inode_ops; |
| if (xfs_sb_version_hascrc(&mp->m_sb)) |
| return &xfs_dir3_ops; |
| if (xfs_sb_version_hasftype(&mp->m_sb)) |
| return &xfs_dir2_ftype_ops; |
| return &xfs_dir2_ops; |
| } |