Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/bouyer-quota2]: src/sys/ufs/ufs Unless the filestystem is mounted MNT_SY...



details:   https://anonhg.NetBSD.org/src/rev/4542c5da6c21
branches:  bouyer-quota2
changeset: 761154:4542c5da6c21
user:      bouyer <bouyer%NetBSD.org@localhost>
date:      Thu Feb 10 16:16:05 2011 +0000

description:
Unless the filestystem is mounted MNT_SYNCHRONOUS, use bdwrite()
to write back updated quota entries.

diffstat:

 sys/ufs/ufs/ufs_quota2.c |  38 +++++++++++++++++++++++++-------------
 1 files changed, 25 insertions(+), 13 deletions(-)

diffs (140 lines):

diff -r cca22a2a586a -r 4542c5da6c21 sys/ufs/ufs/ufs_quota2.c
--- a/sys/ufs/ufs/ufs_quota2.c  Wed Feb 09 21:17:17 2011 +0000
+++ b/sys/ufs/ufs/ufs_quota2.c  Thu Feb 10 16:16:05 2011 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ufs_quota2.c,v 1.1.2.12 2011/02/09 21:17:17 bouyer Exp $ */
+/* $NetBSD: ufs_quota2.c,v 1.1.2.13 2011/02/10 16:16:05 bouyer Exp $ */
 /*-
   * Copyright (c) 2010 Manuel Bouyer
   * All rights reserved.
@@ -28,7 +28,7 @@
   */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ufs_quota2.c,v 1.1.2.12 2011/02/09 21:17:17 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ufs_quota2.c,v 1.1.2.13 2011/02/10 16:16:05 bouyer Exp $");
 
 #include <sys/buf.h>
 #include <sys/param.h>
@@ -63,6 +63,7 @@
  * the locking order is dq_interlock -> dqlock
  */
 
+static int quota2_bwrite(struct mount *, struct buf *);
 static int getinoquota2(struct inode *, int, struct buf **,
     struct quota2_entry **);
 static int getq2h(struct ufsmount *, int, struct buf **,
@@ -77,6 +78,17 @@
 static const char *valtypes[] = INITQLNAMES;
 
 static int
+quota2_bwrite(struct mount *mp, struct buf *bp)
+{
+       if (mp->mnt_flag & MNT_SYNCHRONOUS)
+               return bwrite(bp);
+       else {
+               bdwrite(bp);
+               return 0;
+       }
+}
+
+static int
 getq2h(struct ufsmount *ump, int type,
     struct buf **bpp, struct quota2_header **q2hp, int flags)
 {
@@ -170,12 +182,12 @@
                        /* callback changed parent's pointer, redo */
                        off = ufs_rw64(*offp, needswap);
                        if (bp != hbp && bp != obp)
-                               ret2 = VOP_BWRITE(bp);
+                               ret2 = bwrite(bp);
                } else {
                        /* parent if now current */
                        if (obp != bp && obp != hbp) {
                                if (flags & B_MODIFY)
-                                       ret2 = VOP_BWRITE(obp);
+                                       ret2 = bwrite(obp);
                                else
                                        brelse(obp, 0);
                        }
@@ -192,7 +204,7 @@
        }
        if (obp != hbp) {
                if (flags & B_MODIFY)
-                       ret2 = VOP_BWRITE(obp);
+                       ret2 = bwrite(obp);
                else
                        brelse(obp, 0);
        }
@@ -263,7 +275,7 @@
                uvm_vnp_setsize(vp, ip->i_size);
                quota2_addfreeq2e(q2h, bp->b_data, size, ump->umq2_bsize,
                    needswap);
-               error = VOP_BWRITE(bp);
+               error = bwrite(bp);
                error2 = UFS_UPDATE(vp, NULL, NULL, UPDATE_WAIT);
                if (error || error2) {
                        brelse(hbp, 0);
@@ -297,7 +309,7 @@
        q2e->q2e_next = q2h->q2h_entries[uid & hash_mask];
        q2h->q2h_entries[uid & hash_mask] = ufs_rw64(offset, needswap);
        if (hbp != bp) {
-               VOP_BWRITE(hbp);
+               bwrite(hbp);
        }
        *q2ep = q2e;
        *bpp = bp;
@@ -404,7 +416,7 @@
                        else
                                ncurblks += change;
                        q2vp->q2v_cur = ufs_rw64(ncurblks, needswap);
-                       VOP_BWRITE(bp[i]);
+                       quota2_bwrite(mp, bp[i]);
                        mutex_exit(&dq->dq_interlock);
                }
                return 0;
@@ -479,7 +491,7 @@
                        q2vp = &q2e[i]->q2e_val[vtype];
                        ncurblks = ufs_rw64(q2vp->q2v_cur, needswap);
                        q2vp->q2v_cur = ufs_rw64(ncurblks + change, needswap);
-                       VOP_BWRITE(bp[i]);
+                       quota2_bwrite(mp, bp[i]);
                } else
                        brelse(bp[i], 0);
                mutex_exit(&dq->dq_interlock);
@@ -532,7 +544,7 @@
                }
                quota2_ufs_rwq2e(&q2e, &q2h->q2h_defentry, needswap);
                mutex_exit(&dqlock);
-               VOP_BWRITE(bp);
+               quota2_bwrite(ump->um_mountp, bp);
                goto out_wapbl;
        }
 
@@ -560,7 +572,7 @@
                goto out_il;
        }
        quota2_ufs_rwq2e(&q2e, q2ep, needswap);
-       VOP_BWRITE(bp);
+       quota2_bwrite(ump->um_mountp, bp);
 
 out_il:
        mutex_exit(&dq->dq_interlock);
@@ -660,7 +672,7 @@
                            q2e.q2e_val[i].q2v_grace;
                        q2ep->q2e_val[i].q2v_time = 0;
                }
-               VOP_BWRITE(bp);
+               quota2_bwrite(ump->um_mountp, bp);
                goto out_wapbl;
        }
        /* we can free it. release bp so we can walk the list */
@@ -678,7 +690,7 @@
            &q2h->q2h_entries[id & hash_mask], B_MODIFY, &c,
            dq2clear_callback);
 
-       VOP_BWRITE(hbp);
+       bwrite(hbp);
 
 out_dqlock:
        mutex_exit(&dqlock);



Home | Main Index | Thread Index | Old Index