On Thu, Jan 07, 2016 at 05:56:17PM +0100, Martin Pieuchot wrote:
> 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().

im running this and the world keeps spinning. i havent noticed a
regression, but i also havent looked for one or an improvement.

i like the simplification. ok by me.

> 
> 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