The custom semaphores used by softdep always use infinite tsleep(9).  So
remove the `timo' argument from sema_init() and switch the implementation
to tsleep_nsec(9) and INFSLP.

ok?

Index: ufs/ffs/ffs_softdep.c
===================================================================
RCS file: /cvs/src/sys/ufs/ffs/ffs_softdep.c,v
retrieving revision 1.146
diff -u -p -r1.146 ffs_softdep.c
--- ufs/ffs/ffs_softdep.c       4 Jan 2020 16:22:36 -0000       1.146
+++ ufs/ffs/ffs_softdep.c       11 Jan 2020 14:40:55 -0000
@@ -289,21 +289,19 @@ struct sema {
        pid_t   holder;
        char    *name;
        int     prio;
-       int     timo;
 };
-STATIC void sema_init(struct sema *, char *, int, int);
+STATIC void sema_init(struct sema *, char *, int);
 STATIC int sema_get(struct sema *, struct lockit *);
 STATIC void sema_release(struct sema *);
 
 STATIC void
-sema_init(struct sema *semap, char *name, int prio, int timo)
+sema_init(struct sema *semap, char *name, int prio)
 {
 
        semap->holder = -1;
        semap->value = 0;
        semap->name = name;
        semap->prio = prio;
-       semap->timo = timo;
 }
 
 STATIC int
@@ -314,7 +312,7 @@ sema_get(struct sema *semap, struct lock
        if (semap->value++ > 0) {
                if (interlock != NULL)
                        s = FREE_LOCK_INTERLOCKED(interlock);
-               tsleep((caddr_t)semap, semap->prio, semap->name, semap->timo);
+               tsleep_nsec(semap, semap->prio, semap->name, INFSLP);
                if (interlock != NULL) {
                        ACQUIRE_LOCK_INTERLOCKED(interlock, s);
                        FREE_LOCK(interlock);
@@ -1176,12 +1174,12 @@ softdep_initialize(void)
        arc4random_buf(&softdep_hashkey, sizeof(softdep_hashkey));
        pagedep_hashtbl = hashinit(initialvnodes / 5, M_PAGEDEP, M_WAITOK,
            &pagedep_hash);
-       sema_init(&pagedep_in_progress, "pagedep", PRIBIO, 0);
+       sema_init(&pagedep_in_progress, "pagedep", PRIBIO);
        inodedep_hashtbl = hashinit(initialvnodes, M_INODEDEP, M_WAITOK,
            &inodedep_hash);
-       sema_init(&inodedep_in_progress, "inodedep", PRIBIO, 0);
+       sema_init(&inodedep_in_progress, "inodedep", PRIBIO);
        newblk_hashtbl = hashinit(64, M_NEWBLK, M_WAITOK, &newblk_hash);
-       sema_init(&newblk_in_progress, "newblk", PRIBIO, 0);
+       sema_init(&newblk_in_progress, "newblk", PRIBIO);
        timeout_set(&proc_waiting_timeout, pause_timer, NULL);
        pool_init(&pagedep_pool, sizeof(struct pagedep), 0, IPL_NONE,
            PR_WAITOK, "pagedep", NULL);

Reply via email to