From owner-svn-src-projects@FreeBSD.ORG Sat Apr 7 03:50:25 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6F0FB1065670; Sat, 7 Apr 2012 03:50:25 +0000 (UTC) (envelope-from gber@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 583A58FC0C; Sat, 7 Apr 2012 03:50:25 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q373oPs0040564; Sat, 7 Apr 2012 03:50:25 GMT (envelope-from gber@svn.freebsd.org) Received: (from gber@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q373oPb8040554; Sat, 7 Apr 2012 03:50:25 GMT (envelope-from gber@svn.freebsd.org) Message-Id: <201204070350.q373oPb8040554@svn.freebsd.org> From: Grzegorz Bernacki Date: Sat, 7 Apr 2012 03:50:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r233972 - in projects/nand/sys: conf geom sys X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Apr 2012 03:50:25 -0000 Author: gber Date: Sat Apr 7 03:50:24 2012 New Revision: 233972 URL: http://svn.freebsd.org/changeset/base/233972 Log: geom: revert changes in generic sys/geom/* and sys/sys/* - remove BIO_READOOB and BIO_WRITEOOB - access nand metadata via ioctl Obtained from: Semihalf Supported by: FreeBSD Foundation, Juniper Networks Deleted: projects/nand/sys/geom/geom_nand.c projects/nand/sys/geom/geom_nand.h Modified: projects/nand/sys/conf/files projects/nand/sys/geom/geom.h projects/nand/sys/geom/geom_dev.c projects/nand/sys/geom/geom_disk.c projects/nand/sys/geom/geom_disk.h projects/nand/sys/geom/geom_io.c projects/nand/sys/geom/geom_slice.c projects/nand/sys/sys/bio.h projects/nand/sys/sys/disk.h Modified: projects/nand/sys/conf/files ============================================================================== --- projects/nand/sys/conf/files Sat Apr 7 03:28:46 2012 (r233971) +++ projects/nand/sys/conf/files Sat Apr 7 03:50:24 2012 (r233972) @@ -2384,7 +2384,6 @@ geom/geom_kern.c standard geom/geom_map.c optional geom_map geom/geom_mbr.c optional geom_mbr geom/geom_mbr_enc.c optional geom_mbr -geom/geom_nand.c optional nand geom/geom_pc98.c optional geom_pc98 geom/geom_pc98_enc.c optional geom_pc98 geom/geom_redboot.c optional geom_redboot Modified: projects/nand/sys/geom/geom.h ============================================================================== --- projects/nand/sys/geom/geom.h Sat Apr 7 03:28:46 2012 (r233971) +++ projects/nand/sys/geom/geom.h Sat Apr 7 03:50:24 2012 (r233972) @@ -309,8 +309,6 @@ struct bio *g_alloc_bio(void); void * g_read_data(struct g_consumer *cp, off_t offset, off_t length, int *error); int g_write_data(struct g_consumer *cp, off_t offset, void *ptr, off_t length); int g_delete_data(struct g_consumer *cp, off_t offset, off_t length); -void *g_read_oob(struct g_consumer *cp, off_t offset, off_t length, int *error); -int g_write_oob(struct g_consumer *cp, off_t offset, void *ptr, off_t length); void g_print_bio(struct bio *bp); /* geom_kern.c / geom_kernsim.c */ Modified: projects/nand/sys/geom/geom_dev.c ============================================================================== --- projects/nand/sys/geom/geom_dev.c Sat Apr 7 03:28:46 2012 (r233971) +++ projects/nand/sys/geom/geom_dev.c Sat Apr 7 03:50:24 2012 (r233972) @@ -311,10 +311,8 @@ g_dev_ioctl(struct cdev *dev, u_long cmd struct g_consumer *cp; struct g_provider *pp; struct g_kerneldump kd; - struct nand_oob_request *nand_req; off_t offset, length, chunk; int i, error; - void *buf; u_int u; gp = dev->si_drv1; @@ -347,16 +345,6 @@ g_dev_ioctl(struct cdev *dev, u_long cmd if (error == 0 && *(u_int *)data == 0) error = ENOENT; break; - case DIOCNOOBSIZE: - error = g_io_getattr("NAND::oobsize", cp, &i, data); - if (error == 0 && *(u_int *)data == 0) - error = ENOENT; - break; - case DIOCNBLKSIZE: - error = g_io_getattr("NAND::blocksize", cp, &i, data); - if (error == 0 && *(u_int *)data == 0) - error = ENOENT; - break; case DIOCGFRONTSTUFF: error = g_io_getattr("GEOM::frontstuff", cp, &i, data); break; @@ -408,28 +396,6 @@ g_dev_ioctl(struct cdev *dev, u_long cmd break; } break; - case DIOCNREADOOB: - nand_req = (struct nand_oob_request *)data; - - buf = g_read_oob(cp, nand_req->offset, nand_req->length, - &error); - if (error) - break; - - error = copyout(buf, nand_req->ubuf, nand_req->length); - break; - case DIOCNWRITEOOB: - nand_req = (struct nand_oob_request *)data; - - buf = g_malloc(nand_req->length, M_WAITOK); - error = copyin(nand_req->ubuf, buf, nand_req->length); - - if (error) - break; - - error = g_write_oob(cp, nand_req->offset, buf, - nand_req->length); - break; case DIOCGIDENT: error = g_io_getattr("GEOM::ident", cp, &i, data); break; Modified: projects/nand/sys/geom/geom_disk.c ============================================================================== --- projects/nand/sys/geom/geom_disk.c Sat Apr 7 03:28:46 2012 (r233971) +++ projects/nand/sys/geom/geom_disk.c Sat Apr 7 03:50:24 2012 (r233972) @@ -368,10 +368,6 @@ g_disk_start(struct bio *bp) break; else if (g_handleattr_int(bp, "GEOM::fwheads", dp->d_fwheads)) break; - else if (g_handleattr_int(bp, "NAND::oobsize", dp->n_oobsize)) - break; - else if (g_handleattr_int(bp, "NAND::pagesize", dp->n_pagesize)) - break; else if (g_handleattr_off_t(bp, "GEOM::frontstuff", 0)) break; else if (g_handleattr_str(bp, "GEOM::ident", dp->d_ident)) Modified: projects/nand/sys/geom/geom_disk.h ============================================================================== --- projects/nand/sys/geom/geom_disk.h Sat Apr 7 03:28:46 2012 (r233971) +++ projects/nand/sys/geom/geom_disk.h Sat Apr 7 03:50:24 2012 (r233972) @@ -86,8 +86,6 @@ struct disk { u_int d_maxsize; u_int d_stripeoffset; u_int d_stripesize; - u_int n_oobsize; - u_int n_pagesize; char d_ident[DISK_IDENT_SIZE]; char d_descr[DISK_IDENT_SIZE]; uint16_t d_hba_vendor; Modified: projects/nand/sys/geom/geom_io.c ============================================================================== --- projects/nand/sys/geom/geom_io.c Sat Apr 7 03:28:46 2012 (r233971) +++ projects/nand/sys/geom/geom_io.c Sat Apr 7 03:50:24 2012 (r233972) @@ -289,13 +289,11 @@ g_io_check(struct bio *bp) /* Fail if access counters dont allow the operation */ switch(bp->bio_cmd) { case BIO_READ: - case BIO_READOOB: case BIO_GETATTR: if (cp->acr == 0) return (EPERM); break; case BIO_WRITE: - case BIO_WRITEOOB: case BIO_DELETE: case BIO_FLUSH: if (cp->acw == 0) @@ -761,52 +759,6 @@ g_delete_data(struct g_consumer *cp, off return (error); } -void * -g_read_oob(struct g_consumer *cp, off_t offset, off_t length, int *error) -{ - struct bio *bp; - void *ptr; - int errorc; - - bp = g_alloc_bio(); - bp->bio_cmd = BIO_READOOB; - bp->bio_done = NULL; - bp->bio_offset = offset; - bp->bio_length = length; - ptr = g_malloc(length, M_WAITOK); - bp->bio_data = ptr; - g_io_request(bp, cp); - errorc = biowait(bp, "groob"); - if (error != NULL) - *error = errorc; - - g_destroy_bio(bp); - if (errorc) { - g_free(ptr); - ptr = NULL; - } - - return (ptr); -} - -int -g_write_oob(struct g_consumer *cp, off_t offset, void *ptr, off_t length) -{ - struct bio *bp; - int error; - - bp = g_alloc_bio(); - bp->bio_cmd = BIO_WRITEOOB; - bp->bio_done = NULL; - bp->bio_offset = offset; - bp->bio_length = length; - bp->bio_data = ptr; - g_io_request(bp, cp); - error = biowait(bp, "gwoob"); - g_destroy_bio(bp); - return (error); -} - void g_print_bio(struct bio *bp) { Modified: projects/nand/sys/geom/geom_slice.c ============================================================================== --- projects/nand/sys/geom/geom_slice.c Sat Apr 7 03:28:46 2012 (r233971) +++ projects/nand/sys/geom/geom_slice.c Sat Apr 7 03:50:24 2012 (r233972) @@ -215,9 +215,7 @@ g_slice_start(struct bio *bp) gsl = &gsp->slices[idx]; switch(bp->bio_cmd) { case BIO_READ: - case BIO_READOOB: case BIO_WRITE: - case BIO_WRITEOOB: case BIO_DELETE: if (bp->bio_offset > gsl->length) { g_io_deliver(bp, EINVAL); /* XXX: EWHAT ? */ @@ -235,10 +233,8 @@ g_slice_start(struct bio *bp) if (t + bp->bio_length <= ghp->offset) continue; switch(bp->bio_cmd) { - case BIO_READ: - case BIO_READOOB: idx = ghp->ract; break; - case BIO_WRITE: - case BIO_WRITEOOB: idx = ghp->wact; break; + case BIO_READ: idx = ghp->ract; break; + case BIO_WRITE: idx = ghp->wact; break; case BIO_DELETE: idx = ghp->dact; break; } switch(idx) { Modified: projects/nand/sys/sys/bio.h ============================================================================== --- projects/nand/sys/sys/bio.h Sat Apr 7 03:28:46 2012 (r233971) +++ projects/nand/sys/sys/bio.h Sat Apr 7 03:50:24 2012 (r233972) @@ -46,19 +46,15 @@ #define BIO_DELETE 0x04 #define BIO_GETATTR 0x08 #define BIO_FLUSH 0x10 -#define BIO_CMD0 0x20 -#define BIO_CMD1 0x40 +#define BIO_CMD0 0x20 /* Available for local hacks */ +#define BIO_CMD1 0x40 /* Available for local hacks */ #define BIO_CMD2 0x80 /* Available for local hacks */ -#define BIO_READOOB BIO_CMD0 -#define BIO_WRITEOOB BIO_CMD1 - /* bio_flags */ #define BIO_ERROR 0x01 #define BIO_DONE 0x02 #define BIO_ONQUEUE 0x04 #define BIO_ORDERED 0x08 -#define BIO_ECC 0x10 #ifdef _KERNEL struct disk; @@ -69,7 +65,6 @@ struct bio; typedef void bio_task_t(void *); - /* * The bio structure describes an I/O operation in the kernel. */ @@ -79,10 +74,7 @@ struct bio { uint8_t bio_cflags; /* Private use by the consumer. */ uint8_t bio_pflags; /* Private use by the provider. */ struct cdev *bio_dev; /* Device to do I/O on. */ - union { - struct disk *bio_disk; /* Valid below geom_disk.c only */ - struct gnand *bio_nand; /* Valid below geom_disk.c only */ - } bio_source; + struct disk *bio_disk; /* Valid below geom_disk.c only */ off_t bio_offset; /* Offset into file. */ long bio_bcount; /* Valid bytes in buffer. */ caddr_t bio_data; /* Memory, superblocks, indirect etc. */ @@ -120,24 +112,6 @@ struct bio { daddr_t bio_pblkno; /* physical block number */ }; -#define bio_disk bio_source.bio_disk -#define bio_nand bio_source.bio_nand - -/* bio_cmd */ -#define BIO_READ 0x01 -#define BIO_WRITE 0x02 -#define BIO_DELETE 0x04 -#define BIO_GETATTR 0x08 -#define BIO_FLUSH 0x10 -#define BIO_CMD0 0x20 /* Available for local hacks */ -#define BIO_CMD1 0x40 /* Available for local hacks */ -#define BIO_CMD2 0x80 /* Available for local hacks */ - -/* bio_flags */ -#define BIO_ERROR 0x01 -#define BIO_DONE 0x02 -#define BIO_ONQUEUE 0x04 - struct uio; struct devstat; Modified: projects/nand/sys/sys/disk.h ============================================================================== --- projects/nand/sys/sys/disk.h Sat Apr 7 03:28:46 2012 (r233971) +++ projects/nand/sys/sys/disk.h Sat Apr 7 03:50:24 2012 (r233972) @@ -116,32 +116,6 @@ void disk_err(struct bio *bp, const char * This should be a multiple of the sector size. */ -#define DIOCNOOBSIZE _IOR('d', 141, u_int) /* Get oob size */ - /*- - * Get the OOB area size of NAND flash device. - */ - -#define DIOCNBLKSIZE _IOR('d', 142, u_int) /* Get block size */ - /* - - * Get the block size of NAND flash device. - */ - -struct nand_oob_request { - off_t offset; /* offset in bytes, page-aligned */ - off_t length; /* length */ - void * ubuf; /* buffer supplied by user */ -}; - -#define DIOCNREADOOB _IOW('d', 143, struct nand_oob_request) /* Read OOB area */ - /*- - * Read page OOB area from NAND flash device. - */ - -#define DIOCNWRITEOOB _IOW('d', 144, struct nand_oob_request) /* Write OOB area */ - /*- - * Write page OOB area to NAND flash device. - */ - #define DIOCGPHYSPATH _IOR('d', 141, char[MAXPATHLEN]) /* * Get a string defining the physical path for a given provider.