klange changed the topic of #osdev to: Operating System Development || Don't ask to ask---just ask! || For 3+ LoC, use a pastebin (for example https://gist.github.com/) || Stats + Old logs: http://osdev-logs.qzx.com New Logs: https://libera.irclog.whitequark.org/osdev || Visit https://wiki.osdev.org and https://forum.osdev.org || Books: https://wiki.osdev.org/Books
<geist> right. that's because the kernel has two different drivers, from what i understand
<klange> It's hard to separate the specification from the implementation...
<geist> but that seems to be just an implementation detail
sortie has quit [Quit: Leaving]
<clever> it sounds like its a mix of better choices during block allocation (applies to all), and on-disk format features
<gog> 4 has structural differences
<geist> but hidden behind feature bits in every case, as far as i can tell
<gog> yeah i think so
<clever> and those features can be disabled at mkfs time
<gog> so as long as you don't enable the non-backward compatible features i think the 2/3 driver can read 4
<gog> but perhaps not write
<clever> but if you disable enough, what even makes it different from ext2 or ext3?
<gog> filesystem of theseus
<clever> lol
<klange> _No, I think Theseus uses FAT32..._
* klange will go sit in the corner
<geist> non sparse, up front allocate superblock and inode tables!
<geist> i remember back in the day that would take a lot of time to initialize once you got into a few GB or so
<gog> aghhh i remember installing win2k on a brand new 120GB disk and it was before fast NTFS format
<gog> horrible
<clever> geist: yeah, i saw something about mkfs being lazy, and just not initializing half the disk, and recording that fact somewhere
<geist> yah that was a feature that came along
<clever> there is also the flex_bg thing
<clever> which i think just shoves the metadata out of the way, to make room for bigger extents
<geist> and the sparse superblock was an early feature, otherwise iirc there's a copy of the superblock on *every* allocation group
<geist> whichi s fine when you're dealing with tens of MB of disk
<geist> but gets out of hand real fast
<clever> i dont remember which FS it is, but i heard of another one, where basically none of the metadata had a fixed location, asside from the superblock
<geist> almost all fses are like that
<clever> and its fatal flaw, was a disk image of the same FS, could be found by fsck, and confuse the heck out of it
<gog> reiserfs
<geist> was going to point out that extN and FAT fit the general old skool pattern of preallocating a lot of space for things
<gog> you can't store an image containinga reiserfs on a reiserfs volume
<clever> i think extN at least has several groups, and each group has its own inode list and free block bitmap
<geist> right, there's a lot of flexibility to allocating inodes/etc from anywhere on the disk, and most 'good' fses do something like that, but the recovery issue is a thing
<clever> but the sparse stuff, lets it delay initializing
<gog> remember when reiser4 was just around the corner and then dude killed his wife
<geist> befs for example looks to be in a similar vein to extN/FFS/UFS/etc where there are inodes and dirs and whatnot
<geist> but the inode # is literally just a block address of the inode
<geist> so no preallocated table. nice, but also dangerous
<geist> but generally speaking nice
<clever> i think i also figured out how to trigger non-initialized extents in ext4
<geist> + plus journalling meant the whole 'recover bad inodes' is not as big of a deal
<clever> the fallocate syscall
<geist> NTFS solves it by putting all of the inodes in the $MFT file, which is itself allocated from the volume (recursively)
<clever> it does exactly what you would expect, and allocates extents to the file, but doesnt zero-fill them
<geist> so at least the range of the MFT is known
<clever> and the metadata says they are only allocated, so reads still return 0
<geist> but dynamic
<clever> i was also thinking, about converting between FS's
<clever> if you scan the metadata, and then generate your own intermediate DB, holding the entire directory/file tree, and the block#'s for every file
<clever> then you can re-create metadata around that, without moving the data blocks
<geist> yep. case in point: in place conversion of ext4 -> btrfs
<geist> it simply builds a btrfs volume in the space of the existing ext4, but using extents that refer to existing stuff
ElectronApps has joined #osdev
<clever> with the right plugin system, it should be possible to convert between any fs, as long as it doesnt use things like inplace encryption
<clever> or compression
<geist> it even builds a RO snapshot subvolume of the ext4 and you can start modifying the volume and still keep the old copy
<clever> i can see how zfs might be able to create the same thing, just move a few superblocks out of the way, and then create a zvol pointing to all of the blocks that where in-use
<clever> and boom, you now have an ext4 image, inside a zvol
<clever> sharing blocks between a zvol and an fs though, is a more costly problem
pretty_dumm_guy has quit [Quit: WeeChat 3.2]
<clever> for zfs snapshots, the shared blocks are handled entirely by time range stuff
<clever> every block has a transction# of when it was created, and every snapshot has a transction#
nyah has quit [Ping timeout: 244 seconds]
adachristine has joined #osdev
<clever> and then by just checking some range bounds on the age of a block, you can know if its in a given snapshot, and/or the latest version of the object
gog has quit [Quit: bye]
<clever> but cross-dataset sharing, and reusing a block that was deleted, requires the dedup hashtable, that is far more costly
<clever> since it must maintain refcounts
CryptoDavid has quit [Quit: Connection closed for inactivity]
AssKoala has quit [Ping timeout: 252 seconds]
freakazoid343 has joined #osdev
freakazoid343 has quit [Ping timeout: 245 seconds]
adachristine has quit [Remote host closed the connection]
gog has joined #osdev
regreg has quit [Ping timeout: 240 seconds]
isaacwoods has quit [Quit: WeeChat 3.2]
dude12312414 has joined #osdev
ZipCPU has quit [Quit: ZNC 1.7.5+deb4 - https://znc.in]
regreg has joined #osdev
ZipCPU has joined #osdev
gog has quit [Remote host closed the connection]
AssKoala has joined #osdev
<geist> yep. though lots of COW filesystems deal with that head on
notsogood has joined #osdev
dutch has quit [Quit: WeeChat 3.2]
dutch has joined #osdev
freakazoid12345 has joined #osdev
<notsogood> So the axi buses , there are bunch of control circuitry registers, over southbirdhe northbridge lanes, dma programs itself by pulling a channel to there , those times masters can be cpu and dma, and slaves their targets, the default two parallel channels means pipelined parallel execution, while cpu is master, the slave will be dma target device to downstream, and while dma is master upstream and downstream devices are supported over it's channel, the
<notsogood> bus access is controlled by 4bit byte write strobes which is vulnerable to attacks to leave the channel open while dma did not intend it, for instance when dma controller upstream device is being corrupted with an attack vector, but not giving access to this channels in parallel allowing to read all the circuit, will hinder the performance in very low-power cross clock domain pipeline which has no vcc and vdd lines anymore, this is all wired logic you
<notsogood> know, it is very fast logic and very low power. hence the more securer pipeline more resembles like half duplex master slaving, where you never just give any access to sense things, cause when there is only one active channel the attack vector sensing logic is yes behind a security latch.
notsogood was kicked from #osdev by Mutabah [notsogood]
srjek has quit [Ping timeout: 245 seconds]
merdoar2 has joined #osdev
flx-- has joined #osdev
flx- has quit [Ping timeout: 245 seconds]
merdoar2 was kicked from #osdev by Mutabah [Ban evasion]
<kazinsal> Regrettably I just took a look through the solanum source and for some reason +q does not effectively act as a shadowban.
<kazinsal> I wonder if that would be worth attempting to write a pull request for.
<Mutabah> Might have extbans that can mute
<kazinsal> My thought being that a shadowban would probably extend the effective life of the ban
sts-q has quit [Ping timeout: 240 seconds]
<Affliction> They'll still see the setting of +q
<Affliction> What about in combination with +z?
<Affliction> since +m and +z result on only ops being able to see messages from unvoiced - and the unvoiced don't get an error. Does that also work with +q?
<kazinsal> Looked at that as well, and nope. Solanum just checks is_banned on message send and if it returns and you're not an ircop it fires off a "no u" message
<kazinsal> is_banned returns what level of ban matches so it can do is_banned() == CHFL_BAN to smack down join attempts with +b but still allow +q to join
<kazinsal> And I don't see any good hooks for an effective shadowban module
<Mutabah> I'm pretty sure he watches the logs anyway
<kazinsal> Almost assuredly.
<kazinsal> Unfortunately improvements in IRC technology are not the cure to this issue.
<moon-child> make it an invite-only channel
<Mutabah> Too much overhead
<kazinsal> Heh, +r, then make it the ircops' issue when he clogs up the registration system with VPSes
skipwich has quit [Quit: DISCONNECT]
sts-q has joined #osdev
skipwich has joined #osdev
Plex has joined #osdev
AssKoala has quit [Ping timeout: 250 seconds]
<klange> We were +r on The Other Network for a while, on staff recommendation over bot spam.
<Mutabah> I'm hesitant to put +r on for this sort of issue
<Mutabah> It adds too much friction for newbies, without really mitigating the issue
<klange> It is a Very Big Hammer.
<Mutabah> same for +m or anything else that requires active op involvement
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
smeso has quit [Quit: smeso]
smeso has joined #osdev
AssKoala has joined #osdev
dude12312414 has joined #osdev
dude12312414 has quit [Client Quit]
zaquest has quit [Ping timeout: 252 seconds]
ElectronApps has quit [Read error: Connection reset by peer]
regreg has quit [Ping timeout: 252 seconds]
bradd has quit [Remote host closed the connection]
andreas303 has quit [Remote host closed the connection]
ckie has quit [Quit: off I go~]
PyR3X_ has joined #osdev
andreas3- has joined #osdev
ckie has joined #osdev
PyR3X has quit [Ping timeout: 252 seconds]
bradd has joined #osdev
AssKoala has quit [Ping timeout: 252 seconds]
Plex has quit [Remote host closed the connection]
mctpyt has quit [Ping timeout: 240 seconds]
tacco has joined #osdev
jstoker has quit [Quit: *disappears in a cloud of bits*]
jstoker has joined #osdev
<klange> Recovered my old bad ATA driver and my MBR partition mapper. The ATA driver is pretty terrible. The MBR partition mapper is usable. Figure I should bang out at least some read-only drivers for a few simple filestems and at least try to get the read-only ext2 driver working again, if not figure out the remaining write issues...
<sham1> Now to rewrite the ATA driver I presume
<klange> Nah, gonna shelf it - need an AHCI driver and I'll try to make that one less shit.
<klange> Mostly just not wanting to completely abandon the old stuff since it's mostly source compatible to the new kernel.
<geist> yah all ATA drivers end up looking bad too
<geist> it's just what happens with that sort of era of tech
tacco has quit []
diamondbond has joined #osdev
gog has joined #osdev
pretty_dumm_guy has joined #osdev
Mids_IRC has joined #osdev
regreg has joined #osdev
diamondbond has quit [Quit: Leaving]
sortie has joined #osdev
GeDaMo has joined #osdev
mhall has joined #osdev
<Mids_IRC> Hello, I came across a problem I could not solve on my own. I'm trying to disable EHCI and enable its three UHCI companions. It works but there seems to be an anomalous fourth device with the same class screwing with my enumeration
<Mids_IRC> Specifically on Bochs; here's a snippet of the log: https://paste.ee/p/ssapZ
<bslsk05> ​paste.ee: Paste.ee - View paste ssapZ
<Mids_IRC> Lines 29, 33, 37, show the UHCI controllers #1, #2, #3 respectively
<Mids_IRC> But on line 1 there's another device, with the same class, subclass and interface
<Mids_IRC> Looking up the device ID online, it's different from the others: "PIIX3 USB" as opposed to "UHCI Controller #x"
<Mids_IRC> How am I supposed to differentiate between them other than by hardcoding device IDs?
<Mutabah> Does it matter?
<Mids_IRC> Yes, because it seems to be inconsistent with what the EHCI spec says. According to PORTROUTE, port 1 should be attached to the lowest numbered UHCI controller, but it's not
<Mids_IRC> Well, it is, because "PIIX3 USB" is apparently not a UHCI controller, despite the class being identical
<Mutabah> I think you need to also check the ProgIF field too
<klange> 030c is all USB controllers, ProgIF will tell you the host controller type
<klange> eg, 0x30 for xhci
eau has joined #osdev
LittleFox has quit [Quit: ZNC 1.8.2+deb2+b1 - https://znc.in]
LittleFox has joined #osdev
LittleFox has quit [Remote host closed the connection]
LittleFox has joined #osdev
<Mids_IRC> ProgIF is identical, too; they're all class C, subclass 3, ProgIF 0
<klange> Looks like that PIIX one is the default UHCI controller Bochs would normally provide, and the later three are from the EHCI device.
<klange> 0x24cd is the actual EHCI controller
<Mids_IRC> I guess it wouldn't matter if I were to support all ports, but I was only planning on supporting one for now
<Mids_IRC> I'll just go through all UHCI devices until I find a device on the other end
<Mids_IRC> Still, this ends up making PORTROUTE mostly useless
flx-- has quit [Ping timeout: 250 seconds]
<klange> > I'm trying to disable EHCI and enable its three UHCI companions.
<klange> The default should be that the EHCI controller is not responsible for the UHCI ports?
<Mids_IRC> It's a naughty BIOS
<gog> :3
regreg has quit [Ping timeout: 245 seconds]
ElectronApps has joined #osdev
vdamewood has joined #osdev
sortie has quit [Ping timeout: 244 seconds]
sortie has joined #osdev
zaquest has joined #osdev
dennis95 has joined #osdev
dennis95 has quit [Read error: Connection reset by peer]
dennis95 has joined #osdev
Mids_IRC has quit [Quit: Mids_IRC]
AssKoala has joined #osdev
isaacwoods has joined #osdev
<klange> added group ids and supplementary group lists, finally... https://klange.dev/s/Screenshot%20from%202021-08-31%2020-50-45.png
notgoodgo has joined #osdev
<notgoodgo> Most abusive and discusting fools full in this channel, my friends have been talking about how stupid guys random british are , too big nations, shocking disgustion honestly, fucking americans also so nasty stuff, untolerable and uninformative parrots, only bully bully and there is not much to back it up either, honestly like total stalking fecalists, maybe the time to get some of my powers also to get involved. this is allready so incredible in the
<notgoodgo> negative way, that it today shocks, what shit do you pull daily basis really, how can a human being poison ones and others thoughts so bad in groups, how is that you have courage to call me mental and even talk about me like this?
<notgoodgo> go to hell honestly
notgoodgo was banned on #osdev by klange [*!*rediserve@14.56.25.*]
notgoodgo was kicked from #osdev by klange [notgoodgo]
AssKoala has quit [Ping timeout: 252 seconds]
<klange> Don't have the full set of expected tools, or all the xsi functions, but I think I've done it sufficiently correctly for login groups to work and for filesystem permissions to work as they should?
dutch has quit [Quit: WeeChat 3.2]
dutch has joined #osdev
happy-dude has quit [Quit: Bridge terminating on SIGTERM]
hgoel[m] has quit [Quit: Bridge terminating on SIGTERM]
paulusASol has quit [Quit: Bridge terminating on SIGTERM]
paulusASol has joined #osdev
happy-dude has joined #osdev
hgoel[m] has joined #osdev
ahalaney has joined #osdev
dude12312414 has joined #osdev
<sortie> klange, cool stuff!
<sortie> Def my groups impl is basically noops
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
nyah has joined #osdev
AssKoala has joined #osdev
dutch has quit [Quit: WeeChat 3.2]
srjek has joined #osdev
dutch has joined #osdev
Dreg has quit [Read error: Connection reset by peer]
ElectronApps has quit [Remote host closed the connection]
dennis95 has quit [Ping timeout: 244 seconds]
<opios2> i have a paging pool for the size of my total ram so i can map physical frames when paging is enabled and access them
<opios2> now i want to do NUMA, i know i need to redo the physical memory allocator so each CPU accesses his own memory but do i need to redo the paging pool as well?
<opios2> and allocate pool separetly from physical memory of each cpu?
dennis95 has joined #osdev
AssKoala has quit [Ping timeout: 252 seconds]
freakazoid12345 has quit [Ping timeout: 250 seconds]
regreg has joined #osdev
gateway2000 has joined #osdev
AssKoala has joined #osdev
PyR3X_ is now known as PyR3X
gateway2000 has quit [Remote host closed the connection]
gateway2000 has joined #osdev
Lukapalooka has joined #osdev
nostalgia has joined #osdev
freakazoid333 has joined #osdev
zaquest has quit [Remote host closed the connection]
zaquest has joined #osdev
srjek has quit [Ping timeout: 245 seconds]
mahmutov has joined #osdev
mctpyt has joined #osdev
Vercas5 has joined #osdev
billc has joined #osdev
billc has quit [Client Quit]
Vercas has quit [Ping timeout: 276 seconds]
Vercas5 is now known as Vercas
flx-- has joined #osdev
k0valski has quit [Quit: Ping timeout (120 seconds)]
dennis95 has quit [Quit: Leaving]
nixture has quit [Ping timeout: 240 seconds]
nixture has joined #osdev
devcpu has quit [Ping timeout: 252 seconds]
devcpu has joined #osdev
jjuran has quit [Ping timeout: 240 seconds]
fedorafan_altern has joined #osdev
fedorafan_altern has quit [Quit: Textual IRC Client: www.textualapp.com]
regreg has quit [Ping timeout: 252 seconds]
GeDaMo has quit [Quit: Leaving.]
Lukapalooka is now known as Luka
Luka is now known as Lukapalooka
mhi has joined #osdev
YuutaW has quit [Quit: WeeChat 3.2]
<geist> opios2: probably
<geist> as in it would at least be beneficial to be numa aware and try to allocate pages at least uniformly between the two nodes
<geist> vs just appending node 1 to node 0 and then only 'getting to' node 1s pages after 0 is exhausted, etc
<geist> and your paging pool the way you map it in, that's going to probably be a question mark
<geist> depends on how much you want to bind those pages. i'd keep it flexible sucht hat each cpu can still access pages from the other node, but then try to cluster stuff
<geist> but really numa is an open question for a lot of optimizations
sortie has quit [Remote host closed the connection]
sortie has joined #osdev
<Bitweasil> But then the scheduler also has to be aware of it.
<Bitweasil> So it puts tasks on the node corresponding to their memory.
<Bitweasil> I believe NUMA still has plenty of CS research papers coming out on resource allocation and scheduling.
dutch has quit [Quit: WeeChat 3.2]
dutch has joined #osdev
jjuran has joined #osdev
PapaFrog has quit [Ping timeout: 252 seconds]
PapaFrog has joined #osdev
<gog> numa numa yay
<jjuran> allo?
<gog> hæ
<kazinsal> bonjour
* gog passes the blunt to kazinsal
* kazinsal accepts the traditional offering of his people
* kazinsal returns the blunt to gog along with headpats
* gog accepts and purrs
ahalaney has quit [Quit: Leaving]
Oshawott has joined #osdev
archenoth has quit [Ping timeout: 250 seconds]
AssKoala has quit [Read error: Connection reset by peer]
AssKoala has joined #osdev
sm2n_ is now known as sm2n
<geist> yah i'd assume lacking any other numa optimizations probably the best bet is to try to spread allocations across the nodes?
<geist> that way at least you're maximizing bandwidth evenly
srjek has joined #osdev
<geist> or at least all else held equal any given page is 50/50 local to the current cpu
AssKoala has quit [Read error: Connection reset by peer]
AssKoala has joined #osdev
lTheCrow has joined #osdev
sortie has quit [Quit: Leaving]