mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-27 09:02:06 +00:00
[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: Christoph Hellwig <hch@infradead.org> Signed-off-by: David Chinner <dgc@sgi.com> Signed-off-by: Tim Shimmin <tes@sgi.com>
This commit is contained in:
parent
745f691912
commit
0ce4cfd4f7
5 changed files with 12 additions and 41 deletions
|
@ -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(
|
||||||
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 {
|
||||||
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
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);
|
||||||
#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(
|
||||||
*/
|
*/
|
||||||
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(
|
||||||
*/
|
*/
|
||||||
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
|
||||||
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)
|
||||||
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);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue