提交 0ce4cfd4 编写于 作者: C Christoph Hellwig 提交者: Tim Shimmin

[XFS] kill the vfs_fsid and vfs_altfsid members in struct bhv_vfs

vfs_altfsid was just a pointer to mp->m_fixedfsid so we can trivially
replace it with the latter. vfs_fsid also was identical to m_fixedfsid
through rather obfuscated ways so we can kill it as well and simply its
only user.

SGI-PV: 969608
SGI-Modid: xfs-linux-melb:xfs-kern:29506a
Signed-off-by: NChristoph Hellwig <hch@infradead.org>
Signed-off-by: NDavid Chinner <dgc@sgi.com>
Signed-off-by: NTim Shimmin <tes@sgi.com>
上级 745f6919
...@@ -138,7 +138,7 @@ xfs_find_handle( ...@@ -138,7 +138,7 @@ xfs_find_handle(
vp = vn_from_inode(inode); vp = vn_from_inode(inode);
/* now we can grab the fsid */ /* now we can grab the fsid */
memcpy(&handle.ha_fsid, XFS_MTOVFS(XFS_I(inode)->i_mount)->vfs_altfsid, memcpy(&handle.ha_fsid, XFS_I(inode)->i_mount->m_fixedfsid,
sizeof(xfs_fsid_t)); sizeof(xfs_fsid_t));
hsize = sizeof(xfs_fsid_t); hsize = sizeof(xfs_fsid_t);
...@@ -966,7 +966,7 @@ xfs_ioctl( ...@@ -966,7 +966,7 @@ xfs_ioctl(
if (!capable(CAP_SYS_ADMIN)) if (!capable(CAP_SYS_ADMIN))
return -EPERM; return -EPERM;
error = xfs_errortag_clearall(mp); error = xfs_errortag_clearall(mp, 1);
return -error; return -error;
default: default:
......
...@@ -44,8 +44,6 @@ typedef struct bhv_vfs_sync_work { ...@@ -44,8 +44,6 @@ typedef struct bhv_vfs_sync_work {
typedef struct bhv_vfs { typedef struct bhv_vfs {
struct xfs_mount *vfs_mount; struct xfs_mount *vfs_mount;
u_int vfs_flag; /* flags */ u_int vfs_flag; /* flags */
xfs_fsid_t vfs_fsid; /* file system ID */
xfs_fsid_t *vfs_altfsid; /* An ID fixed for life of FS */
struct super_block *vfs_super; /* generic superblock pointer */ struct super_block *vfs_super; /* generic superblock pointer */
struct task_struct *vfs_sync_task; /* generalised sync thread */ struct task_struct *vfs_sync_task; /* generalised sync thread */
bhv_vfs_sync_work_t vfs_sync_work; /* work item for VFS_SYNC */ bhv_vfs_sync_work_t vfs_sync_work; /* work item for VFS_SYNC */
......
...@@ -133,10 +133,14 @@ xfs_errortag_add(int error_tag, xfs_mount_t *mp) ...@@ -133,10 +133,14 @@ xfs_errortag_add(int error_tag, xfs_mount_t *mp)
} }
int int
xfs_errortag_clearall_umount(int64_t fsid, char *fsname, int loud) xfs_errortag_clearall(xfs_mount_t *mp, int loud)
{ {
int i; int64_t fsid;
int cleared = 0; int cleared = 0;
int i;
memcpy(&fsid, mp->m_fixedfsid, sizeof(xfs_fsid_t));
for (i = 0; i < XFS_NUM_INJECT_ERROR; i++) { for (i = 0; i < XFS_NUM_INJECT_ERROR; i++) {
if ((fsid == 0LL || xfs_etest_fsid[i] == fsid) && if ((fsid == 0LL || xfs_etest_fsid[i] == fsid) &&
...@@ -155,20 +159,10 @@ xfs_errortag_clearall_umount(int64_t fsid, char *fsname, int loud) ...@@ -155,20 +159,10 @@ xfs_errortag_clearall_umount(int64_t fsid, char *fsname, int loud)
if (loud || cleared) if (loud || cleared)
cmn_err(CE_WARN, cmn_err(CE_WARN,
"Cleared all XFS error tags for filesystem \"%s\"", "Cleared all XFS error tags for filesystem \"%s\"",
fsname); mp->m_fsname);
return 0; return 0;
} }
int
xfs_errortag_clearall(xfs_mount_t *mp)
{
int64_t fsid;
memcpy(&fsid, mp->m_fixedfsid, sizeof(xfs_fsid_t));
return xfs_errortag_clearall_umount(fsid, mp->m_fsname, 1);
}
#endif /* DEBUG || INDUCE_IO_ERROR */ #endif /* DEBUG || INDUCE_IO_ERROR */
static void static void
......
...@@ -144,12 +144,11 @@ extern void xfs_error_test_init(void); ...@@ -144,12 +144,11 @@ extern void xfs_error_test_init(void);
#endif /* __ANSI_CPP__ */ #endif /* __ANSI_CPP__ */
extern int xfs_errortag_add(int error_tag, xfs_mount_t *mp); extern int xfs_errortag_add(int error_tag, xfs_mount_t *mp);
extern int xfs_errortag_clearall(xfs_mount_t *mp); extern int xfs_errortag_clearall(xfs_mount_t *mp, int loud);
extern int xfs_errortag_clearall_umount(int64_t fsid, char *fsname, int loud);
#else #else
#define XFS_TEST_ERROR(expr, mp, tag, rf) (expr) #define XFS_TEST_ERROR(expr, mp, tag, rf) (expr)
#define xfs_errortag_add(tag, mp) (ENOSYS) #define xfs_errortag_add(tag, mp) (ENOSYS)
#define xfs_errortag_clearall(mp) (ENOSYS) #define xfs_errortag_clearall(mp, loud) (ENOSYS)
#endif /* (DEBUG || INDUCE_IO_ERROR) */ #endif /* (DEBUG || INDUCE_IO_ERROR) */
/* /*
......
...@@ -875,14 +875,11 @@ xfs_mountfs( ...@@ -875,14 +875,11 @@ xfs_mountfs(
*/ */
if ((mfsi_flags & XFS_MFSI_SECOND) == 0 && if ((mfsi_flags & XFS_MFSI_SECOND) == 0 &&
(mp->m_flags & XFS_MOUNT_NOUUID) == 0) { (mp->m_flags & XFS_MOUNT_NOUUID) == 0) {
__uint64_t ret64;
if (xfs_uuid_mount(mp)) { if (xfs_uuid_mount(mp)) {
error = XFS_ERROR(EINVAL); error = XFS_ERROR(EINVAL);
goto error1; goto error1;
} }
uuid_mounted=1; uuid_mounted=1;
ret64 = uuid_hash64(&sbp->sb_uuid);
memcpy(&vfsp->vfs_fsid, &ret64, sizeof(ret64));
} }
/* /*
...@@ -1007,16 +1004,6 @@ xfs_mountfs( ...@@ -1007,16 +1004,6 @@ xfs_mountfs(
*/ */
uuid_getnodeuniq(&sbp->sb_uuid, mp->m_fixedfsid); uuid_getnodeuniq(&sbp->sb_uuid, mp->m_fixedfsid);
/*
* The vfs structure needs to have a file system independent
* way of checking for the invariant file system ID. Since it
* can't look at mount structures it has a pointer to the data
* in the mount structure.
*
* File systems that don't support user level file handles (i.e.
* all of them except for XFS) will leave vfs_altfsid as NULL.
*/
vfsp->vfs_altfsid = (xfs_fsid_t *)mp->m_fixedfsid;
mp->m_dmevmask = 0; /* not persistent; set after each mount */ mp->m_dmevmask = 0; /* not persistent; set after each mount */
xfs_dir_mount(mp); xfs_dir_mount(mp);
...@@ -1206,9 +1193,6 @@ int ...@@ -1206,9 +1193,6 @@ int
xfs_unmountfs(xfs_mount_t *mp, struct cred *cr) xfs_unmountfs(xfs_mount_t *mp, struct cred *cr)
{ {
struct bhv_vfs *vfsp = XFS_MTOVFS(mp); struct bhv_vfs *vfsp = XFS_MTOVFS(mp);
#if defined(DEBUG) || defined(INDUCE_IO_ERROR)
int64_t fsid;
#endif
__uint64_t resblks; __uint64_t resblks;
/* /*
...@@ -1272,11 +1256,7 @@ xfs_unmountfs(xfs_mount_t *mp, struct cred *cr) ...@@ -1272,11 +1256,7 @@ xfs_unmountfs(xfs_mount_t *mp, struct cred *cr)
xfs_uuid_unmount(mp); xfs_uuid_unmount(mp);
#if defined(DEBUG) || defined(INDUCE_IO_ERROR) #if defined(DEBUG) || defined(INDUCE_IO_ERROR)
/* xfs_errortag_clearall(mp, 0);
* clear all error tags on this filesystem
*/
memcpy(&fsid, &vfsp->vfs_fsid, sizeof(int64_t));
xfs_errortag_clearall_umount(fsid, mp->m_fsname, 0);
#endif #endif
XFS_IODONE(vfsp); XFS_IODONE(vfsp);
xfs_mount_free(mp); xfs_mount_free(mp);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册