I spent some time trying to implement clustering writes for MSDOSFS
before I could figure out that our cluster_write() functions is not
doing anything but delaying the calls do bawrite().  Awesome!

So I think it's time for this code to die.  The buttons can also die
as we always enable read clustering via bread_cluster().

Next I plan to remove the "struct cluster_info", kern/vfs_cluster.c
and implement a bwrite_cluster() similar to our bread_cluster().

Index: ufs/ffs/ffs_extern.h
===================================================================
RCS file: /cvs/src/sys/ufs/ffs/ffs_extern.h,v
retrieving revision 1.40
diff -u -p -r1.40 ffs_extern.h
--- ufs/ffs/ffs_extern.h        25 Jan 2014 23:31:12 -0000      1.40
+++ ufs/ffs/ffs_extern.h        7 Jan 2016 16:40:46 -0000
@@ -55,8 +55,8 @@
 
 #define FFS_NAMES { \
        { 0, 0 }, \
-       { "doclusterread", CTLTYPE_INT }, \
-       { "doclusterwrite", CTLTYPE_INT }, \
+       { 0, 0 }, \
+       { 0, 0 }, \
        { "doreallocblks", CTLTYPE_INT }, \
        { "doasyncfree", CTLTYPE_INT }, \
        { "max_softdeps", CTLTYPE_INT }, \
Index: ufs/ffs/ffs_vfsops.c
===================================================================
RCS file: /cvs/src/sys/ufs/ffs/ffs_vfsops.c,v
retrieving revision 1.149
diff -u -p -r1.149 ffs_vfsops.c
--- ufs/ffs/ffs_vfsops.c        14 Mar 2015 03:38:52 -0000      1.149
+++ ufs/ffs/ffs_vfsops.c        7 Jan 2016 16:39:57 -0000
@@ -1496,7 +1496,7 @@ int
 ffs_sysctl(int *name, u_int namelen, void *oldp, size_t *oldlenp, void *newp,
     size_t newlen, struct proc *p)
 {
-       extern int doclusterread, doclusterwrite, doreallocblks, doasyncfree;
+       extern int doreallocblks, doasyncfree;
 #ifdef FFS_SOFTUPDATES
        extern int max_softdeps, tickdelay, stat_worklist_push;
        extern int stat_blk_limit_push, stat_ino_limit_push, stat_blk_limit_hit;
@@ -1510,11 +1510,8 @@ ffs_sysctl(int *name, u_int namelen, voi
 
        switch (name[0]) {
        case FFS_CLUSTERREAD:
-               return (sysctl_int(oldp, oldlenp, newp, newlen,
-                   &doclusterread));
        case FFS_CLUSTERWRITE:
-               return (sysctl_int(oldp, oldlenp, newp, newlen,
-                   &doclusterwrite));
+               return (EOPNOTSUPP);
        case FFS_REALLOCBLKS:
                return (sysctl_int(oldp, oldlenp, newp, newlen,
                    &doreallocblks));
Index: ufs/ffs/ffs_vnops.c
===================================================================
RCS file: /cvs/src/sys/ufs/ffs/ffs_vnops.c,v
retrieving revision 1.80
diff -u -p -r1.80 ffs_vnops.c
--- ufs/ffs/ffs_vnops.c 14 Mar 2015 03:38:52 -0000      1.80
+++ ufs/ffs/ffs_vnops.c 7 Jan 2016 16:38:17 -0000
@@ -180,12 +180,6 @@ struct vops ffs_fifovops = {
 #endif /* FIFO */
 
 /*
- * Enabling cluster read/write operations.
- */
-int doclusterread = 1;
-int doclusterwrite = 1;
-
-/*
  * Vnode op for reading.
  */
 int
@@ -381,10 +375,7 @@ ffs_write(void *v)
                if (ioflag & IO_SYNC)
                        (void)bwrite(bp);
                else if (xfersize + blkoffset == fs->fs_bsize) {
-                       if (doclusterwrite)
-                               cluster_write(bp, &ip->i_ci, DIP(ip, size));
-                       else
-                               bawrite(bp);
+                       bawrite(bp);
                } else
                        bdwrite(bp);
 

Reply via email to