Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 18 Mar 2012 01:08:49 +0100
From:      Grzegorz Bernacki <gjb@semihalf.com>
To:        Pawel Jakub Dawidek <pjd@FreeBSD.org>
Cc:        svn-src-projects@freebsd.org, Grzegorz Bernacki <gber@FreeBSD.org>, src-committers@freebsd.org
Subject:   Re: svn commit: r233091 - in projects/nand: sbin/fdisk sys/sys
Message-ID:  <4F652791.3020103@semihalf.com>
In-Reply-To: <20120317215156.GJ1340@garage.freebsd.pl>
References:  <201203171710.q2HHAFiq079651@svn.freebsd.org> <20120317215156.GJ1340@garage.freebsd.pl>

next in thread | previous in thread | raw e-mail | index | archive | help
W dniu 2012-03-17 22:51, Pawel Jakub Dawidek pisze:
> On Sat, Mar 17, 2012 at 05:10:15PM +0000, Grzegorz Bernacki wrote:
>> Author: gber
>> Date: Sat Mar 17 17:10:14 2012
>> New Revision: 233091
>> URL: http://svn.freebsd.org/changeset/base/233091
>>
>> Log:
>>    Add ioctl and structures for accessing nand disk devices.
> Grzegorz, this is really wrong way to do it. Neither geom_dev nor
> geom_disk are the places to add NAND specific ioctls.
>
> The DEV GEOM class will forward unknown ioctl to provider's class. In
> this case to the DISK class. The DISK class will also forward ioctls to
> your method. Take a look at the g_disk_ioctl() function. When you
> configure your disk structure between disk_alloc() and disk_create() you
> just need to set d_ioctl field to your ioctl method and handle all
> ioctls specific to your class there. See disk(9) for more info.
>
> Ioctl is also the way you should send/receive metadata (eventually
> BIO_GETATTR) and not to introduce new BIO types that will only be used
> by one GEOM class.
>
> Don't hesitate to discuss this stuff on the freebsd-geom@ mailing list
> to avoid surprises on the commit day.

Thanks for comments. Let me check it one more time and I'll talk with 
you later.

grzesiek
>> Modified: projects/nand/sys/sys/disk.h
>> ==============================================================================
>> --- projects/nand/sys/sys/disk.h	Sat Mar 17 16:40:15 2012	(r233090)
>> +++ projects/nand/sys/sys/disk.h	Sat Mar 17 17:10:14 2012	(r233091)
>> @@ -116,6 +116,32 @@ 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.




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4F652791.3020103>