[BACK]Return to md.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / dev

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/dev/md.c between version 1.67.2.1 and 1.67.2.2

version 1.67.2.1, 2014/08/20 00:03:35 version 1.67.2.2, 2017/12/03 11:36:58
Line 65  __KERNEL_RCSID(0, "$NetBSD$");
Line 65  __KERNEL_RCSID(0, "$NetBSD$");
   
 #include <dev/md.h>  #include <dev/md.h>
   
   #include "ioconf.h"
 /*  /*
  * The user-space functionality is included by default.   * The user-space functionality is included by default.
  * Use  `options MEMORY_DISK_SERVER=0' to turn it off.   * Use  `options MEMORY_DISK_SERVER=0' to turn it off.
Line 93  struct md_softc {
Line 94  struct md_softc {
 #define sc_size sc_md.md_size  #define sc_size sc_md.md_size
 #define sc_type sc_md.md_type  #define sc_type sc_md.md_type
   
 void    mdattach(int);  
   
 static void     md_attach(device_t, device_t, void *);  static void     md_attach(device_t, device_t, void *);
 static int      md_detach(device_t, int);  static int      md_detach(device_t, int);
   
Line 132  const struct cdevsw md_cdevsw = {
Line 131  const struct cdevsw md_cdevsw = {
         .d_flag = D_DISK          .d_flag = D_DISK
 };  };
   
 static struct dkdriver mddkdriver = { mdstrategy, NULL };  static struct dkdriver mddkdriver = {
           .d_strategy = mdstrategy
   };
   
 extern struct cfdriver md_cd;  
 CFATTACH_DECL3_NEW(md, sizeof(struct md_softc),  CFATTACH_DECL3_NEW(md, sizeof(struct md_softc),
         0, md_attach, md_detach, NULL, NULL, NULL, DVF_DETACH_SHUTDOWN);          0, md_attach, md_detach, NULL, NULL, NULL, DVF_DETACH_SHUTDOWN);
   
Line 413  mdstrategy(struct buf *bp)
Line 413  mdstrategy(struct buf *bp)
   
         sc = device_lookup_private(&md_cd, MD_UNIT(bp->b_dev));          sc = device_lookup_private(&md_cd, MD_UNIT(bp->b_dev));
   
         mutex_enter(&sc->sc_lock);  
   
         if (sc == NULL || sc->sc_type == MD_UNCONFIGURED) {          if (sc == NULL || sc->sc_type == MD_UNCONFIGURED) {
                 bp->b_error = ENXIO;                  bp->b_error = ENXIO;
                 goto done;                  goto done;
         }          }
   
           mutex_enter(&sc->sc_lock);
   
         switch (sc->sc_type) {          switch (sc->sc_type) {
 #if MEMORY_DISK_SERVER  #if MEMORY_DISK_SERVER
         case MD_UMEM_SERVER:          case MD_UMEM_SERVER:
Line 462  mdstrategy(struct buf *bp)
Line 462  mdstrategy(struct buf *bp)
                 bp->b_error = EIO;                  bp->b_error = EIO;
                 break;                  break;
         }          }
           mutex_exit(&sc->sc_lock);
   
  done:   done:
         mutex_exit(&sc->sc_lock);  
   
         biodone(bp);          biodone(bp);
 }  }
Line 474  mdioctl(dev_t dev, u_long cmd, void *dat
Line 474  mdioctl(dev_t dev, u_long cmd, void *dat
 {  {
         struct md_softc *sc;          struct md_softc *sc;
         struct md_conf *umd;          struct md_conf *umd;
         struct disklabel *lp;  
         struct partinfo *pp;  
         int error;          int error;
   
         if ((sc = device_lookup_private(&md_cd, MD_UNIT(dev))) == NULL)          if ((sc = device_lookup_private(&md_cd, MD_UNIT(dev))) == NULL)
Line 483  mdioctl(dev_t dev, u_long cmd, void *dat
Line 481  mdioctl(dev_t dev, u_long cmd, void *dat
   
         mutex_enter(&sc->sc_lock);          mutex_enter(&sc->sc_lock);
         if (sc->sc_type != MD_UNCONFIGURED) {          if (sc->sc_type != MD_UNCONFIGURED) {
                 switch (cmd) {                  error = disk_ioctl(&sc->sc_dkdev, dev, cmd, data, flag, l);
                 case DIOCGDINFO:                  if (error != EPASSTHROUGH) {
                         lp = (struct disklabel *)data;  
                         *lp = *sc->sc_dkdev.dk_label;  
                         mutex_exit(&sc->sc_lock);  
                         return 0;  
   
                 case DIOCGPART:  
                         pp = (struct partinfo *)data;  
                         pp->disklab = sc->sc_dkdev.dk_label;  
                         pp->part =  
                             &sc->sc_dkdev.dk_label->d_partitions[DISKPART(dev)];  
                         mutex_exit(&sc->sc_lock);                          mutex_exit(&sc->sc_lock);
                         return 0;                          return 0;
                 }                  }
Line 539  mdioctl(dev_t dev, u_long cmd, void *dat
Line 527  mdioctl(dev_t dev, u_long cmd, void *dat
 static void  static void
 md_set_disklabel(struct md_softc *sc)  md_set_disklabel(struct md_softc *sc)
 {  {
           struct disk_geom *dg = &sc->sc_dkdev.dk_geom;
         struct disklabel *lp = sc->sc_dkdev.dk_label;          struct disklabel *lp = sc->sc_dkdev.dk_label;
         struct partition *pp;          struct partition *pp;
   
Line 558  md_set_disklabel(struct md_softc *sc)
Line 547  md_set_disklabel(struct md_softc *sc)
         lp->d_secpercyl = lp->d_ntracks*lp->d_nsectors;          lp->d_secpercyl = lp->d_ntracks*lp->d_nsectors;
   
         strncpy(lp->d_typename, md_cd.cd_name, sizeof(lp->d_typename));          strncpy(lp->d_typename, md_cd.cd_name, sizeof(lp->d_typename));
         lp->d_type = DTYPE_UNKNOWN;          lp->d_type = DKTYPE_MD;
         strncpy(lp->d_packname, "fictitious", sizeof(lp->d_packname));          strncpy(lp->d_packname, "fictitious", sizeof(lp->d_packname));
         lp->d_rpm = 3600;          lp->d_rpm = 3600;
         lp->d_interleave = 1;          lp->d_interleave = 1;
Line 578  md_set_disklabel(struct md_softc *sc)
Line 567  md_set_disklabel(struct md_softc *sc)
         lp->d_magic = DISKMAGIC;          lp->d_magic = DISKMAGIC;
         lp->d_magic2 = DISKMAGIC;          lp->d_magic2 = DISKMAGIC;
         lp->d_checksum = dkcksum(lp);          lp->d_checksum = dkcksum(lp);
   
           memset(dg, 0, sizeof(*dg));
   
           dg->dg_secsize = lp->d_secsize;
           dg->dg_secperunit = lp->d_secperunit;
           dg->dg_nsectors = lp->d_nsectors;
           dg->dg_ntracks = lp->d_ntracks = 64;;
           dg->dg_ncylinders = lp->d_ncylinders;
   
           disk_set_info(sc->sc_dev, &sc->sc_dkdev, NULL);
 }  }
   
 /*  /*

Legend:
Removed from v.1.67.2.1  
changed lines
  Added in v.1.67.2.2

CVSweb <webmaster@jp.NetBSD.org>