Re: new (> 4.16) kernel cephfs clients behaviour on < mimic

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



"Yan, Zheng" <zyan@xxxxxxxxxx> writes:

>> On Apr 17, 2018, at 21:46, Luis Henriques <lhenriques@xxxxxxxx> wrote:
>> 
>> Hi!
>> 
>> I see the following commit is queued for the kernel cephfs client:
>> 
>> commit e2311baa73a883eb8501c895cc817d3c96c3b896
>> Author: Yan, Zheng <zyan@xxxxxxxxxx>
>> Date:   Sun Apr 8 09:54:39 2018 +0800
>> 
>>    ceph: check if mds create snaprealm when setting quota
>> 
>>    If mds does not, return -EOPNOTSUPP.
>> 
>> [ This is related with http://tracker.ceph.com/issues/23491 ]
>> 
>> However, I'm not sure it is doing the right thing (although I confess
>> I'm not sure either what the right thing would be...)
>> 
>> This commit is doing 2 things:
>> 
>> 1) it returns an error if a user tries to set quotas and the MDS doesn't
>>   support it (using the new snaprealm method)
>> 
>> 2) it forbids reading the ceph.quota.* xattrs, even if they're set
>> 
>> Regarding 1), it's a change in behaviour from previous kernels -- older
>> kernels allow these attributes to be set (but not read!), even if they
>> don't really support quotas.  Also, the error that is returned
>> (-EOPNOTSUPP) is a bit misleading as the xattr is actually set in the
>> directory.
>
> any better error code?

The error code is fine, my complain was about returning an error for an
operation that actually succeeded: if a different (fuse) client does a
getfattr it will see that the attribute was set and it *will* have
quotas enabled (at least the old versions of the fuse client, I haven't
check if this has changed in new versions).

>> 
>> Regarding 2), it's a bit artificial to forbid the user to get these
>> attributes as we do actually have them available.
>
> If attributes have no effect, why can’t we treat them as nonexistence.

True, the attribute does not have an effect for *this* client.

>
>> 
>> I understand the rational behind this patch, but since quotas won't be
>> enforced anyway in this scenario, is there really any value added with
>> this patch?
>> 
>> I would suggest 2 alternatives:
>> 
>> 1. check cluster version and return the error in setxattr if version <
>>   Mimic (but maybe still allow reading the xattrs?)
>> 
>
> The problem is we run out of feature bits. No straight way to do the check
>

Ah!  I missed that :-/

>
>> 2. do nothing -- if we're using a cluster that does not support quotas
>>   anyway, maybe there's no point in having these different behaviours
>>   for old and new clients.
>> 
>
> This is confusing. we reclaim that  > 4.16 kernel supports quota. I don’t think it’s a good that
> user successfully set quota on > 4.16 kernel, but find that quota has no effect. 

Again, this is not completely true -- old fuse clients will see the side
effects of this operation.

> 4.16 kernel is the first one that support quota, does behavior change really matter?

Right, I don't really have any strong feelings against this patch.  As I
said, my preference would be one of the 2 alternatives above, but I
guess that at least we'll need to update doc/cephfs/quota.rst (see
suggestion bellow).

Cheers,
-- 
Luis

>From 5a034c3d43e4828e2caaa6156f067155ca2f6c39 Mon Sep 17 00:00:00 2001
From: Luis Henriques <lhenriques@xxxxxxxx>
Date: Wed, 18 Apr 2018 10:28:55 +0100
Subject: [PATCH] doc/cephfs: update kernel client quotas support info

Signed-off-by: Luis Henriques <lhenriques@xxxxxxxx>
---
 doc/cephfs/quota.rst | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/doc/cephfs/quota.rst b/doc/cephfs/quota.rst
index aad0e0bbf0c2..60e826b40139 100644
--- a/doc/cephfs/quota.rst
+++ b/doc/cephfs/quota.rst
@@ -23,9 +23,12 @@ Limitations
    of data.  Generally speaking writers will be stopped within 10s of
    seconds of crossing the configured limit.
 
-#. *Quotas are not yet implemented in the kernel client.* Quotas are
-   supported by the userspace client (libcephfs, ceph-fuse) but are
-   not yet implemented in the Linux kernel client.
+#. *Quotas are implemented in the kernel client > 4.16 only.* Quotas
+   are supported by the userspace client (libcephfs, ceph-fuse).
+   Linux kernel clients > 4.16 support CephFS quotas but only on
+   mimic+ clusters.  Kernel clients (even recent versions) will fail
+   to handle quotas on older clusters, even if they may be able to set
+   the quotas extended attributes.
 
 #. *Quotas must be configured carefully when used with path-based
    mount restrictions.* The client needs to have access to the
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux