]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
sync with recent kernel changes, noop for userspace.
authorNathan Scott <nathans@sgi.com>
Mon, 3 Jun 2002 01:47:28 +0000 (01:47 +0000)
committerNathan Scott <nathans@sgi.com>
Mon, 3 Jun 2002 01:47:28 +0000 (01:47 +0000)
include/xfs_mount.h
libxfs/xfs.h
libxfs/xfs_alloc.c
libxfs/xfs_bmap.c
libxfs/xfs_ialloc.c
libxlog/xfs_log_recover.c

index 05379c208300960e806d44aa3077d3542d526530..e3e83da066bb2604085a1d33eb47b942338216e0 100644 (file)
@@ -257,7 +257,7 @@ typedef struct xfs_mount {
        uint                    m_bm_maxlevels[2]; /* XFS_BM_MAXLEVELS */
        uint                    m_in_maxlevels; /* XFS_IN_MAXLEVELS */
        struct xfs_perag        *m_perag;       /* per-ag accounting info */
-       mrlock_t                m_peraglock;    /* lock for m_perag (pointer) */
+       struct rw_semaphore     m_peraglock;    /* lock for m_perag (pointer) */
        sema_t                  m_growlock;     /* growfs mutex */
        int                     m_fixedfsid[2]; /* unchanged for life of FS */
        uint                    m_dmevmask;     /* DMI events for this FS */
index e4f08804341c55bc4b5145b45c0f31fb49aeab1f..ddc46343e740af4be3cdfb654b33d251471e4df0 100644 (file)
@@ -253,6 +253,8 @@ typedef struct { dev_t dev; } buftarg_t;
 #define XFS_MOUNT_NOALIGN              0       /* ignored in userspace */
 #define XFS_MOUNT_32BITINODES          0x1     /* enforce in userspace */
 #define XFS_ILOCK_EXCL                 0
+#define down_read(a)                   ((void) 0)
+#define up_read(a)                     ((void) 0)
 #define mrlock(a,b,c)                  ((void) 0)
 #define mraccunlock(a)                 ((void) 0)
 #define mrunlock(a)                    ((void) 0)
index d811e8f268a4fc07548fd3f130ca39c1f4ac169c..15aacfb92f7f9250c84ae41bbd8b48d69dcaa0e0 100644 (file)
@@ -2226,7 +2226,7 @@ xfs_alloc_vextent(
                 * These three force us into a single a.g.
                 */
                args->agno = XFS_FSB_TO_AGNO(mp, args->fsbno);
-               mrlock(&mp->m_peraglock, MR_ACCESS, PINOD);
+               down_read(&mp->m_peraglock);
                args->pag = &mp->m_perag[args->agno];
                minleft = args->minleft;
                args->minleft = 0;
@@ -2237,14 +2237,14 @@ xfs_alloc_vextent(
                        goto error0;
                }
                if (!args->agbp) {
-                       mrunlock(&mp->m_peraglock);
+                       up_read(&mp->m_peraglock);
                        TRACE_ALLOC("noagbp", args);
                        break;
                }
                args->agbno = XFS_FSB_TO_AGBNO(mp, args->fsbno);
                if ((error = xfs_alloc_ag_vextent(args)))
                        goto error0;
-               mrunlock(&mp->m_peraglock);
+               up_read(&mp->m_peraglock);
                break;
        case XFS_ALLOCTYPE_START_BNO:
                /*
@@ -2293,7 +2293,7 @@ xfs_alloc_vextent(
                 * Loop over allocation groups twice; first time with
                 * trylock set, second time without.
                 */
-               mrlock(&mp->m_peraglock, MR_ACCESS, PINOD);
+               down_read(&mp->m_peraglock);
                for (;;) {
                        args->pag = &mp->m_perag[args->agno];
                        if ((error = xfs_alloc_fix_freelist(args, flags))) {
@@ -2335,7 +2335,7 @@ xfs_alloc_vextent(
                                }
                        }
                }
-               mrunlock(&mp->m_peraglock);
+               up_read(&mp->m_peraglock);
                if (bump_rotor || (type == XFS_ALLOCTYPE_ANY_AG))
                        mp->m_agfrotor = (args->agno + 1) % mp->m_sb.sb_agcount;
                break;
@@ -2357,7 +2357,7 @@ xfs_alloc_vextent(
        }
        return 0;
 error0:
-       mrunlock(&mp->m_peraglock);
+       up_read(&mp->m_peraglock);
        return error;
 }
 
@@ -2386,7 +2386,7 @@ xfs_free_extent(
        args.agbno = XFS_FSB_TO_AGBNO(args.mp, bno);
        args.alignment = 1;
        args.minlen = args.minleft = args.minalignslop = 0;
-       mrlock(&args.mp->m_peraglock, MR_ACCESS, PINOD);
+       down_read(&args.mp->m_peraglock);
        args.pag = &args.mp->m_perag[args.agno];
        if ((error = xfs_alloc_fix_freelist(&args, 0)))
                goto error0;
@@ -2398,6 +2398,6 @@ xfs_free_extent(
        error = xfs_free_ag_extent(tp, args.agbp, args.agno, args.agbno,
                len, 0);
 error0:
-       mrunlock(&args.mp->m_peraglock);
+       up_read(&args.mp->m_peraglock);
        return error;
 }
index 71bbaeaa1b1df102ffc8a90cab09a88ce8da27fa..d20eccbb660852d1ede23c1dcce698c065e67bdf 100644 (file)
@@ -2044,13 +2044,13 @@ xfs_bmap_alloc(
                         */
                        startag = ag = XFS_FSB_TO_AGNO(mp, args.fsbno);
                        notinit = 0;
-                       mrlock(&mp->m_peraglock, MR_ACCESS, PINOD);
+                       down_read(&mp->m_peraglock);
                        while (blen < ap->alen) {
                                pag = &mp->m_perag[ag];
                                if (!pag->pagf_init &&
                                    (error = xfs_alloc_pagf_init(mp, args.tp,
                                            ag, XFS_ALLOC_FLAG_TRYLOCK))) {
-                                       mrunlock(&mp->m_peraglock);
+                                       up_read(&mp->m_peraglock);
                                        return error;
                                }
                                /*
@@ -2073,7 +2073,7 @@ xfs_bmap_alloc(
                                if (ag == startag)
                                        break;
                        }
-                       mrunlock(&mp->m_peraglock);
+                       up_read(&mp->m_peraglock);
                        /* 
                         * Since the above loop did a BUF_TRYLOCK, it is
                         * possible that there is space for this request.
index 49aa376111461990dd8ed70e36e13001f633fcb9..0d91cf68340c3e74f9a25e8c5a8f39502c6ceb22 100644 (file)
@@ -299,9 +299,9 @@ xfs_ialloc_ag_alloc(
        }
        INT_MOD(agi->agi_count, ARCH_CONVERT, newlen);
        INT_MOD(agi->agi_freecount, ARCH_CONVERT, newlen);
-       mraccess(&args.mp->m_peraglock);
+       down_read(&args.mp->m_peraglock);
        args.mp->m_perag[INT_GET(agi->agi_seqno, ARCH_CONVERT)].pagi_freecount += newlen;
-       mraccunlock(&args.mp->m_peraglock);
+       up_read(&args.mp->m_peraglock);
        INT_SET(agi->agi_newino, ARCH_CONVERT, newino);
        /*
         * Insert records describing the new inode chunk into the btree.
@@ -385,7 +385,7 @@ xfs_ialloc_ag_select(
         */
        agno = pagno;
        flags = XFS_ALLOC_FLAG_TRYLOCK;
-       mraccess(&mp->m_peraglock);
+       down_read(&mp->m_peraglock);
        for (;;) {
                pag = &mp->m_perag[agno];
                if (!pag->pagi_init) {
@@ -426,7 +426,7 @@ xfs_ialloc_ag_select(
                                        agbp = NULL;
                                        goto nextag;
                                }
-                               mraccunlock(&mp->m_peraglock);
+                               up_read(&mp->m_peraglock);
                                return agbp;
                        }
                }
@@ -439,7 +439,7 @@ nextag:
                 * down.
                 */
                if (XFS_FORCED_SHUTDOWN(mp)) {
-                       mraccunlock(&mp->m_peraglock);
+                       up_read(&mp->m_peraglock);
                        return (xfs_buf_t *)0;
                }
                agno++;
@@ -447,7 +447,7 @@ nextag:
                        agno = 0;
                if (agno == pagno) {
                        if (flags == 0) {
-                               mraccunlock(&mp->m_peraglock);
+                               up_read(&mp->m_peraglock);
                                return (xfs_buf_t *)0;
                        }
                        flags = 0;
@@ -614,13 +614,13 @@ nextag:
                        *inop = NULLFSINO;
                        return noroom ? ENOSPC : 0;
                }
-               mraccess(&mp->m_peraglock);
+               down_read(&mp->m_peraglock);
                if (mp->m_perag[tagno].pagi_inodeok == 0) {
-                       mraccunlock(&mp->m_peraglock);
+                       up_read(&mp->m_peraglock);
                        goto nextag;
                }
                error = xfs_ialloc_read_agi(mp, tp, tagno, &agbp);
-               mraccunlock(&mp->m_peraglock);
+               up_read(&mp->m_peraglock);
                if (error)
                        goto nextag;
                agi = XFS_BUF_TO_AGI(agbp);
@@ -868,9 +868,9 @@ nextag:
                goto error0;
        INT_MOD(agi->agi_freecount, ARCH_CONVERT, -1);
        xfs_ialloc_log_agi(tp, agbp, XFS_AGI_FREECOUNT);
-       mraccess(&mp->m_peraglock);
+       down_read(&mp->m_peraglock);
        mp->m_perag[tagno].pagi_freecount--;
-       mraccunlock(&mp->m_peraglock);
+       up_read(&mp->m_peraglock);
 #ifdef DEBUG
        if (cur->bc_nlevels == 1) {
                int     freecount = 0;
@@ -988,9 +988,9 @@ xfs_dilocate(
                offset_agbno = agbno & mp->m_inoalign_mask;
                chunk_agbno = agbno - offset_agbno;
        } else {
-               mraccess(&mp->m_peraglock);
+               down_read(&mp->m_peraglock);
                error = xfs_ialloc_read_agi(mp, tp, agno, &agbp);
-               mraccunlock(&mp->m_peraglock);
+               up_read(&mp->m_peraglock);
                if (error) {
 #ifdef DEBUG
                        xfs_fs_cmn_err(CE_ALERT, mp, "xfs_dilocate: "
index 85c32d87f7a69371d502c1d65c943487113f991b..774ad59952dc0cf14f044ab317778ca177eae911 100644 (file)
@@ -113,7 +113,7 @@ xlog_find_verify_cycle( xlog_t              *log,
                for (j = 0; j < bcount; j++) {
                        cycle = GET_CYCLE(buf, ARCH_CONVERT);
                        if (cycle == stop_on_cycle_no) {
-                               *new_blk = i;
+                               *new_blk = i+j;
                                goto out;
                        }