freenode/#mezzano - IRC Chatlog
Search
14:49:56
ebrasca
froggey: I am only going to PR 1 off them. Don't know why it have device component.
16:01:18
fittestbits__
I tracked down the device component problem. Filer creates a pathname setting the device field to :wild. I think this is incorrect, it should allow the device field to come from the defaults.
16:03:59
fittestbits__
froggey: I have another topic I'd like to discuss. Parsing pathname strings based on the host seems wrong to me.
16:04:53
fittestbits__
For example, it seems to me that pathname strings should all use the same character to separate directory names.
16:05:42
fittestbits__
I noticed this when I modified ipl.lisp to load from a FAT filesystem instead of from the REMOTE host.
16:08:56
fittestbits__
I've looked through the code and changing remote to use ">" is pretty easy. Make parsename-string and namestring common across all hosts, and use ">". Inside REMOTE generate unix namestrings to send to the file serve as it does now.
16:09:30
fittestbits__
The only issue then is config.lisp - not sure if it's best to change Makefile to generate names with
16:12:34
fittestbits__
As I recall, you're not normally available now, so I'll keep an eye out for your reply later.
16:37:32
fittestbits__
parsename-string would have to have an escape for ">", eg ab\>cd or something like that or you could force it via (setf (pathname-name path) "ab>cd")
16:38:08
fittestbits__
Haven't been working on the tag based file system for a while. I had a minimal implementation running.
16:38:52
fittestbits__
Really want to get back to the USB driver. I'm nearly ready to release a driver for USB 2.
16:41:17
fittestbits__
Not exactly, it supports pathnames for backwards compatibility - there is a mapping from pathnames to file objects. But, the primary means of accessing files is via file objects.
16:42:31
fittestbits__
I really want to add some kind of device reset. I'm having problems with mass storage operations occasionally hanging. I want to be able to reset the device and continue the operation.
16:43:26
fittestbits__
For example, my short file system test works, but when I try to copy a really large directory tree to USB storage, it usually hangs somewhere along the way.
17:10:44
froggey
ok, I've got the filer issue figured out. as fittestbits__ pointed out the filer is incorrectly adding a :wild device component to the pathname when calling directory
17:10:55
froggey
this was a half-baked attempt to support hosts with multiple devices, separate devices should probably appear as distinct tabs, but there aren't any hosts that support devices so it doesn't matter in the end
17:11:12
froggey
a second issue is that the fat and ext4 implementations of directory-using-host are returning pathnames with this :wild device intact (returning wild pathnames like that from directory is a bug). the local & remote file systems always return pathnames with a nil device component
17:17:11
froggey
as for namestring parsing... I'm afraid that's a feature, deliberately quirky and occasionally annoying
17:17:29
froggey
it copied from the behaviour of the lisp machine, where namestrings kept the format of their original systems
17:17:42
froggey
that said, I'm not sure why fat & ext4 use > as the separator instead of \ and / respectively
17:18:28
fittestbits__
So, fat and ext4 directory-with host function should be changed to force the device to NIL rather than passing on the value from the argument to directory-with-host?
17:21:23
ebrasca
froggey: I talked with you about > , if rememver correctly it is because it is Genera style.
17:27:30
froggey
fittestbits__: right, though only if the device is :wild. since a wild device should obviously match against the nil device/no device
17:28:01
froggey
and other non-nil non-wild devices should not match anything, though this bit doesn't look like it's implemented in local/remote
17:28:28
froggey
ebrasca: that's why I picked > for local, which is intended to be the native file system
17:34:35
fittestbits__
I don't understand. The caller to d-u-h is passing in a pathname with device as :wild. Which d-u-h is keeping using the argument pathname as the default when constructing pathnames.
17:35:12
fittestbits__
So, if I force the device to be NIL when constructing the pathnames, I'll lose an actual device if one is passed in.
17:35:43
fittestbits__
So should d-u-h check for a :wild device explicitly and then override with NIL?
17:46:00
fittestbits__
Or maybe if d-u-h is called with :wild device, it should loop over all devices, which for FAT would be just the NIL device? Basically if device is :wild, create a new pathname with device NIL and use that for the defaults.
18:01:20
froggey
yes, that's what I was trying to get at. sorry for not being more clear (still afk)
20:42:38
froggey
fittestbits__: been thinking about sub-page-size physical allocation a bit, would a slab-style allocator work for USB? slab-style as in each pool only allocates one specific size of objects
20:52:07
fittestbits__
That's sort of what I implemented - when I create a buffer pool, I give it a set of block sizes. Then when I allocate a buffer a look for the smallest block size that's large enough to fit the buffer.
20:54:15
fittestbits__
I used sizes: 16 32 128 1024 and 4096 for USB 1 and 32 128 1024 and 4096 for USB 2.
21:06:22
froggey
doesn't quite match up with what I was thinking. each pool would have been for a single size, and code would have to know the appropriate pool to free to