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
<mjg> true sharing
<heat3> false barrier
<mjg> cokeline
aejsmith has quit [Ping timeout: 268 seconds]
heat3 has quit [Quit: Client closed]
gog has quit [Ping timeout: 268 seconds]
gog has joined #osdev
josuedhg has quit [Quit: Client closed]
<kof673> optimalen uber alles
aejsmith has joined #osdev
navi has quit [Ping timeout: 268 seconds]
gog has quit [Remote host closed the connection]
Turn_Left has quit [Read error: Connection reset by peer]
<Ermine> geist: which documents did you use for lk mips port?
<geist> good question
<geist> i mostly just ported it to qemu virt so a lot of it was the source(for the hardware stuff)
<geist> for the architecture itself i probably just dug up some official mips architecture docs which i'm sure are all over the internet
<geist> and frankly it's noit much of a port, so didn't get it working much past basic compilation, interrupts, timers, drivers
<geist> no mmu or whatnot
<Ermine> got it, thank you
<geist> lemme see what i found
<geist> i usually keep every pdf i download in a huge folder of stuff on dropbox
<bslsk05> ​www.dropbox.com: Dropbox
<geist> had to double check there wasn't anything super secret in there
<zzo38> I am not familiar with Paxos
Arthuria has joined #osdev
<zzo38> OK, I found "Paxos (computer science)" on Wikipedia, I will read it to see if I can understand, and if it is relevant here, then.
<Ermine> geist: thank you a lot for the drop!
<dostoyevsky2> zzo38: https://www.youtube.com/watch?v=JLlIAWjvHxM <- this guy wrapped sqlite with paxos (libraft is a Paxos-like implementation) ... I think the API is just like 7 calls... Also, Ceph uses Paxos... works very well for distributed consensus, but can also be a bit slow
<bslsk05> ​'rqlite: The Distributed Database Built on Raft and SQLite (Philip O'Toole)' by CMU Database Group (01:05:56)
mavhq has quit [Quit: http://quassel-irc.org - Chat comfortably. Anywhere.]
mavhq has joined #osdev
aejsmith has quit [Ping timeout: 246 seconds]
cow321 has joined #osdev
aejsmith has joined #osdev
agent314 has joined #osdev
<Matt|home> can you put a computer into a completely unusable state where even pressing the power button isn't working cuz we're cutting off input at such a low level
<Matt|home> or not really
<Mutabah> technically yes, as the firmware handles that
<Mutabah> but - I would assume that the fallback "hold button for `n` seconds" power-off is handled at such a low level that it cannot be prevented
<Mutabah> A single press however just triggers an ACPI event, so if the OS is misbehaving it won't be handled
vdamewood has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<Matt|home> ty Mutabah
rustyy has joined #osdev
stolen has quit [Quit: Connection closed for inactivity]
<Matt|home> that's a shame, i wanted a computer that couldn't be turned off no matter what and if you tried to unplug it it'd electrocute you :( for my evil lair
foudfou_ has joined #osdev
foudfou has quit [Ping timeout: 260 seconds]
vdamewood has joined #osdev
k_hachig_ has quit [Ping timeout: 255 seconds]
smeso has quit [Quit: smeso]
smeso has joined #osdev
jjuran has joined #osdev
k_hachig_ has joined #osdev
Arthuria has quit [Ping timeout: 246 seconds]
aejsmith has quit [Ping timeout: 255 seconds]
aejsmith has joined #osdev
alpha2023 has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
alpha2023 has joined #osdev
janemba has joined #osdev
k_hachig_ has quit [Ping timeout: 268 seconds]
janemba has quit [Read error: Connection reset by peer]
k_hachig_ has joined #osdev
netbsduser has joined #osdev
alpha2023 has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
alpha2023 has joined #osdev
aejsmith has quit [Ping timeout: 240 seconds]
netbsduser has quit [Ping timeout: 255 seconds]
aejsmith has joined #osdev
janemba has joined #osdev
goliath has joined #osdev
Renfield has quit [Remote host closed the connection]
Renfield has joined #osdev
rustyy has quit [Quit: leaving]
agent314 has quit [Ping timeout: 252 seconds]
obrien has joined #osdev
aejsmith has quit [Ping timeout: 256 seconds]
aejsmith has joined #osdev
vdamewood has quit [Quit: Life beckons]
bradd has quit [Ping timeout: 264 seconds]
janemba has quit [Read error: Connection reset by peer]
vdamewood has joined #osdev
gbowne1 has quit [Quit: Leaving]
node1 has joined #osdev
node1 is now known as detorite_
detorite_ is now known as _Method_men__
k_hachig_ has quit [Ping timeout: 268 seconds]
_Method_men__ is now known as Noha-gift_
dsdolzhenko_ has quit [Ping timeout: 256 seconds]
Noha-gift_ has quit [Quit: Client closed]
les has quit [Ping timeout: 256 seconds]
les has joined #osdev
Left_Turn has joined #osdev
foudfou_ has quit [Remote host closed the connection]
foudfou has joined #osdev
foudfou has quit [Remote host closed the connection]
foudfou has joined #osdev
k_hachig_ has joined #osdev
GeDaMo has joined #osdev
nikolapdp has joined #osdev
k_hachig_ has quit [Ping timeout: 272 seconds]
<nikolapdp> KERNAL
<GeDaMo> KURNUL
<nikolapdp> COLONEL
<bslsk05> ​dsl.ac.uk: Dictionaries of the Scots Language:: SND :: grit n2
<GeDaMo> 'kernel' basically means 'centre' but in an OS, the kernel is at the bottom of a pile
<kof673> REALITY, n. The dream of a mad philosopher. That which would remain in the cupel if one should assay a phantom. The nucleus of a vacuum. </devil's dictionary> :D
bauen1 has quit [Ping timeout: 264 seconds]
k_hachig_ has joined #osdev
k_hachig_ has quit [Ping timeout: 264 seconds]
gsekulski has joined #osdev
<kazinsal> that's a one dimensional view of the hierachy
<gsekulski> hey, I have the following problem I'm playing a bit with virtual files, when I initialize the file and read from it when it is emtpy all goes well, but when I write a small string to it and then try to read from it with read_from_buffer but it returns -EFAULT
<gsekulski> what can be the reason?
<nikolapdp> what's a virtual file
<kazinsal> googling `read_from_buffer` doesn't give me a clue as to what OS you're talking about
<gsekulski> Um, it's custom naming :D, it's all about debugfs, it's mounted in /sys/kernel/debug/ and enabled by CONFIG_DEBUG_FS, there's a debugfs subdirectory X and inside this directory I have my "virtual file"
<kazinsal> my perfect psychokinesis tells me you need to #define FS_DEBUG_BUFFERING_EVERYTHINGWILLBEALRIGHT
<gsekulski> Where could I read more about it?
<gsekulski> or could you elaborate what's this?
<kazinsal> following that, your OS will build and execute properly, your lottery numbers will show up as planned, and your preferred gender will congregate en masse to form a personal harem
Shaddox404 has joined #osdev
<gsekulski> or, like, really...
m5zs7k has quit [Ping timeout: 268 seconds]
<gsekulski> What does -EFAULT mean?
<kazinsal> you've basically asked "my crystal ball says the sky is purple; but I'm looking out the window and it's more of a puce. what reagents do I need to throw into my bonfire to get it to tell me it's actually blue all along"
m5zs7k has joined #osdev
<gsekulski> man, I'm too stupid for such complex metaphors
<kazinsal> we have no idea what your system looks like. we have no idea what your on disk or in memory structures for this "virtual file" are. we don't know what your `read_from_buffer` function does
<kazinsal> you've asked us to divine from the aether what your problem is
<kazinsal> if I could fix your problem through the power of fifth sight I would not be sitting in an IRC channel at four in the morning
<gsekulski> If you don't mind I can provide more information
<kazinsal> a full repository of context would be appreciated, because what you've posted so far has been basically like saying "I've failed at building Microsoft Office 2024, please help me"
<GeDaMo> Help me, #osdev, you're my only hope! :P
foudfou has quit [Remote host closed the connection]
<kazinsal> the cyclical nature of "my nebulous shit is broken, please fix it" is not entirely dissimilar to R2D2's glitching hologram of princess leia
foudfou has joined #osdev
<gsekulski> I think I won't ask again about this, next time I have a problem I'll just think twice before asking
<bslsk05> ​'Family Guy Presents Blue Harvest: 'R2-D2 Buffering' Clip' by EIbrandedcontent (00:00:38)
<kazinsal> we can't magically divine an answer to a question
<kazinsal> you've basically asked us "why is the sun magenta" without giving us any sort of context for the sun being magenta
<kazinsal> I literally cannot answer your question as to why X problem is happening in the context of your bespoke system code where X is happening where Y should be
<kazinsal> asking why X is happening when you've provided literally zero useful context is like asking why gnomes are stealing your underwear
<gsekulski> I understand, that's why I'm saying that next time I'll try to ask a better question, thanks anyway
<GeDaMo> EFAULT is likely a bad address somewhere
<GeDaMo> "EFAULT Bad address (POSIX.1-2001)." https://www.man7.org/linux/man-pages/man3/errno.3.html
<bslsk05> ​www.man7.org: errno(3) - Linux manual page
Shaddox404 has quit [Quit: Connection Terminated!]
gsekulski has quit [Ping timeout: 252 seconds]
foudfou has quit [Remote host closed the connection]
k_hachig_ has joined #osdev
foudfou has joined #osdev
rustyy has joined #osdev
k_hachig_ has quit [Ping timeout: 256 seconds]
navi has joined #osdev
linearcannon has joined #osdev
zxrom has quit [*.net *.split]
k0valski18891621 has quit [*.net *.split]
qxz2 has quit [*.net *.split]
linear_cannon has quit [*.net *.split]
Jari-- has quit [*.net *.split]
manawyrm has quit [*.net *.split]
tomaw has quit [*.net *.split]
hbag has quit [*.net *.split]
shan has quit [*.net *.split]
geist has quit [*.net *.split]
SanchayanMaity has quit [*.net *.split]
cuppajoeman has quit [*.net *.split]
kkd has quit [*.net *.split]
gruetzkopf has quit [*.net *.split]
duckworld has quit [Ping timeout: 264 seconds]
duckworld has joined #osdev
Jari-- has joined #osdev
manawyrm has joined #osdev
tomaw has joined #osdev
hbag has joined #osdev
shan has joined #osdev
cuppajoeman has joined #osdev
geist has joined #osdev
SanchayanMaity has joined #osdev
kkd has joined #osdev
gruetzkopf has joined #osdev
marshmallow has joined #osdev
gsekulski has joined #osdev
<nikolapdp> oi
<zid> no
<zid> Oi-ing people is rude nikolapdp, try clicking your fingers aggressively instead
<nikolapdp> *clicks fingers aggressively*
<zid> yes sir?
<nikolapdp> KERNAL
<zid> I'm afraid that won't be possible, sir. Infact, security is on their way, if you would follow me from the table.
<nikolapdp> i would not, thanks for asking
<zid> SECURITY
<zid> THIS WAY
<kazinsal> *fingers clicking like the start of Beat It*
<nikolapdp> there, now there's two of us
bauen1 has joined #osdev
<mjg> i wonder why efault is not killing the target instead
<nikolapdp> who knows
<mjg> arguably it is in the line of letting userspace they passed garbage
<mjg> know*
<kazinsal> #osdev, english boarding school style
<nikolapdp> what's that about
<kazinsal> junior officers striking each other, blaming it on some kid who was stupid enough to believe it
Jari-- has quit [*.net *.split]
manawyrm has quit [*.net *.split]
tomaw has quit [*.net *.split]
shan has quit [*.net *.split]
hbag has quit [*.net *.split]
geist has quit [*.net *.split]
SanchayanMaity has quit [*.net *.split]
cuppajoeman has quit [*.net *.split]
kkd has quit [*.net *.split]
gruetzkopf has quit [*.net *.split]
Jari-- has joined #osdev
tomaw has joined #osdev
manawyrm has joined #osdev
cuppajoeman has joined #osdev
shan has joined #osdev
geist has joined #osdev
SanchayanMaity has joined #osdev
gruetzkopf has joined #osdev
hbag has joined #osdev
kkd has joined #osdev
duckworld has quit [Ping timeout: 250 seconds]
edr has joined #osdev
bauen1 has quit [Ping timeout: 246 seconds]
duckworld has joined #osdev
aejsmith has quit [Ping timeout: 268 seconds]
aejsmith has joined #osdev
janemba has joined #osdev
bauen1 has joined #osdev
dalme has joined #osdev
m257 has joined #osdev
<gsekulski> Does MOK (Machine Owner Key) have anything to do with the kernel? Can I load a custom LKM when it is not signed by MOK?
<zid> 'the kernel'?
<gsekulski> *kernel
<zid> what?
<gsekulski> Linux kernel
<zid> oh, linux kernel
<zid> who knows, this isn't a linux support channel
<zid> it's about writing operating systems
<gsekulski> damn, you have to be really precise here
<zid> what, the internet?
heat has joined #osdev
m257 has quit [Quit: Client closed]
<heat> mjg: didn't SIGSYS kind of do it back then?
obrien has quit [Remote host closed the connection]
m257 has joined #osdev
npc has joined #osdev
goliath has quit [Quit: SIGSEGV]
m257 has quit [Ping timeout: 250 seconds]
agent314 has joined #osdev
k0valski18891621 has joined #osdev
gsekulski has quit [Ping timeout: 268 seconds]
k_hachig_ has joined #osdev
gsekulski has joined #osdev
janemba has quit [Read error: Connection reset by peer]
aejsmith has quit [Ping timeout: 272 seconds]
eck has quit [Quit: PIRCH98:WIN 95/98/WIN NT:1.0 (build 1.0.1.1190)]
eck has joined #osdev
aejsmith has joined #osdev
k_hachig_ has quit [Ping timeout: 268 seconds]
xal has quit []
xal has joined #osdev
untodesu has joined #osdev
untodesu has left #osdev [#osdev]
janemba has joined #osdev
bauen1 has quit [Ping timeout: 268 seconds]
m257 has joined #osdev
janemba has quit [Read error: Connection reset by peer]
Left_Turn has quit [Read error: Connection reset by peer]
Left_Turn has joined #osdev
janemba has joined #osdev
m257 has quit [Ping timeout: 250 seconds]
Turn_Left has joined #osdev
Left_Turn has quit [Ping timeout: 256 seconds]
xal has quit []
xal has joined #osdev
bauen1 has joined #osdev
npc has quit [Remote host closed the connection]
obrien has joined #osdev
Turn_Left has quit [Remote host closed the connection]
Turn_Left has joined #osdev
gog has joined #osdev
aejsmith has quit [Ping timeout: 256 seconds]
netbsduser has joined #osdev
aejsmith has joined #osdev
gsekulski has quit [Ping timeout: 264 seconds]
Left_Turn has joined #osdev
Turn_Left has quit [Ping timeout: 268 seconds]
Matt|home has quit [Remote host closed the connection]
agent314 has quit [Ping timeout: 268 seconds]
heat has quit [Quit: Client closed]
Turn_Left has joined #osdev
Turn_Left has quit [Remote host closed the connection]
Turn_Left has joined #osdev
Left_Turn has quit [Ping timeout: 255 seconds]
gsekulski has joined #osdev
gorgonical has joined #osdev
zxrom has joined #osdev
Left_Turn has joined #osdev
Turn_Left has quit [Ping timeout: 246 seconds]
Turn_Left has joined #osdev
Left_Turn has quit [Ping timeout: 256 seconds]
janemba has quit [Read error: Connection reset by peer]
sortie has quit [Quit: Leaving]
sortie has joined #osdev
janemba has joined #osdev
aejsmith has quit [Ping timeout: 240 seconds]
aejsmith has joined #osdev
[AFK]Shadow404 has joined #osdev
janemba has quit [Read error: Connection reset by peer]
gbowne1 has joined #osdev
[AFK]Shadow404 has quit [Quit: Connection Terminated!]
janemba has joined #osdev
gsekulski has quit [Quit: Leaving.]
qxz2 has joined #osdev
netbsduser has quit [Ping timeout: 252 seconds]
clever has quit [Ping timeout: 240 seconds]
GeDaMo has quit [Quit: 0wt 0f v0w3ls.]
clever has joined #osdev
heat has joined #osdev
<kof673> nikolapdp, you asked what people are doing the other day. i am finally going to try to use that https://github.com/agl/critbit
<bslsk05> ​agl/critbit - Critbit trees in C (30 forks/333 stargazers)
<kof673> https://github.com/git/git/blob/master/cbtree.c git i think has another, which does not make any allocations, but uses a "flex array" thing which i'm not sure c89 even "supports" ...so i am fine with the former needing \0-terminated C-style strings
<bslsk05> ​github.com: git/cbtree.c at master · git/git · GitHub
<Jari--> Any C kernels? Looking for parts I could borrow.
<Jari--> URLs
<Jari--> simple is good
<kof673> i figure e.g. even a void *, say 4 bytes...just add 1 more byte to track which pointer bytes are 0x00 or not, can still do stuff like that in the "C string" version. both of these need 2-byte-aligned pointers though.
<gog> there are lots of kernels in c
<gog> take your pick
<nikolapdp> what'st hat for kof
<heat> github.com/torvalds/linux
<bslsk05> ​torvalds/linux - Linux kernel source tree (52307 forks/173282 stargazers/NOASSERTION)
<gog> ew linux
<nikolapdp> good one haet
<gog> worst kernel
<heat> github.com/freebsd/freebsd-src
<bslsk05> ​freebsd/freebsd-src - The FreeBSD src tree publish-only repository. Experimenting with 'simple' pull requests.... (2798 forks/7604 stargazers/NOASSERTION)
agent314 has joined #osdev
<gog> i stand corrected
<kof673> they are supposed to be compact for strings, believe only stores the "prefix" part . lets you do things like find all nodes that match a prefix, for example. so you can sort of like associative array things i am hoping, foo:bar:<sub items of foo:bar>
<gog> no wait we're not suspposed to do that
<heat> quick someone post win nt leaks
<heat> (please don't)
<gog> nobody ever did that certainly not me
<kof673> they are tiny any ways, been wanting to play with a long time, see how it goes :D the code is like 5 functions or so, easy :D
<nikolapdp> yeah gog me neither
<nikolapdp> what will you use them for kof
<kof673> point to other things :D
<gog> also does anybody here use lldb
<kof673> but quick lookup by name hopefully
<nikolapdp> i meant what in particular
<gog> i'm trying to work out how to get the base offset of an image as the load addresss of the module
<heat> gog why would ANYONE USE LLDB
<gog> because it supports pdb files
<heat> i've used it a couple of times but seriously gdb 4 life
<nikolapdp> GDB GDB GDB
<heat> can't you convert those to dwarf? sounds like a thing
<gog> i didn't even try to look idk
<kof673> a "shell" of sorts but don't hold your breathe :D
<heat> or maybe -mingw64 gdb supports pdb idk i'm not a microshit winblows fan
<kof673> env. vars, for example i will put in there
<nikolapdp> eh i imagine you'll brag once you get more of it working
<gog> lldb works for the way i'm doing things unfortunately
<heat> what are you doing
<nikolapdp> well change how you're doing things gog :P
<gog> NO
<nikolapdp> rude
<bslsk05> ​gist.github.com: gist:e78e2e5bce3a13b07edf8a03b65364c6 · GitHub
obrien has quit [Remote host closed the connection]
<gog> those offsets are fine until they're not
<gog> i want to slurp them from a register
<gog> just suck them up into my greedy little debugger
<heat> there's a efi_lldb python script in tianocore/edk2, i don't know if that helps
<gog> but backtick doesn't work
<gog> oh shit fr
<heat> yeah frfr on god bruh
<gog> lldb the ocky way
Turn_Left has quit [Read error: Connection reset by peer]
<nikolapdp> why did i have to read that
<gog> hang on i need to have an edge sesh with this
dude12312414 has joined #osdev
<heat> im gooning to lldb
<nikolapdp> uh
<gog> this doesn't really have what i need
<gog> maybe i should learn how to script lldb next
<gog> all so i don't have to read an address and type it in
<gog> i'm gonna waste hours of time
dude12312414 has quit [Remote host closed the connection]
<nikolapdp> but remeber, within a century, your investment will have paid off
<kof673> again, no 0x00 bytes allowed in the C string version, but e.g. Ufoo:I<UID> # map username to uid Ufoo:P<GID> # map username to gid Ufoo:M<GID> # one such entry for any secondary groups user is member of, and the prefix thing should allow easy retrieval of all such nodes V<UID>:<username> # reverse lookup, uid to username
<kof673> in that case, just make up your own scheme "U" "P" ":" to get whatever hierarchy for whatever data
<nikolapdp> just use a database for your os
<gog> you're reinventing the windows registry
<nikolapdp> does windows registry hold the users
<kof673> :/ this is in RAM just giving nikola an example of hierarchy
<gog> it does
<nikolapdp> huh til
<gog> HKEY_USERS
<heat> nikolapdp damn it rubbed off on you
<nikolapdp> what did
<heat> the sqlite fan guy here
<heat> dostoyevsky2 maybe?
<nikolapdp> heh
<gog> i like sqlite
<nikolapdp> i was joking
<nikolapdp> mostyl
<heat> EVERYTHING MUST BE AN SQL DATABASE
<gog> yes
<heat> nikolapdp have you considered that sql databases are commonly btrees
<nikolapdp> who said anything about sql
<nikolapdp> i jstu said database
<dostoyevsky2> I blame GeDaMo
<nikolapdp> i have hea
<nikolapdp> heat
<zid> dB OS, it's LOUD
<heat> so... if you have a btree fs, and a btree database
<heat> btrees all the way down
<nikolapdp> BTREE
<heat> what if instead of partitions we had btrees
<heat> subscribe for more great ideas
<nikolapdp> yes, everything is a btree
<zid> everything is a btree already
<gog> there are no trees in iceland unfortunately
<nikolapdp> users?, all a btree, processes, btree
<zid> 4? root of a btree.
<heat> gog icetree?
<dostoyevsky2> I heard in iceland they use brocks instead
<zid> int a = 4;? Root of a btree. int a[4]; ? root of a span of b-trees, etc
<nikolapdp> everything is a btree
<heat> i have to admit uhh i'm considering writing a database myself
<heat> just to see what's under the hood
<gog> are you going to sstore user settings in it
<gog> and system configuration
<bslsk05> ​'S2024 #21 - Yellowbrick Data Warehouse System (CMU Advanced Database Systems)' by CMU Database Group (01:21:10)
<heat> yes gog and a scripting language next
<gog> sick
<gog> are you going to integrate the scripting language with your os
<dostoyevsky2> YellowBrick is fascinating because it's like an OS
<nikolapdp> heat, same
<nikolapdp> i mean i am supposed to be writing a btree based fs
<nikolapdp> so turn it into a db
<nikolapdp> and there we go
<gog> dbfs
<gog> dbdb
<gog> dbdbdbdbdb
<gog> qpqpqpqpq
<heat> yeah i assume it's not too different from a journalling fs at least
<Ermine> lldb is a cool database
<heat> at least in principle
<nikolapdp> EVERYTHING IS A DB
<heat> HAVE YOU CONSIDERED EMBEDDING SQLITEFS
<gog> the ll stands for 'ladies love'
<nikolapdp> heat someone should make a sqlite based fs
<heat> i prefer the gdb
<heat> gay db
<Ermine> gdbm then
<Ermine> gay db m
<nikolapdp> what's the m
<Ermine> idk
<heat> the g in gdb stands for GOONING
<heat> upvote fanum tax kai cenat
<Ermine> modernized
<nikolapdp> ke
<heat> hmm is the WAL traditionally just a log of high level ops
<heat> i am thinking one could go the journal route *twice*, once for high level ops, then you coalesce them into larger operations and then have a separate journal with just db blocks
<Ermine> til new brainrot word
<heat> basically i'm reinventing zfs am i not
<nikolapdp> wasn't the original jouranl full journaling, both data and metadata
<nikolapdp> you aren't
<heat> in two days i'll come up with never changing in-place and just copying on write
<heat> what original journal?
<heat> you can still journal ext4 data you just need to opt in
<nikolapdp> not what i meant
<nikolapdp> what fs did journaling first
<heat> idk
<nikolapdp> was it ufs or something
<nikolapdp> i think they did full (metadata+data) journaling first
<heat> JFS i think
<heat> ufs has soft updates i think?
<nikolapdp> ah yeah maybe
<heat> i'm still not too sure what that is, probably a slightly different journal
<nikolapdp> it's not
<nikolapdp> it's ordering of writes in a way that doesn't break the structure, rougjD
<nikolapdp> roughly
<nikolapdp> plus some more messy operations
<nikolapdp> it's really not a good system
<dostoyevsky2> > In 1990 IBM introduced JFS in AIX 3.1 as one of the first UNIX commercial filesystems that implemented journaling.[4] The next year the idea was popularized in a widely cited paper on log-structured file systems.[5] This was subsequently implemented in Microsoft's Windows NT's NTFS filesystem in 1993, in Apple's HFS Plus filesystem in 1998, and in Linux's ext3 filesystem in 2001
<heat> that sounds like a mess if e.g you need to update a btree
<nikolapdp> it is indeed a *not great idea*
<nikolapdp> journaling and copy on write are both way better and simpler
<nikolapdp> and less tedious and error probe lol
<nikolapdp> s/probe/prone
<heat> put the two together and OH YEAH ZFS TIME WOOOOOOOOOOOO
<nikolapdp> zfs doesn't do journaling
<nikolapdp> how many times do i have to tell you lol
<mjg> ext2 had corrupt on write l-o-l
<heat> how do you properly handle CoW filesystems running out of disk space?
<heat> do you just... not
<nikolapdp> kind of
<mjg> you have enough buffer to handle writes
<nikolapdp> you buffer a lot in memory before writing
<Ermine> kill the process attempting to write stuff?
<mjg> nikolapdp: you need enough space on storage to do the writes
<mjg> which free up space
<nikolapdp> yeah
<nikolapdp> it's a chicken and egg problem
<mjg> so a big enough reserve
<mjg> and you are set
<heat> yeah but btrfs just fucking panics or whatever when that happens sometimes
<nikolapdp> yeah that's probably exactly what they do
<mjg> heat may as well be arguing that since in order to free memory you may need to allocate memory
<heat> or screams wildly into the dmesg
<mjg> it is impossible to free memory
<mjg> QED
<heat> i'm not arguing anything
<nikolapdp> yeah i think if you have a large enough buffer, you're fine
<heat> it's a good faith question
<mjg> so i told you: a big enough reserve on storage to do the freeing writes
antranigv has quit [Quit: ZNC 1.9.0 - https://znc.in]
<nikolapdp> so when freeing, you need to write the few metadata blocks that are referring to it
<mjg> it used to be that zfs did not have one
<mjg> and people would run into ENOSPC while unlinking files
<Ermine> just make sure your stuff is ext4
<CompanionCube> doesn't btrfs have a similar 'emergency reserve' of space?
<mjg> this stopped being a thing 12 years ago
<heat> Ermine thank you, will do!
<heat> actually i'm on NTFS atm cope linux losers
<nikolapdp> it's not recommended to run cow FSs to more than 80% usage anyway
<mjg> heat: do you watch linux vs windows videos
<nikolapdp> isn't ntfs like a subpar fs compared to even ext4
<heat> yes!
<CompanionCube> 'GlobalReserve is an artificial and internal emergency space. It is used e.g. when the filesystem is full. Its total size is dynamic based on the filesystem size, usually not larger than 512MiB, used may fluctuate.' huh, i would expect it to scale more than that
<mjg> i made the mistake of trying to watch some fucking guy going from zsh to bash
<mjg> fsck me
<Ermine> heat: did you do that manual about installing alpine on ntfs?
<heat> oh lord is that a thing?
<dostoyevsky2> > Long answer: zfs uses certain amount of CPU to process the iops, most of which are compression and checksuming. If you have the CPU not capable of handling the amount needed - you'll get freezes/spikes.
<nikolapdp> /dev/mjg: no such device
<heat> nikolapdp fwiw i'd be pretty upset if i couldn't use 80% of my storage
<Ermine> it's crazy but it's possible
<mjg> you mean 20%
<nikolapdp> you could, you just get slowdowns
<heat> yeah 20
<heat> i cant subtract
<nikolapdp> lol 100 - 80 = 80
<dostoyevsky2> zfs seems quite cpu intensive
<dostoyevsky2> compared to other filesystems
<nikolapdp> well it is checksumming and (optionally) compressing so yeah
<mjg> zfs is sun engineering ethos
<CompanionCube> the cpu-intensive bit is the compression and/or encryption
<mjg> total cpu power waste
<nikolapdp> and encryption too
<mjg> CompanionCube: have you seen how this is implemented?
<mjg> let me give you a taste: they memset a 128KB buffer
<nikolapdp> i don't think data integrity is cpu power waste but ok
<mjg> before doing anythin with it
<dostoyevsky2> nikolapdp: why the checksumming? ext4 et al also do checksumming?
<mjg> nikolapdp: no, i am saying the way they implement stuff is wasteful
<nikolapdp> ah sure, wouldn't know
<CompanionCube> ext4 only does metadata checksumming, i think?
<mjg> the think taking a lock trip is free
<heat> CompanionCube yes
<nikolapdp> zfs does both data and metadata checksumming
<mjg> heat: so which windows vs linux video is your favourite
<heat> i liked the bryan lunduke vids
<heat> before he went nazi
<kof673> i vaguely recall ufs softupdates had an issue where e.g. root filesystem was tiny, and then after an installworld...ran out of space if stuff was not actually deleted in time?
<zid> what if we used zfs in the murder tunnel
<mjg> OH
<zid> wrong meme
<mjg> that guy was a twat, nazi or otherwise
<nikolapdp> kof: could that just be the issue of having a tiny root
<kof673> if softupdates i think it delays stuff :D so they might have told people not to use that on / . but not an issue for at least a decade or more i'm sure :D
<nikolapdp> well i don't know
<nikolapdp> does openbsd do journaling
<nikolapdp> or is it soft updates
<mjg> :D
<nikolapdp> i know netbsd does journaling
<mjg> openbsd does nothing
<mjg> they had a bad port of SU which they removed
<nikolapdp> nothing at all?
<heat> bsd people are soft-update-pilled
<heat> journalling is for losers
<mjg> literally nothing
<kof673> i may be misremembering as well, don't trust me :D
<nikolapdp> well i guess it's better than bad soft updates
<nikolapdp> but cmon
<mjg> well it is terrible
<mjg> but they like to claim ssds are a great fs equalizer
<heat> wait netbsd does journalling, really?
<dostoyevsky2> kof673: I had that happen on BSDs when I partitioned the / as small initially but large enough for an install, but over time the base install grew larger, so during an update some year later it failed to update because / was full
<nikolapdp> heat: yeah
<heat> fuck
<nikolapdp> wafl they call t
<nikolapdp> call it
<heat> hard updates
<mjg> heat: ye, but dh says it is buggy
<nikolapdp> what is: journaling?
<kof673> dostoyevsky, yeah, i'd leave enough room at least for a kernel or 3
<CompanionCube> wafl isn't the same thing as journaling though?
<nikolapdp> oh no, sorry, wapbl
<bslsk05> ​man.netbsd.org: wapbl(4) - NetBSD Manual Pages
<mjg> > WAPBL -- Write Ahead Physical Block Logging file system journaling
<heat> oh fuck that name
<kof673> there is some old ancient logfs or something too ;D
<mjg> logfs is... a thing
<dostoyevsky2> you don't need a filesystem, just a journal.txt with all the ops
<mjg> you know how the code came to be netbsd
<mjg> the company which wrote it was hoarding it for their own purposes
<mjg> they were going bust
<mjg> so they upstreamed it
<mjg> :d
<nikolapdp> heh nice
<mjg> by that time netbsd was already a dead os tho, part of why they were going bust
<heat> they should've never upstreamed it
<zid> Just make an append-only hdd that's a giant ringbuffer
<heat> code goes down with the ship
<mjg> remember the rename goodies in netbsd ufs
<nikolapdp> what goodies
<zid> if you wanna save any files just read ahead and put them at the front
<mjg> oooh man
<heat> mjg also fwiw SSDs are kind of great equalizers yeah
<mjg> :d
<zid> save as in, not destry on future laps
<heat> you can do all sorts of stuff that was deemed awful and have it work Just Fine if not better
<heat> see: block allocation
<nikolapdp> yeah you can write anywhere without much care, though bigger consecutive writes are better
<mjg> #if 0 /* XXX */
<mjg> goto whymustithurtsomuch;
<mjg> #endif
<mjg> goto arghmybrainhurts;
<mjg> actual code
<nikolapdp> what's that mjg
<mjg> from rename
<heat> ufs_rename
<mjg> there is more of that caliber
<mjg> basically someone was having a meltdown
<mjg> whcih they comitted
<nikolapdp> kek
<heat> good choice
<mjg> ey heat
<mjg> does onyx survive dirconc?
<heat> uhh i dont remember honestly
<mjg> :O
<heat> i think so kinda? at least on tmpfs
<nikolapdp> what's dirconc
<mjg> parallel renamewhich tries to fuck up the fs
<heat> it's a fun directory smashing test with renames and al lthat jazz
<heat> with like 40 threads
<nikolapdp> ah fancy
<nikolapdp> yeah rename sucks lol
<mjg> fun fact: it breaks zfs on illumos
<mjg> :d
<nikolapdp> kek
<mjg> you get an unkillable process
<nikolapdp> ILLUMOS
<heat> i solved rename by just taking a lock
<heat> have you considered just takinga f ucking lock
<nikolapdp> that's fair
<mjg> bro
<mjg> 's the OG solution
<Ermine> heat: https://prose.nsood.in/linux-from-windows-installer --- part of this is installing alpine on ntfs
<mjg> linux does it even
<bslsk05> ​prose.nsood.in: How to install Linux from a Windows installer – Prose
<heat> seqlocks bro
<nikolapdp> you can also install windows on btrfs
<nikolapdp> and run linux off of the same partition
<heat> yeah i heard
<heat> though it was a bit BSOD-ish iirc?
<nikolapdp> i don't know
MrBonkers has quit [Remote host closed the connection]
<nikolapdp> maybe i should do it on a spare machine
<nikolapdp> or a vm
<heat> mjg no linux pulls off some awful seqcount tricks now
<heat> i dont think they have the s_vfs_mutex anymore
<mjg> ca't be ARSED to check
<heat> but it does mean rename should scaleish now
<heat> = happy mjg
<mjg> i can be arsed to check who added that meltdown shit to netbsd though
<nikolapdp> nah screw that *takes a lock?
<nikolapdp> *takes a lock*
<heat> you can figure out awful lockless problems for 20 years
<heat> or
<heat> YOU COULD TAKE A FUCKING LOCK
<heat> PLEASEPLEASE JUST TAKE A LOCK
<mjg> i take the former, kcoolthx
<nikolapdp> how owften do you need to do SCALABLE RENAME anyway
<mjg> actuall you do need it sometimes, except when you do, it's in the same fucking dir
<heat> bro my synthetic bench needs it to scale to 40 cores
<mjg> so...
<mjg> it ends up not even being a factor
<mjg> you are just serialized on the rename lock isntead of the inode lock
<mjg> some compilers like to rename their output
<mjg> but then it's all the same objdir
<zid> do you not atomically rename all the files on your drive every day nikolar?
<zid> we all do
<nikolapdp> all i do, all of them at the same time
<nikolapdp> s/all/oh
<mjg> lul i clicked on a netbsd install video
<mjg> and randomly fast forwarded
<mjg> dude got a segfault installing firefox
<heat> mjg it appears that iw as wrong and s_vfs_rename_mutex is still around
<heat> which is pretty bizarre cuz i swear i remember it not existing
<zid> fs design is easy, it's the edge cases that suck imo, like, you need all the features to stay working even if it's all super fragmented and full
<heat> i'm binning it off to the mandela effect
<dostoyevsky2> In Databases with MVCC you e.g. can just append a new version of a row to a table, and when you commit the tx you increment the current version... and then you just have to select the currently valid rows by their minversion fields... and occasionally vacuum old rows
<heat> i came from a universe where linux is more OPTIMAL
<nikolapdp> well DEPESIMIZE it
<mjg> heat: they probably skip it in the fast path
<heat> no just take a fucking lock please boss please just take a lock i beg you
<mjg> heat: and only resort to it if there is fucky things going on
<Ermine> more optimal than what btw?
<heat> mjg nope
<heat> they can skip it if you're renaming in the same dir
<heat> not otherwise
* Ermine takes a lock and runs away
<nikolapdp> no give it back
<heat> nooooooooooooooooooo use rcu and seqcounts and smp_mb and lockless testing and kfree_rcu and deal with all the *subtleties*
<dostoyevsky2> I am calling the lockpicking lawyer
* zid gives nikolapdp a deadlick
<CompanionCube> your lock is dead, imagine that, a dead lock!
<nikolapdp> wrong lock zid
nikolapdp has quit [Remote host closed the connection]
<zid> btw I expedited some monsters
<zid> watching the credits
nikolapdp has joined #osdev
<nikolapdp> how did that go
<zid> what go
<heat> did you crash nikolapdp
<nikolapdp> are you going for 100%
<nikolapdp> heat: no i was making a joke
<zid> I'm too d umb for that, but I will play more
<nikolapdp> kek
gog has quit [Quit: byee]
<mjg> that ufs rename wtfery is 2012 vintage
<zid> First unsolved puzzle I found has stumped me, infact
agent314 has quit [Remote host closed the connection]
agent314 has joined #osdev
gog has joined #osdev
Arthuria has joined #osdev
<nikolapdp> heh