IRC logs for #buildstream for Thursday, 2022-11-24

*** tristan <tristan!tristan@223.38.30.252> has joined #buildstream07:16
*** ChanServ sets mode: +o tristan07:16
*** tristan <tristan!tristan@223.38.30.252> has quit IRC07:22
*** tristan <tristan!tristan@223.38.30.252> has joined #buildstream08:29
*** ChanServ sets mode: +o tristan08:29
*** tristan <tristan!tristan@223.38.30.252> has quit IRC08:39
*** tristan <tristan!tristan@223.38.30.177> has joined #buildstream09:26
*** ChanServ sets mode: +o tristan09:26
*** tristan <tristan!tristan@223.38.30.177> has quit IRC09:34
*** tpollard <tpollard!tompollard@167.98.27.226> has joined #buildstream09:40
*** CTtpollard <CTtpollard!tompollard@167.98.27.226> has joined #buildstream10:25
*** tpollard <tpollard!tompollard@167.98.27.226> has quit IRC10:26
*** doras <doras!doras@2001:470:1af1:104:0:0:0:220b> has joined #buildstream10:48
dorasjuergbi: regarding reflinks, shouldn't BuildStream use them for `bst artifact checkout` when `--hardlinks` isn't specified and the filesystem supports it? There is no known limitation to doing this as far as I know. Even `cp(1)` does this.10:48
juergbidoras: yes, would make sense, simply hasn't been implemented. possibly because it's not quite as useful with ext4 still not supporting it10:49
*** CTtpollard <CTtpollard!tompollard@167.98.27.226> has quit IRC10:49
*** tpollard <tpollard!tompollard@167.98.27.226> has joined #buildstream10:49
juergbiI haven't checked whether it's straight forward in Python10:50
dorasjuergbi: I doubt ext4 ever would, since it requires CoW semantics.10:50
dorasBut btrfs does, and hopefully any future filesystem.10:50
juergbiyes, I think xfs supports it as well nowadays10:50
dorasjuergbi: where is the full copy logic of this operation located?10:50
juergbisafe_copy in utils.py is used10:51
dorasjuergbi: yes, looks like it does. I wasn't aware.10:51
juergbidoras: the biggest question might be how to avoid the overhead of attempting reflink for every file (in case the filesystem doesn't support it)10:52
juergbigiven that safe_copy is invoked per file, iirc10:53
dorasjuergbi: perhaps the result of the first file in the checkout can be assumed for the rest? I think an empty directory is required for the destination, so no strange mount points should be present. I'm actually surprised user space should be handling the fallback and that there's no IOCTL with an automatic fallback to a full copy.11:01
juergbicopying a file is not a single syscall. it's a potentially long operation11:02
dorasI also wonder if the overhead is actually significant compared to the full file copy itself.11:02
juergbiprobably not for large files but maybe for lots of small files11:02
juergbicould check how `cp` handles that and use the same approach11:03
dorasIt doesn't appear to try to optimize anything. It's a simple "try reflink and fallback to full copy" per file.11:04
dorasBut the code is so ugly it's hard to say for certain.11:05
juergbiok, maybe that would be acceptable in buildstream as well. would have to benchmark it to be sure11:16
*** tristan <tristan!tristan@223.62.21.203> has joined #buildstream13:16
*** ChanServ sets mode: +o tristan13:16
*** tristan <tristan!tristan@223.62.21.203> has quit IRC14:11
*** CTtpollard <CTtpollard!tompollard@167.98.27.226> has joined #buildstream14:46
*** tpollard <tpollard!tompollard@167.98.27.226> has quit IRC14:47
*** tpollard <tpollard!tompollard@167.98.27.226> has joined #buildstream15:23
*** CTtpollard <CTtpollard!tompollard@167.98.27.226> has quit IRC15:23
*** CTtpollard <CTtpollard!tompollard@167.98.27.226> has joined #buildstream17:35
*** tpollard <tpollard!tompollard@167.98.27.226> has quit IRC17:36
*** CTtpollard <CTtpollard!tompollard@167.98.27.226> has quit IRC18:00
*** tpollard <tpollard!tompollard@92.19.16.193> has joined #buildstream19:37

Generated by irclog2html.py 2.17.3 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!