*** tristan <tristan!tristan@223.38.30.252> has joined #buildstream | 07:16 | |
*** ChanServ sets mode: +o tristan | 07:16 | |
*** tristan <tristan!tristan@223.38.30.252> has quit IRC | 07:22 | |
*** tristan <tristan!tristan@223.38.30.252> has joined #buildstream | 08:29 | |
*** ChanServ sets mode: +o tristan | 08:29 | |
*** tristan <tristan!tristan@223.38.30.252> has quit IRC | 08:39 | |
*** tristan <tristan!tristan@223.38.30.177> has joined #buildstream | 09:26 | |
*** ChanServ sets mode: +o tristan | 09:26 | |
*** tristan <tristan!tristan@223.38.30.177> has quit IRC | 09:34 | |
*** tpollard <tpollard!tompollard@167.98.27.226> has joined #buildstream | 09:40 | |
*** CTtpollard <CTtpollard!tompollard@167.98.27.226> has joined #buildstream | 10:25 | |
*** tpollard <tpollard!tompollard@167.98.27.226> has quit IRC | 10:26 | |
*** doras <doras!doras@2001:470:1af1:104:0:0:0:220b> has joined #buildstream | 10:48 | |
doras | juergbi: 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 |
---|---|---|
juergbi | doras: yes, would make sense, simply hasn't been implemented. possibly because it's not quite as useful with ext4 still not supporting it | 10:49 |
*** CTtpollard <CTtpollard!tompollard@167.98.27.226> has quit IRC | 10:49 | |
*** tpollard <tpollard!tompollard@167.98.27.226> has joined #buildstream | 10:49 | |
juergbi | I haven't checked whether it's straight forward in Python | 10:50 |
doras | juergbi: I doubt ext4 ever would, since it requires CoW semantics. | 10:50 |
doras | But btrfs does, and hopefully any future filesystem. | 10:50 |
juergbi | yes, I think xfs supports it as well nowadays | 10:50 |
doras | juergbi: where is the full copy logic of this operation located? | 10:50 |
juergbi | safe_copy in utils.py is used | 10:51 |
doras | juergbi: yes, looks like it does. I wasn't aware. | 10:51 |
juergbi | doras: 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 |
juergbi | given that safe_copy is invoked per file, iirc | 10:53 |
doras | juergbi: 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 |
juergbi | copying a file is not a single syscall. it's a potentially long operation | 11:02 |
doras | I also wonder if the overhead is actually significant compared to the full file copy itself. | 11:02 |
juergbi | probably not for large files but maybe for lots of small files | 11:02 |
juergbi | could check how `cp` handles that and use the same approach | 11:03 |
doras | It doesn't appear to try to optimize anything. It's a simple "try reflink and fallback to full copy" per file. | 11:04 |
doras | But the code is so ugly it's hard to say for certain. | 11:05 |
juergbi | ok, maybe that would be acceptable in buildstream as well. would have to benchmark it to be sure | 11:16 |
*** tristan <tristan!tristan@223.62.21.203> has joined #buildstream | 13:16 | |
*** ChanServ sets mode: +o tristan | 13:16 | |
*** tristan <tristan!tristan@223.62.21.203> has quit IRC | 14:11 | |
*** CTtpollard <CTtpollard!tompollard@167.98.27.226> has joined #buildstream | 14:46 | |
*** tpollard <tpollard!tompollard@167.98.27.226> has quit IRC | 14:47 | |
*** tpollard <tpollard!tompollard@167.98.27.226> has joined #buildstream | 15:23 | |
*** CTtpollard <CTtpollard!tompollard@167.98.27.226> has quit IRC | 15:23 | |
*** CTtpollard <CTtpollard!tompollard@167.98.27.226> has joined #buildstream | 17:35 | |
*** tpollard <tpollard!tompollard@167.98.27.226> has quit IRC | 17:36 | |
*** CTtpollard <CTtpollard!tompollard@167.98.27.226> has quit IRC | 18:00 | |
*** tpollard <tpollard!tompollard@92.19.16.193> has joined #buildstream | 19:37 |
Generated by irclog2html.py 2.17.3 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!