Hi Xiang and Alan,

Thanks for the info Xiang.

Alan, the first error returns ENOTTY as littlefs sends a BIOC_FLUSH command
in IOCTL which isn't supported in NAND, and Xiang has provided the
explanation on why that is fine.

As for the -ENOSPC, I'm looking into it currently. It *should *have enough
space, considering I have the virtual device with a size of 2MB + (some
bytes for the respective spare areas in blocks) and that is way more than
theoretical requirement of littlefs, so I'll need to debug it further.

PS: I was also having a problem with the "vi" utility in the sim, any
movement keys (or anything I typed in general) that I typed were echoed out
the the terminal as well, so I fixed that using termios to disable echo
(and enable back on quitting vi).

BR,
SP

On Sat, 24 Feb, 2024, 20:18 Alan C. Assis, <acas...@gmail.com> wrote:

> Hi Saurav,
>
> I suggest you to verifyr these errors first:
>
> *Command: 1293 | BIOC_FLUSH: 1293*
> Error Upper! ioctl | -25
>
> #define ENOTTY 25 /* Not a typewriter */
>
> So, you can search where this ENOTTY is returned.
>
> Some to:
>
> nx_mount: ERROR: Bind method failed: -28
> nsh: mount: mount failed: 28
>
> #define ENOSPC 28 /* No space left on device */
>
> BR,
>
> Alan
>
> On Sat, Feb 24, 2024 at 9:28 AM Saurav Pal <resyfer....@gmail.com> wrote:
>
> > Hi all,
> >
> > I've been trying to develop a device simulator for the NAND flash (in the
> > sim).
> >
> > A short note on what this does is create a virtual NAND flash (from RAM)
> > and provide a driver, as well as a wrapper around the upper half (which
> for
> > now, does nothing extra). This helps in creating records of
> > reads/writes/erases (in a separate file) for testing and statistics
> > purposes.
> >
> > Since littlefs is one of the supported filesystems on MTD devices, I
> tried
> > to use it to test mount but it tries to use an ioctl with BIOC_FLUSH in
> the
> > format process, which is not supported as far as code in
> > drivers/mtd/mtd_nand.c go.
> >
> > *Should that be something that the NAND driver should support?*
> >
> > Here are the logs of that process, the first ioctl is for MTDIOC_GEOMETRY
> > (which is supported), and second for BIOC_FLUSH (in *bold*):
> >
> > nuttx ➤ make && ./nuttx
> > LD:  nuttx
> > login: admin
> > password:
> > User Logged-in!
> > nsh> ls /dev
> > /dev:
> >  console
> >  gpio0
> >  gpio1
> >  gpio2
> >  gpio3
> >  loop
> >  null
> >  oneshot
> >  ram0
> >  ram1
> >  ram2
> >  zero
> > nsh> mtddev
> > Size:   2097152 B
> >
> > Pages:    4096
> > Blocks:     33
> > Writing...Done
> > Driver running
> > nsh> ls /dev
> > /dev:
> >  console
> >  gpio0
> >  gpio1
> >  gpio2
> >  gpio3
> >  loop
> >  mtd
> >  null
> >  oneshot
> >  ram0
> >  ram1
> >  ram2
> >  zero
> > nsh> mount -t littlefs -o forceformat /dev/mtd /hi
> > Upper! ioctl
> > Command: 1537 | BIOC_FLUSH: 1293
> > Upper! bread
> > Page 128
> > Lower! rawread : Page 128
> > Lower! rawread : Page 129
> > Lower! rawread : Page 130
> > Lower! rawread : Page 131
> > Upper! erase
> > Lower! eraseblock : Block 0
> > Upper! bread
> > Page 0
> > Lower! rawread : Page 0
> > Lower! rawread : Page 1
> > Lower! rawread : Page 2
> > Lower! rawread : Page 3
> > Upper! bread
> > Page 4
> > Lower! rawread : Page 4
> > Lower! rawread : Page 5
> > Lower! rawread : Page 6
> > Lower! rawread : Page 7
> > Upper! bwrite
> > Lower! rawwrite : Page 0
> > Lower! rawwrite : Page 1
> > Lower! rawwrite : Page 2
> > Lower! rawwrite : Page 3
> > Upper! ioctl
> > *Command: 1293 | BIOC_FLUSH: 1293*
> > Error Upper! ioctl | -25
> > Upper! bread
> > Page 0
> > Lower! rawread : Page 0
> > Lower! rawread : Page 1
> > Lower! rawread : Page 2
> > Lower! rawread : Page 3
> > nx_mount: ERROR: Bind method failed: -28
> > nsh: mount: mount failed: 28
> > nsh>
> >
> > The logs with "Upper!" refer to the upper half of the driver being
> > executed, and same for the lower, and the pages are numbered from the
> start
> > of the device (ie. (block << LOG_N_BLOCKS_PER_PAGE) + page_in_block)).
> >
> > Regards,
> > SP
> >
>

Reply via email to