Kernel - Completely remove DFLTPHYS
authorFrançois Tigeot <ftigeot@wolfpond.org>
Thu, 22 Mar 2012 18:17:48 +0000 (19:17 +0100)
committerFrançois Tigeot <ftigeot@wolfpond.org>
Fri, 30 Mar 2012 20:23:42 +0000 (22:23 +0200)
* There is no need to have two different macros define the maximum
  allowed IO size for low-level operations; replace DFLTPHYS by
  MAXPHYS in the entire kernel.

* Old drivers typically used DFLTPHYS without a second thought,
  assuming it would always be the same value; they may have hard
  limitations and break if bigger I/O sizes are suddenly used.
  Be sure to explicitely limit their maximum allowed I/O size to
  64KB and keep them working.

17 files changed:
share/examples/scsi_target/scsi_target.c
share/man/man9/physio.9
sys/bus/cam/cam_periph.c
sys/bus/firewire/fwmem.c
sys/cpu/i386/include/param.h
sys/cpu/x86_64/include/param.h
sys/dev/disk/md/md.c
sys/dev/disk/nata/ata-disk.c
sys/dev/disk/nata/atapi-cd.c
sys/dev/disk/nata/atapi-fd.c
sys/dev/disk/nata/atapi-tape.c
sys/dev/raid/ida/ida_disk.c
sys/kern/kern_physio.c
sys/kern/vfs_mount.c
sys/vfs/devfs/devfs_vnops.c
sys/vfs/hpfs/hpfs_vnops.c
sys/vfs/mfs/mfs_vfsops.c

index d59ceda..5867fc0 100644 (file)
@@ -110,7 +110,7 @@ main(int argc, char *argv[])
        targ_fd = file_fd = kq_fd = -1;
        num_ctios = 0;
        sector_size = SECTOR_SIZE;
-       buf_size = DFLTPHYS;
+       buf_size = MAXPHYS;
 
        /* Prepare resource pools */
        TAILQ_INIT(&pending_queue);
index 3a08a86..4cc6b51 100644 (file)
@@ -104,7 +104,7 @@ and
 functions is determined by the maximum I/O size supported by the device
 .Fa dev ,
 otherwise the value of
-.Dv DFLTPHYS
+.Dv MAXPHYS
 is used.
 Until the I/O operation is complete, the calling process or thread is
 put to sleep with the wait message set to
index 49cdf45..4f8b069 100644 (file)
@@ -664,12 +664,12 @@ cam_periph_mapmem(union ccb *ccb, struct cam_periph_map_info *mapinfo)
                 * boundary.
                 */
                if ((lengths[i] +
-                   (((vm_offset_t)(*data_ptrs[i])) & PAGE_MASK)) > DFLTPHYS){
+                   (((vm_offset_t)(*data_ptrs[i])) & PAGE_MASK)) > MAXPHYS){
                        kprintf("cam_periph_mapmem: attempt to map %lu bytes, "
-                              "which is greater than DFLTPHYS(%d)\n",
+                              "which is greater than MAXPHYS(%d)\n",
                               (long)(lengths[i] +
                               (((vm_offset_t)(*data_ptrs[i])) & PAGE_MASK)),
-                              DFLTPHYS);
+                              MAXPHYS);
                        return(E2BIG);
                }
 
index e945a42..2aa5757 100644 (file)
@@ -283,7 +283,7 @@ fwmem_open (struct dev_open_args *ap)
                                                        M_FWMEM, M_WAITOK);
                bcopy(&fwmem_eui64, &fms->eui, sizeof(struct fw_eui64));
                dev->si_drv1 = (void *)fms;
-               dev->si_iosize_max = DFLTPHYS;
+               dev->si_iosize_max = min(MAXPHYS,64*1024);
                fms->refcount = 1;
        }
        if (fwmem_debug)
index cb90e4b..a96628f 100644 (file)
 #ifndef BLKDEV_IOSIZE
 #define BLKDEV_IOSIZE  PAGE_SIZE       /* default block device I/O size */
 #endif
-#define DFLTPHYS       (64 * 1024)     /* default max raw I/O transfer size */
 #define MAXPHYS                (128 * 1024)    /* max raw I/O transfer size */
-#define MAXDUMPPGS     (DFLTPHYS/PAGE_SIZE)
+#define MAXDUMPPGS     (MAXPHYS/PAGE_SIZE)
 
 #define IOPAGES        2               /* pages of i/o permission bitmap */
 #define UPAGES 4               /* pages of u-area */
index d23ae69..95cb18b 100644 (file)
 #ifndef BLKDEV_IOSIZE
 #define BLKDEV_IOSIZE  PAGE_SIZE       /* default block device I/O size */
 #endif
-#define DFLTPHYS       (64 * 1024)     /* default max raw I/O transfer size */
 #define MAXPHYS                (128 * 1024)    /* max raw I/O transfer size */
-#define MAXDUMPPGS     (DFLTPHYS/PAGE_SIZE)
+#define MAXDUMPPGS     (MAXPHYS/PAGE_SIZE)
 
 #define IOPAGES        2               /* pages of i/o permission bitmap */
 #define UPAGES 4               /* pages of u-area */
index c3f6598..b81ad2a 100644 (file)
@@ -404,7 +404,7 @@ mdcreate(unsigned length)
                DEVSTAT_PRIORITY_OTHER);
        sc->dev = disk_create(sc->unit, &sc->disk, &md_ops);
        sc->dev->si_drv1 = sc;
-       sc->dev->si_iosize_max = DFLTPHYS;
+       sc->dev->si_iosize_max = MAXPHYS;
        disk_setdisktype(&sc->disk, "memory");
 
        bzero(&info, sizeof(info));
index 6d42920..fe48d3e 100644 (file)
@@ -154,7 +154,7 @@ ad_attach(device_t dev)
     if (ch->dma)
         cdev->si_iosize_max = ch->dma->max_iosize;
     else
-        cdev->si_iosize_max = DFLTPHYS;
+        cdev->si_iosize_max = min(MAXPHYS,64*1024);
     adp->cdev = cdev;
 
     bzero(&info, sizeof(info));
index c9b8162..7001b2b 100644 (file)
@@ -958,7 +958,7 @@ acd_set_ioparm(device_t dev)
     if (ch->dma)
        cdp->iomax = min(ch->dma->max_iosize, 65534);
     else
-       cdp->iomax = min(DFLTPHYS, 65534);
+       cdp->iomax = min(MAXPHYS, 65534);
 
     cdp->cdev->si_iosize_max = (cdp->iomax / cdp->block_size) * cdp->block_size;
     cdp->cdev->si_bsize_phys = cdp->block_size;
index 1145768..2f11753 100644 (file)
@@ -113,7 +113,7 @@ afd_attach(device_t dev)
     if (ch->dma)
        cdev->si_iosize_max = ch->dma->max_iosize;
     else
-       cdev->si_iosize_max = DFLTPHYS;
+       cdev->si_iosize_max = min(MAXPHYS,64*1024);
     fdp->cdev = cdev;
 
     /* announce we are here */
index 705ae77..614f1ce 100644 (file)
@@ -142,7 +142,7 @@ ast_attach(device_t dev)
     if (ch->dma)
        cdev->si_iosize_max = ch->dma->max_iosize;
     else
-       cdev->si_iosize_max = DFLTPHYS;
+       cdev->si_iosize_max = min(MAXPHYS,64*1024);
     stp->cdev1 = cdev;
     cdev = make_dev(&ast_ops, 2 * device_get_unit(dev) + 1, UID_ROOT,
                    GID_OPERATOR, 0640, "nast%d", device_get_unit(dev));
@@ -151,7 +151,7 @@ ast_attach(device_t dev)
     if (ch->dma)
        cdev->si_iosize_max = ch->dma->max_iosize;
     else
-       cdev->si_iosize_max = DFLTPHYS;
+       cdev->si_iosize_max = min(MAXPHYS,64*1024);
     stp->cdev2 = cdev;
 
     /* announce we are here and ready */
index e067a6f..7caf0ad 100644 (file)
@@ -278,7 +278,7 @@ idad_attach(device_t dev)
        dsk = disk_create(drv->unit, &drv->disk, &id_ops);
 
        dsk->si_drv1 = drv;
-       dsk->si_iosize_max = DFLTPHYS;          /* XXX guess? */
+       dsk->si_iosize_max = min(MAXPHYS,64*1024);              /* XXX guess? */
 
        /*
         * Set disk info, as it appears that all needed data is available already.
index 4bcf743..af3d278 100644 (file)
@@ -50,9 +50,9 @@ physio(cdev_t dev, struct uio *uio, int ioflag)
 
        /* XXX: sanity check */
        if (dev->si_iosize_max < PAGE_SIZE) {
-               kprintf("WARNING: %s si_iosize_max=%d, using DFLTPHYS.\n",
+               kprintf("WARNING: %s si_iosize_max=%d, using MAXPHYS.\n",
                    devtoname(dev), dev->si_iosize_max);
-               dev->si_iosize_max = DFLTPHYS;
+               dev->si_iosize_max = MAXPHYS;
        }
 
        /* Must be a real uio */
index f0a9cdd..e6f02fd 100644 (file)
@@ -337,7 +337,7 @@ mount_init(struct mount *mp)
        TAILQ_INIT(&mp->mnt_jlist);
        mp->mnt_nvnodelistsize = 0;
        mp->mnt_flag = 0;
-       mp->mnt_iosize_max = DFLTPHYS;
+       mp->mnt_iosize_max = MAXPHYS;
 }
 
 /*
index 04638fb..89bca79 100644 (file)
@@ -907,7 +907,7 @@ devfs_spec_open(struct vop_open_args *ap)
         * Make this field valid before any I/O in ->d_open
         */
        if (!dev->si_iosize_max)
-               dev->si_iosize_max = DFLTPHYS;
+               dev->si_iosize_max = MAXPHYS;
 
        if (dev_dflags(dev) & D_TTY)
                vsetflags(vp, VISTTY);
index 10be904..12fa3ac 100644 (file)
@@ -322,7 +322,7 @@ hpfs_read(struct vop_read_args *ap)
                if (error)
                        return (error);
 
-               toread = min(off + resid, min(DFLTPHYS, (runl+1)*DEV_BSIZE));
+               toread = min(off + resid, min(64*1024, (runl+1)*DEV_BSIZE));
                xfersz = (toread + DEV_BSIZE - 1) & ~(DEV_BSIZE - 1);
                dprintf(("hpfs_read: bn: 0x%x (0x%x) toread: 0x%x (0x%x)\n",
                        bn, runl, toread, xfersz));
@@ -391,7 +391,7 @@ hpfs_write(struct vop_write_args *ap)
                        return (error);
 
                towrite = szmin(off + uio->uio_resid,
-                               min(DFLTPHYS, (runl+1)*DEV_BSIZE));
+                               min(64*1024, (runl+1)*DEV_BSIZE));
                xfersz = (towrite + DEV_BSIZE - 1) & ~(DEV_BSIZE - 1);
                dprintf(("hpfs_write: bn: 0x%x (0x%x) towrite: 0x%x (0x%x)\n",
                        bn, runl, towrite, xfersz));
index 1c80dc0..17b5324 100644 (file)
@@ -335,7 +335,7 @@ mfs_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred)
                       "mfs%d", minnum);
        /* It is not clear that these will get initialized otherwise */
        dev->si_bsize_phys = DEV_BSIZE;
-       dev->si_iosize_max = DFLTPHYS;
+       dev->si_iosize_max = MAXPHYS;
        dev->si_drv1 = mfsp;
        mfsp->mfs_baseoff = args.base;
        mfsp->mfs_size = args.size;