From 14fa0abdcc7b6513540e529375e53edd74ce13e8 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 30 Jan 2022 21:49:08 +0000 Subject: rewrite Linux nodatacow use in pure Perl w/o system btrfs is Linux-only at the moment (and likely to remain that way for practical purposes). So rely on Linux ABI stability and use the `syscall' and `ioctl' perlops rather than relying on Inline::C. Inline::C (and gcc||clang) are monstrous dependencies which we can't expect users to have. This makes supporting new architectures more difficult, but new architectures come along rarely and this reduces the burden for the majority of Linux users on popular architectures (while still avoiding the distribution of pre-built binaries). Link: https://public-inbox.org/meta/YbCPWGaJEkV6eWfo@codewreck.org/ --- lib/PublicInbox/IMAPTracker.pm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'lib/PublicInbox/IMAPTracker.pm') diff --git a/lib/PublicInbox/IMAPTracker.pm b/lib/PublicInbox/IMAPTracker.pm index 2fd66440..4efa8a7e 100644 --- a/lib/PublicInbox/IMAPTracker.pm +++ b/lib/PublicInbox/IMAPTracker.pm @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2021 all contributors +# Copyright (C) all contributors # License: AGPL-3.0+ package PublicInbox::IMAPTracker; use strict; @@ -75,11 +75,11 @@ sub new { } if (!-f $dbname) { require File::Path; - require PublicInbox::Spawn; + require PublicInbox::Syscall; my ($dir) = ($dbname =~ m!(.*?/)[^/]+\z!); File::Path::mkpath($dir); + PublicInbox::Syscall::nodatacow_dir($dir); open my $fh, '+>>', $dbname or die "failed to open $dbname: $!"; - PublicInbox::Spawn::nodatacow_fd(fileno($fh)); } my $self = bless { lock_path => "$dbname.lock", url => $url }, $class; $self->lock_acquire; -- cgit v1.2.3-24-ge0c7