svn commit: r233972 - in projects/nand/sys: conf geom sys

Grzegorz Bernacki gber at FreeBSD.org
Sat Apr 7 03:50:25 UTC 2012


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.


More information about the svn-src-projects mailing list