SCCS-vsn: libexec/lfs_cleanerd/clean.h 5.6
SCCS-vsn: libexec/lfs_cleanerd/cleanerd.c 5.10
*
* %sccs.include.redist.c%
*
*
* %sccs.include.redist.c%
*
- * @(#)clean.h 5.5 (Berkeley) %G%
+ * @(#)clean.h 5.6 (Berkeley) %G%
__BEGIN_DECLS
int dump_summary __P((struct lfs *, SEGSUM *, u_long, daddr_t **));
void err __P((const int, const char *, ...));
__BEGIN_DECLS
int dump_summary __P((struct lfs *, SEGSUM *, u_long, daddr_t **));
void err __P((const int, const char *, ...));
-int fs_getmntinfo __P((struct statfs **, int));
+int fs_getmntinfo __P((struct statfs **, char *, int));
int get __P((int, off_t, void *, size_t));
int get __P((int, off_t, void *, size_t));
-FS_INFO *get_fs_info __P((struct statfs *, int, int));
+FS_INFO *get_fs_info __P((struct statfs *, int));
int lfs_segmapv __P((FS_INFO *, int, caddr_t, BLOCK_INFO **, int *));
int mmap_segment __P((FS_INFO *, int, caddr_t *, int));
void munmap_segment __P((FS_INFO *, caddr_t, int));
int lfs_segmapv __P((FS_INFO *, int, caddr_t, BLOCK_INFO **, int *));
int mmap_segment __P((FS_INFO *, int, caddr_t *, int));
void munmap_segment __P((FS_INFO *, caddr_t, int));
-void reread_fs_info __P((FS_INFO *, int, int));
+void reread_fs_info __P((FS_INFO *, int));
void toss __P((void *, int *, size_t,
int (*)(const void *, const void *, const void *), void *));
void toss __P((void *, int *, size_t,
int (*)(const void *, const void *, const void *), void *));
#endif /* not lint */
#ifndef lint
#endif /* not lint */
#ifndef lint
-static char sccsid[] = "@(#)cleanerd.c 5.9 (Berkeley) %G%";
+static char sccsid[] = "@(#)cleanerd.c 5.10 (Berkeley) %G%";
#endif /* not lint */
#include <sys/param.h>
#endif /* not lint */
#include <sys/param.h>
int argc;
char *argv[];
{
int argc;
char *argv[];
{
struct statfs *lstatfsp; /* file system stats */
struct timeval timeout; /* sleep timeout */
fsid_t fsid;
struct statfs *lstatfsp; /* file system stats */
struct timeval timeout; /* sleep timeout */
fsid_t fsid;
- int count; /* number of file systems */
- int i, nclean;
+ char *fs_name; /* name of filesystem to clean */
+ extern int optind;
cmd_err = 0;
while ((opt = getopt(argc, argv, "sm")) != EOF) {
cmd_err = 0;
while ((opt = getopt(argc, argv, "sm")) != EOF) {
- if (cmd_err)
- err(1, "usage: lfs_cleanerd [-su]");
+ argc -= optind;
+ argv += optind;
+ if (cmd_err || (argc != 1))
+ err(1, "usage: lfs_cleanerd [-sm] fs_name");
+
+ fs_name = argv[0];
signal (SIGINT, sig_report);
signal (SIGUSR1, sig_report);
signal (SIGUSR2, sig_report);
signal (SIGINT, sig_report);
signal (SIGUSR1, sig_report);
signal (SIGUSR2, sig_report);
- count = fs_getmntinfo(&lstatfsp, MOUNT_LFS);
+ if (fs_getmntinfo(&lstatfsp, fs_name, MOUNT_LFS) == 0) {
+ /* didn't find the filesystem */
+ err(1, "lfs_cleanerd: filesystem %s isn't an LFS!", fs_name);
+ }
timeout.tv_sec = 5*60; /* five minutes */
timeout.tv_usec = 0;
fsid.val[0] = 0;
fsid.val[1] = 0;
timeout.tv_sec = 5*60; /* five minutes */
timeout.tv_usec = 0;
fsid.val[0] = 0;
fsid.val[1] = 0;
- for (fsp = get_fs_info(lstatfsp, count, do_mmap); ;
- reread_fs_info(fsp, count, do_mmap)) {
- for (nclean = 0, lfp = fsp, i = 0; i < count; ++lfp, ++i)
- nclean += clean_loop(lfp);
+ for (fsp = get_fs_info(lstatfsp, do_mmap); ;
+ reread_fs_info(fsp, do_mmap)) {
- * If some file systems were actually cleaned, run again
+ * clean the filesystem, and, if it needed cleaning
+ * (i.e. it returned nonzero) try it again
* to make sure that some nasty process hasn't just
* filled the disk system up.
*/
* to make sure that some nasty process hasn't just
* filled the disk system up.
*/