Unverified Commit 87fad1b0 authored by Kroese's avatar Kroese Committed by GitHub
Browse files

feat: Set directory attributes (#483)

* feat: Set directory attributes
parent 698516ac
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -261,7 +261,7 @@ convertDisk() {

checkFS () {
  local DISK_FILE=$1
  local DIR FS FA
  local DIR FS

  DIR=$(dirname "$DISK_FILE")
  [ ! -d "$DIR" ] && return 0
@@ -282,11 +282,15 @@ checkFS () {
      fi
    fi

    if [ -f "$DISK_FILE" ] ; then
      FA=$(lsattr "$DISK_FILE")
      [[ "$FA" == *"C"* ]] && FA=$(lsattr -d "$DIR")
    else
    local FA=""
    [ -f "$DISK_FILE" ] && FA=$(lsattr "$DISK_FILE")

    if [[ "$FA" == "" || "$FA" == *"C"* ]]; then
      FA=$(lsattr -d "$DIR")
      if [[ "$FA" != *"C"* ]]; then
        { chattr -R +C "$DIR"; } || :
        FA=$(lsattr -d "$DIR")
      fi      
    fi

    if [[ "$FA" != *"C"* ]]; then
+5 −0
Original line number Diff line number Diff line
@@ -54,8 +54,13 @@ FS=$(stat -f -c %T "$STORAGE")
if [[ "$FS" == "overlay"* ]]; then
  info "Warning: the filesystem of $STORAGE is OverlayFS, this usually means it was binded to an invalid path!"
fi

if [[ "$FS" == "xfs" || "$FS" == "zfs" || "$FS" == "btrfs" || "$FS" == "bcachefs" ]]; then
  FA=$(lsattr -d "$STORAGE")
  if [[ "$FA" != *"C"* ]]; then
    { chattr -R +C "$STORAGE"; } || :
    FA=$(lsattr -d "$STORAGE")
  fi
  if [[ "$FA" != *"C"* ]]; then  
    info "Warning: the filesystem of $STORAGE is ${FS^^}, and COW (copy on write) is not disabled for that folder!"
    info "This will negatively affect performance, please empty the folder and disable COW (chattr +C <path>)."