From: Sage Weil Date: Thu, 24 May 2012 22:01:39 +0000 (-0700) Subject: filestore: make SNAP_DESTROY ioctl check more informative X-Git-Tag: v0.48argonaut~151^2~16 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ba5406235f05cb4dec1a2c79e86417ad2917e723;p=ceph.git filestore: make SNAP_DESTROY ioctl check more informative Tell user about user_subvol_rm_allowed mount option. Signed-off-by: Sage Weil --- diff --git a/src/os/FileStore.cc b/src/os/FileStore.cc index b88ab7e56f9fa..6b0ae1a78f8f4 100644 --- a/src/os/FileStore.cc +++ b/src/os/FileStore.cc @@ -1357,19 +1357,25 @@ int FileStore::_detect_fs() dout(0) << "mount btrfs SNAP_DESTROY is supported" << dendl; btrfs_snap_destroy = true; } else { + err = -errno; dout(0) << "mount btrfs SNAP_DESTROY failed: " << cpp_strerror(err) << dendl; + + if (err == -EPERM && getuid() != 0) { + dout(0) << "btrfs SNAP_DESTROY failed with EPERM as non-root; remount with -o user_subvol_rm_allowed" << dendl; + cerr << TEXT_YELLOW + << "btrfs SNAP_DESTROY failed as non-root; remount with -o user_subvol_rm_allowed" + << TEXT_NORMAL + << std::endl; + } else if (err == -EOPNOTSUPP) { + derr << "btrfs SNAP_DESTROY ioctl not supported; you need a kernel newer than 2.6.32" << dendl; + } } } else { dout(0) << "mount btrfs SNAP_CREATE failed: " << cpp_strerror(err) << dendl; } if (m_filestore_btrfs_snap && !btrfs_snap_destroy) { - dout(0) << "mount btrfs snaps enabled, but no SNAP_DESTROY ioctl (from kernel 2.6.32+); DISABLING" << dendl; - cerr << TEXT_YELLOW - << " ** WARNING: 'filestore btrfs snap' was enabled (for safe transactions, rollback),\n" - << " but btrfs does not support the SNAP_DESTROY ioctl (added in\n" - << " Linux 2.6.32). Disabling.\n" - << TEXT_NORMAL; + dout(0) << "mount btrfs snaps enabled, but no SNAP_DESTROY ioctl; DISABLING" << dendl; btrfs_stable_commits = false; }