git: 9acea1640411 - main - ffs: retire unused fsckpid mount option
Robert Wing
rew at FreeBSD.org
Sat Oct 2 23:17:33 UTC 2021
The branch main has been updated by rew:
URL: https://cgit.FreeBSD.org/src/commit/?id=9acea16404117f2f54475640ff036c12130707d8
commit 9acea16404117f2f54475640ff036c12130707d8
Author: Robert Wing <rew at FreeBSD.org>
AuthorDate: 2021-10-02 23:11:40 +0000
Commit: Robert Wing <rew at FreeBSD.org>
CommitDate: 2021-10-02 23:11:40 +0000
ffs: retire unused fsckpid mount option
The fsckpid mount option was introduced in 927a12ae16433b50 along with a
couple sysctl's to support SU+J with snapshots. However, those sysctl's
were never used and eventually removed in f2620e9ceb3ede02.
There are no in-tree consumers of this mount option.
Reviewed by: mckusick, kib
Differential Revision: https://reviews.freebsd.org/D32015
---
sys/ufs/ffs/ffs_alloc.c | 3 +-
sys/ufs/ffs/ffs_inode.c | 2 +-
sys/ufs/ffs/ffs_vfsops.c | 117 ++---------------------------------------------
sys/ufs/ufs/ufsmount.h | 2 -
4 files changed, 6 insertions(+), 118 deletions(-)
diff --git a/sys/ufs/ffs/ffs_alloc.c b/sys/ufs/ffs/ffs_alloc.c
index 771377b7cefc..6a262a798d1b 100644
--- a/sys/ufs/ffs/ffs_alloc.c
+++ b/sys/ufs/ffs/ffs_alloc.c
@@ -3236,8 +3236,7 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS)
return (EINVAL);
}
ump = VFSTOUFS(mp);
- if ((mp->mnt_flag & MNT_RDONLY) &&
- ump->um_fsckpid != td->td_proc->p_pid) {
+ if (mp->mnt_flag & MNT_RDONLY) {
vn_finished_write(mp);
fdrop(fp, td);
return (EROFS);
diff --git a/sys/ufs/ffs/ffs_inode.c b/sys/ufs/ffs/ffs_inode.c
index 1159259fb2b6..17a9dceeb654 100644
--- a/sys/ufs/ffs/ffs_inode.c
+++ b/sys/ufs/ffs/ffs_inode.c
@@ -132,7 +132,7 @@ ffs_update(vp, waitfor)
if (waitfor)
ip->i_flag &= ~(IN_SIZEMOD | IN_IBLKDATA);
fs = ITOFS(ip);
- if (fs->fs_ronly && ITOUMP(ip)->um_fsckpid == 0)
+ if (fs->fs_ronly)
return (0);
/*
* If we are updating a snapshot and another process is currently
diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c
index fd3b2689c2ee..94afcae05ba6 100644
--- a/sys/ufs/ffs/ffs_vfsops.c
+++ b/sys/ufs/ffs/ffs_vfsops.c
@@ -147,7 +147,7 @@ static struct buf_ops ffs_ops = {
*/
static const char *ffs_opts[] = { "acls", "async", "noatime", "noclusterr",
"noclusterw", "noexec", "export", "force", "from", "groupquota",
- "multilabel", "nfsv4acls", "fsckpid", "snapshot", "nosuid", "suiddir",
+ "multilabel", "nfsv4acls", "snapshot", "nosuid", "suiddir",
"nosymfollow", "sync", "union", "userquota", "untrusted", NULL };
static int ffs_enxio_enable = 1;
@@ -347,7 +347,6 @@ ffs_mount(struct mount *mp)
struct thread *td;
struct ufsmount *ump = NULL;
struct fs *fs;
- pid_t fsckpid = 0;
int error, error1, flags;
uint64_t mntorflags, saved_mnt_flag;
accmode_t accmode;
@@ -395,31 +394,6 @@ ffs_mount(struct mount *mp)
vfs_deleteopt(mp->mnt_opt, "snapshot");
}
- if (vfs_getopt(mp->mnt_optnew, "fsckpid", NULL, NULL) == 0 &&
- vfs_scanopt(mp->mnt_optnew, "fsckpid", "%d", &fsckpid) == 1) {
- /*
- * Once we have set the restricted PID, do not
- * persist "fsckpid" in the options list.
- */
- vfs_deleteopt(mp->mnt_optnew, "fsckpid");
- vfs_deleteopt(mp->mnt_opt, "fsckpid");
- if (mp->mnt_flag & MNT_UPDATE) {
- if (VFSTOUFS(mp)->um_fs->fs_ronly == 0 &&
- vfs_flagopt(mp->mnt_optnew, "ro", NULL, 0) == 0) {
- vfs_mount_error(mp,
- "Checker enable: Must be read-only");
- return (EINVAL);
- }
- } else if (vfs_flagopt(mp->mnt_optnew, "ro", NULL, 0) == 0) {
- vfs_mount_error(mp,
- "Checker enable: Must be read-only");
- return (EINVAL);
- }
- /* Set to -1 if we are done */
- if (fsckpid == 0)
- fsckpid = -1;
- }
-
if (vfs_getopt(mp->mnt_optnew, "nfsv4acls", NULL, NULL) == 0) {
if (mntorflags & MNT_ACLS) {
vfs_mount_error(mp,
@@ -443,18 +417,6 @@ ffs_mount(struct mount *mp)
fs = ump->um_fs;
odevvp = ump->um_odevvp;
devvp = ump->um_devvp;
- if (fsckpid == -1 && ump->um_fsckpid > 0) {
- if ((error = ffs_flushfiles(mp, WRITECLOSE, td)) != 0 ||
- (error = ffs_sbupdate(ump, MNT_WAIT, 0)) != 0)
- return (error);
- g_topology_lock();
- /*
- * Return to normal read-only mode.
- */
- error = g_access(ump->um_cp, 0, -1, 0);
- g_topology_unlock();
- ump->um_fsckpid = 0;
- }
if (fs->fs_ronly == 0 &&
vfs_flagopt(mp->mnt_optnew, "ro", NULL, 0)) {
/*
@@ -542,14 +504,6 @@ ffs_mount(struct mount *mp)
return (error);
if (fs->fs_ronly &&
!vfs_flagopt(mp->mnt_optnew, "ro", NULL, 0)) {
- /*
- * If we are running a checker, do not allow upgrade.
- */
- if (ump->um_fsckpid > 0) {
- vfs_mount_error(mp,
- "Active checker, cannot upgrade to write");
- return (EINVAL);
- }
/*
* If upgrade to read-write by non-root, then verify
* that user has necessary permissions on the device.
@@ -659,39 +613,6 @@ ffs_mount(struct mount *mp)
mp->mnt_flag |= MNT_NFS4ACLS;
MNT_IUNLOCK(mp);
}
- /*
- * If this is a request from fsck to clean up the filesystem,
- * then allow the specified pid to proceed.
- */
- if (fsckpid > 0) {
- if (ump->um_fsckpid != 0) {
- vfs_mount_error(mp,
- "Active checker already running on %s",
- fs->fs_fsmnt);
- return (EINVAL);
- }
- KASSERT(MOUNTEDSOFTDEP(mp) == 0,
- ("soft updates enabled on read-only file system"));
- g_topology_lock();
- /*
- * Request write access.
- */
- error = g_access(ump->um_cp, 0, 1, 0);
- g_topology_unlock();
- if (error) {
- vfs_mount_error(mp,
- "Checker activation failed on %s",
- fs->fs_fsmnt);
- return (error);
- }
- ump->um_fsckpid = fsckpid;
- if (fs->fs_snapinum[0] != 0)
- ffs_snapshot_mount(mp);
- fs->fs_mtime = time_second;
- fs->fs_fmod = 1;
- fs->fs_clean = 0;
- (void) ffs_sbupdate(ump, MNT_WAIT, 0);
- }
/*
* If this is a snapshot request, take the snapshot.
@@ -771,29 +692,6 @@ ffs_mount(struct mount *mp)
vrele(devvp);
return (error);
}
- if (fsckpid > 0) {
- KASSERT(MOUNTEDSOFTDEP(mp) == 0,
- ("soft updates enabled on read-only file system"));
- ump = VFSTOUFS(mp);
- fs = ump->um_fs;
- g_topology_lock();
- /*
- * Request write access.
- */
- error = g_access(ump->um_cp, 0, 1, 0);
- g_topology_unlock();
- if (error) {
- printf("WARNING: %s: Checker activation "
- "failed\n", fs->fs_fsmnt);
- } else {
- ump->um_fsckpid = fsckpid;
- if (fs->fs_snapinum[0] != 0)
- ffs_snapshot_mount(mp);
- fs->fs_mtime = time_second;
- fs->fs_clean = 0;
- (void) ffs_sbupdate(ump, MNT_WAIT, 0);
- }
- }
}
MNT_ILOCK(mp);
@@ -1510,7 +1408,7 @@ ffs_unmount(mp, mntflags)
if (MOUNTEDSOFTDEP(mp))
softdep_unmount(mp);
MPASS(ump->um_softdep == NULL);
- if (fs->fs_ronly == 0 || ump->um_fsckpid > 0) {
+ if (fs->fs_ronly == 0) {
fs->fs_clean = fs->fs_flags & (FS_UNCLEAN|FS_NEEDSFSCK) ? 0 : 1;
error = ffs_sbupdate(ump, MNT_WAIT, 0);
if (ffs_fsfail_cleanup(ump, error))
@@ -1530,13 +1428,6 @@ ffs_unmount(mp, mntflags)
free (ump->um_trimhash, M_TRIM);
}
g_topology_lock();
- if (ump->um_fsckpid > 0) {
- /*
- * Return to normal read-only mode.
- */
- error = g_access(ump->um_cp, 0, -1, 0);
- ump->um_fsckpid = 0;
- }
g_vfs_close(ump->um_cp);
g_topology_unlock();
BO_LOCK(&ump->um_odevvp->v_bufobj);
@@ -1800,7 +1691,7 @@ ffs_sync(mp, waitfor)
suspended = 0;
td = curthread;
fs = ump->um_fs;
- if (fs->fs_fmod != 0 && fs->fs_ronly != 0 && ump->um_fsckpid == 0)
+ if (fs->fs_fmod != 0 && fs->fs_ronly != 0)
panic("%s: ffs_sync: modification on read-only filesystem",
fs->fs_fsmnt);
if (waitfor == MNT_LAZY) {
@@ -2272,7 +2163,7 @@ ffs_sbupdate(ump, waitfor, suspended)
fs = ump->um_fs;
if (fs->fs_ronly == 1 &&
(ump->um_mountp->mnt_flag & (MNT_RDONLY | MNT_UPDATE)) !=
- (MNT_RDONLY | MNT_UPDATE) && ump->um_fsckpid == 0)
+ (MNT_RDONLY | MNT_UPDATE))
panic("ffs_sbupdate: write read-only filesystem");
/*
* We use the superblock's buf to serialize calls to ffs_sbupdate().
diff --git a/sys/ufs/ufs/ufsmount.h b/sys/ufs/ufs/ufsmount.h
index da9a22127125..a1a2cdb3f741 100644
--- a/sys/ufs/ufs/ufsmount.h
+++ b/sys/ufs/ufs/ufsmount.h
@@ -82,7 +82,6 @@ LIST_HEAD(trimlist_hashhead, ffs_blkfree_trim_params);
* i - ufsmount interlock (UFS_LOCK / UFS_UNLOCK)
* q - associated quota file is locked
* r - ref to parent mount structure is held (vfs_busy / vfs_unbusy)
- * u - managed by user process fsck_ufs
*/
struct ufsmount {
struct mount *um_mountp; /* (r) filesystem vfs struct */
@@ -102,7 +101,6 @@ struct ufsmount {
struct mtx um_lock; /* (c) Protects ufsmount & fs */
struct sx um_checkpath_lock; /* (c) Protects ufs_checkpath()
result */
- pid_t um_fsckpid; /* (u) PID can do fsck sysctl */
struct mount_softdeps *um_softdep; /* (c) softdep mgmt structure */
struct vnode *um_quotas[MAXQUOTAS]; /* (q) pointer to quota files */
struct ucred *um_cred[MAXQUOTAS]; /* (q) quota file access cred */
More information about the dev-commits-src-all
mailing list