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