tmpfiles: don't consider it a problem if quota is not enabled on btrfs
authorLennart Poettering <lennart@poettering.net>
Tue, 10 Nov 2015 20:39:52 +0000 (21:39 +0100)
committerLennart Poettering <lennart@poettering.net>
Tue, 10 Nov 2015 20:41:22 +0000 (21:41 +0100)
If quota is not enabled on a btrfs file system, accept that, and only
log a debug message, but do not consider this a reason for failure.

Fixes: #1809

src/basic/btrfs-util.c
src/tmpfiles/tmpfiles.c

index 661331e..290fabd 100644 (file)
@@ -1010,6 +1010,10 @@ static int qgroup_create_or_destroy(int fd, bool b, uint64_t qgroupid) {
         for (c = 0;; c++) {
                 if (ioctl(fd, BTRFS_IOC_QGROUP_CREATE, &args) < 0) {
 
+                        /* If quota is not enabled, we get EINVAL. Turn this into a recognizable error */
+                        if (errno == EINVAL)
+                                return -ENOPROTOOPT;
+
                         if (errno == EBUSY && c < 10) {
                                 (void) btrfs_quota_scan_wait(fd);
                                 continue;
index 64f0c93..74b6b91 100644 (file)
@@ -1267,6 +1267,10 @@ static int create_item(Item *i) {
                                 log_debug_errno(r, "Couldn't adjust quota for subvolume \"%s\" because of read-only file system: %m", i->path);
                                 return 0;
                         }
+                        if (r == -ENOPROTOOPT) {
+                                log_debug_errno(r, "Couldn't adjust quota for subvolume \"%s\" because quota support is disabled: %m", i->path);
+                                return 0;
+                        }
                         if (r < 0)
                                 return log_error_errno(r, "Failed to adjust quota for subvolume \"%s\": %m", i->path);
                         if (r > 0)